# mbedtls/tf-psa-crypto user config overrides for Wii/Dolphin. # Both variables point to the same file; it is included after each library's # default config header, so #undef/#define are applied on top of the defaults. # Must be set before find_package(mbedtls) so FetchContent picks them up. set(TF_PSA_CRYPTO_USER_CONFIG_FILE "${CMAKE_SOURCE_DIR}/cmake/mbedtls_dolphin_config.h" CACHE FILEPATH "tf-psa-crypto user config for Wii/Dolphin" FORCE) set(MBEDTLS_USER_CONFIG_FILE "${CMAKE_SOURCE_DIR}/cmake/mbedtls_dolphin_config.h" CACHE FILEPATH "mbedtls user config for Wii/Dolphin" FORCE) # Target definitions target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC DUSK_DOLPHIN DUSK_INPUT_GAMEPAD DUSK_DISPLAY_WIDTH=640 DUSK_DISPLAY_HEIGHT=480 MBEDTLS_PSA_DRIVER_GET_ENTROPY MBEDTLS_PLATFORM_MS_TIME_ALT THREAD_PTHREAD=1 ) # Custom compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fno-exceptions") # Need PkgConfig find_package(PkgConfig REQUIRED) pkg_check_modules(zip IMPORTED_TARGET libzip) # Disable all warnings target_compile_options(${DUSK_LIBRARY_TARGET_NAME} PRIVATE -w) # Custom flags for cglm set(CGLM_SHARED OFF CACHE BOOL "Build cglm shared" FORCE) set(CGLM_STATIC ON CACHE BOOL "Build cglm static" FORCE) find_package(cglm REQUIRED) # Compile lua include(FetchContent) FetchContent_Declare( liblua URL https://www.lua.org/ftp/lua-5.5.0.tar.gz ) FetchContent_MakeAvailable(liblua) set(LUA_SRC_DIR "${liblua_SOURCE_DIR}/src") set(LUA_C_FILES lapi.c lauxlib.c lbaselib.c lcode.c lcorolib.c lctype.c ldblib.c ldebug.c ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c lstrlib.c ltable.c ltablib.c ltm.c lundump.c lutf8lib.c lvm.c lzio.c ) list(TRANSFORM LUA_C_FILES PREPEND "${LUA_SRC_DIR}/") add_library(liblua STATIC ${LUA_C_FILES}) target_include_directories(liblua PUBLIC "${LUA_SRC_DIR}") target_compile_definitions(liblua PRIVATE LUA_USE_C89) add_library(lua::lua ALIAS liblua) set(Lua_FOUND TRUE CACHE BOOL "Lua found" FORCE) # Link libraries target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PRIVATE cglm liblua m fat PkgConfig::zip ) # Postbuild set(DUSK_BINARY_TARGET_NAME_DOL "${DUSK_BUILD_DIR}/Dusk.dol") add_custom_command(TARGET ${DUSK_BINARY_TARGET_NAME} POST_BUILD COMMAND elf2dol "$" "${DUSK_BINARY_TARGET_NAME_DOL}" COMMENT "Generating ${DUSK_BINARY_TARGET_NAME_DOL} from ${DUSK_BINARY_TARGET_NAME}" )