111 lines
2.6 KiB
CMake
111 lines
2.6 KiB
CMake
# 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
|
|
)
|