# Copyright (c) 2026 Dominic Masters # # This software is released under the MIT License. # https://opensource.org/licenses/MIT if(NOT DEFINED ENV{VITASDK}) message(FATAL_ERROR "VITASDK environment variable is not set.") endif() include("$ENV{VITASDK}/share/vita.cmake" REQUIRED) set(VITA_APP_NAME "Dusk") set(VITA_TITLEID "DUSK00001") set(VITA_VERSION "01.00") find_package(SDL2 REQUIRED) # 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} PUBLIC ${SDL2_LIBRARIES} liblua cglm SDL2 SDL2main zip bz2 z zstd crypto lzma m pthread stdc++ vitaGL mathneon vitashark kubridge_stub SceAppMgr_stub SceAudio_stub SceCtrl_stub SceCommonDialog_stub SceDisplay_stub SceKernelDmacMgr_stub SceGxm_stub SceShaccCg_stub SceSysmodule_stub ScePower_stub SceTouch_stub SceVshBridge_stub SceIofilemgr_stub SceShaccCgExt libtaihen_stub.a # SceKernel_stub SceAppUtil_stub SceHid_stub SceRtc_stub ) target_include_directories(${DUSK_LIBRARY_TARGET_NAME} PRIVATE ${SDL2_INCLUDE_DIRS} ) target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC DUSK_SDL2 DUSK_OPENGL DUSK_VITA DUSK_INPUT_GAMEPAD DUSK_PLATFORM_ENDIAN_LITTLE DUSK_OPENGL_LEGACY DUSK_DISPLAY_WIDTH=960 DUSK_DISPLAY_HEIGHT=544 ) # Post-build: create SELF from the ELF binary (UNSAFE = homebrew, no signing) vita_create_self(${DUSK_BINARY_TARGET_NAME}.self ${DUSK_BINARY_TARGET_NAME} UNSAFE) # Post-build: package SELF + assets into a .vpk installable on the Vita vita_create_vpk(${DUSK_BINARY_TARGET_NAME}.vpk ${VITA_TITLEID} ${DUSK_BINARY_TARGET_NAME}.self VERSION ${VITA_VERSION} NAME ${VITA_APP_NAME} FILE ${DUSK_ASSETS_ZIP} dusk.dsk )