# Target definitions target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC DUSK_PLATFORM_ENDIAN_BIG DUSK_DOLPHIN DUSK_DISPLAY_WIDTH=640 DUSK_DISPLAY_HEIGHT=480 ) # 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}" )