Files
9462f8fb21 soh build fixes (#14)
* changes needed to run `ExtractAssets`

* soh build stuff

* Make some things public

* dcvz changes

* More fixes

* fix pulseaudio

* windows static lib stuff

* fix soh build on windows

* Don’t require Threads for Wii U

* Wii U specific changes to upstream StormLib

* Fix up storm linking

* Add Wii U additions to spdlog

* More Wii U updates to libultraship

* Wii U specific import fixes

* LUS Wii U fixes

* STBI_NO_THREAD_LOCALS for Wii U

* Disable threads for Wii U

* Fixes OTR loading (tested in SoH)

Previously it was failing with a file not found error on SFileOpenArchive,
for some reason removing `UNICODE` and `_UNICODE` from the compile definitions
of libultraship fixes it. It also fixes the issue of OTRExporter outputting
an OTR with only the first character of the filename present. (Said OTR was
still valid though, despite the odd name. Fixed by this regardless).

* Re-adds missing Debug/Release cmake config and fixes Typos

This re-enables debugging libultraship files on Windows. Also fixes some
typos that previously weren't being compiled due to the missing
Debug/Release configuration.

* Consolidates compiler and linker flags in cmake.

Several compiler options were duplicated across different systems
unnecessarily. For example Windows "x64" and "Win32" were very nearly
identical already, and the couple of differences didn't make much sense.
We were passing /std:c++latest, but only to x64 Release. I just removed
that one altogether since we already set `PROPERTY CXX_STANDARD 20`
at the top of the file. We were also passing `/W3` regardless of configuration
on "x64", but on "Win32" we were passing `/W2` to Debug and `/W3` to Release.
If there's a reason for that let me know and it can be re-introduced.

* Embed STB into LUS

* Fixes Switch builds. (#4)

* Restricts the stormlib compile definition change to switch (#5)

* make tidy happy?

* actually make tidy happy

* checkout v3?

* remove commented out lines from cmakelists

* fontData not font_data

* suppress error

* add a space

Co-authored-by: briaguya <briaguya@alice>
Co-authored-by: David Chavez <david@dcvz.io>
Co-authored-by: Christopher Leggett <chris@leggett.dev>
Co-authored-by: David Chavez <davi@dcvz.io>
Co-authored-by: briaguya <briaguya>
2022-11-13 17:19:22 -05:00

65 lines
3.3 KiB
CMake

################################################################################
# Command for variable_watch. This command issues error message, if a variable
# is changed. If variable PROPERTY_READER_GUARD_DISABLED is TRUE nothing happens
# variable_watch(<variable> property_reader_guard)
################################################################################
function(property_reader_guard VARIABLE ACCESS VALUE CURRENT_LIST_FILE STACK)
if("${PROPERTY_READER_GUARD_DISABLED}")
return()
endif()
if("${ACCESS}" STREQUAL "MODIFIED_ACCESS")
message(FATAL_ERROR
" Variable ${VARIABLE} is not supposed to be changed.\n"
" It is used only for reading target property ${VARIABLE}.\n"
" Use\n"
" set_target_properties(\"<target>\" PROPERTIES \"${VARIABLE}\" \"<value>\")\n"
" or\n"
" set_target_properties(\"<target>\" PROPERTIES \"${VARIABLE}_<CONFIG>\" \"<value>\")\n"
" instead.\n")
endif()
endfunction()
################################################################################
# Create variable <name> with generator expression that expands to value of
# target property <name>_<CONFIG>. If property is empty or not set then property
# <name> is used instead. Variable <name> has watcher property_reader_guard that
# doesn't allow to edit it.
# create_property_reader(<name>)
# Input:
# name - Name of watched property and output variable
################################################################################
function(create_property_reader NAME)
set(PROPERTY_READER_GUARD_DISABLED TRUE)
set(CONFIG_VALUE "$<TARGET_GENEX_EVAL:${PROPS_TARGET},$<TARGET_PROPERTY:${PROPS_TARGET},${NAME}_$<UPPER_CASE:$<CONFIG>>>>")
set(IS_CONFIG_VALUE_EMPTY "$<STREQUAL:${CONFIG_VALUE},>")
set(GENERAL_VALUE "$<TARGET_GENEX_EVAL:${PROPS_TARGET},$<TARGET_PROPERTY:${PROPS_TARGET},${NAME}>>")
set("${NAME}" "$<IF:${IS_CONFIG_VALUE_EMPTY},${GENERAL_VALUE},${CONFIG_VALUE}>" PARENT_SCOPE)
variable_watch("${NAME}" property_reader_guard)
endfunction()
################################################################################
# Set property $<name>_${PROPS_CONFIG_U} of ${PROPS_TARGET} to <value>
# set_config_specific_property(<name> <value>)
# Input:
# name - Prefix of property name
# value - New value
################################################################################
function(set_config_specific_property NAME VALUE)
set_target_properties("${PROPS_TARGET}" PROPERTIES "${NAME}_${PROPS_CONFIG_U}" "${VALUE}")
endfunction()
################################################################################
create_property_reader("TARGET_NAME")
create_property_reader("OUTPUT_DIRECTORY")
set_config_specific_property("TARGET_NAME" "${PROPS_TARGET}")
set_config_specific_property("OUTPUT_NAME" "${TARGET_NAME}")
set_config_specific_property("ARCHIVE_OUTPUT_NAME" "${TARGET_NAME}")
set_config_specific_property("LIBRARY_OUTPUT_NAME" "${TARGET_NAME}")
set_config_specific_property("RUNTIME_OUTPUT_NAME" "${TARGET_NAME}")
set_config_specific_property("ARCHIVE_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
set_config_specific_property("LIBRARY_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
set_config_specific_property("RUNTIME_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")