1- cmake_minimum_required (VERSION 3.21 )
2- project (subsdk)
1+ cmake_minimum_required (VERSION 3.16 )
32
4- ## Error if not using switch toolchain file
5- if (NOT SWITCH)
6- message (FATAL_ERROR "Not targeting switch, make sure to specify -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain.cmake" )
7- endif ()
8-
9- set (CMAKE_C_STANDARD 17)
10- set (CMAKE_CXX_STANDARD 20)
3+ set (CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR} /sys/cmake/toolchain.cmake" )
4+ project (Hakkun-Example VERSION 1.0 LANGUAGES ASM C CXX )
115set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
12- enable_language (ASM C CXX )
13-
14- ## Title Id
15- set (CONFIG_TITLE_ID 0x010028600ebda000)
16- add_compile_definitions (EXL_PROGRAM_ID=${CONFIG_TITLE_ID} EXL_LOAD_KIND=Module EXL_LOAD_KIND_ENUM=2 NNSDK IMGUI_USER_CONFIG= "imgui_backend/nvn_imgui_config.h" private =public protected=public DEBUGMENU )
176
18- set (NN_SDK_MAJOR 4) # idk
19- set (NN_SDK_MINOR 0) # idk
20- set (NN_SDK_PATCH 0) # idk
21- set (NN_SDK_TYPE "Release" )
22- set (NN_WARE_MAJOR 4) # idk
23- set (NN_WARE_MINOR 0) # idk
24- set (NN_WARE_PATCH 0) # idk
7+ include (config/config.cmake )
258
26- configure_file (${CMAKE_CURRENT_SOURCE_DIR} /module/subsdk9.json.template ${CMAKE_CURRENT_BINARY_DIR} /subsdk9.json )
9+ file (GLOB_RECURSE SOURCES_ASM ${PROJECT_SOURCE_DIR} /src/*.S )
10+ file (GLOB_RECURSE SOURCES_C ${PROJECT_SOURCE_DIR} /src/*.c )
11+ file (GLOB_RECURSE SOURCES_CXX ${PROJECT_SOURCE_DIR} /src/*.cpp )
12+ set (SOURCES ${SOURCES_ASM} ${SOURCES_C} ${SOURCES_CXX} )
2713
2814add_subdirectory (${PROJECT_SOURCE_DIR} /lib/penet )
2915
30- ## Project sources
31- set (INCLUDE_DIRS
16+ add_executable (${PROJECT_NAME} ${SOURCES} )
17+
18+ set (INCLUDE_DIRS
3219 ${PROJECT_SOURCE_DIR} /src/
3320 ${PROJECT_SOURCE_DIR} /src/lib
3421 ${PROJECT_SOURCE_DIR} /include
@@ -38,43 +25,18 @@ set (INCLUDE_DIRS
3825 ${PROJECT_SOURCE_DIR} /lib/imgui
3926 ${PROJECT_SOURCE_DIR} /lib/enet-nx/include
4027 ${PROJECT_SOURCE_DIR} /lib/penet/Include
28+ ${PROJECT_SOURCE_DIR} /sys/hakkun/include
4129)
42- include_directories (${INCLUDE_DIRS} )
43-
44- file (GLOB_RECURSE SOURCES_ASM ${PROJECT_SOURCE_DIR} /src/*.s )
45- file (GLOB_RECURSE SOURCES_C ${PROJECT_SOURCE_DIR} /src/*.c )
46- file (GLOB_RECURSE SOURCES_CXX ${PROJECT_SOURCE_DIR} /src/*.cpp )
47-
48- file (GLOB IMGUI_SOURCES ${PROJECT_SOURCE_DIR} /lib/imgui/*.cpp )
49- file (GLOB ENET_SOURCES ${PROJECT_SOURCE_DIR} /lib/enet-nx/source/*.c ${PROJECT_SOURCE_DIR} /lib/enet-nx/source/*.cpp )
5030
51- ## Include nx tools
52- include (${CMAKE_SOURCE_DIR} /cmake/SwitchTools.cmake )
31+ include_directories (
32+ ${INCLUDE_DIRS}
33+ )
5334
54- ## subsdk9
55- set (CMAKE_EXECUTABLE_SUFFIX ".nss" )
56- add_executable (subsdk9 ${SOURCES_ASM} ${SOURCES_C} ${SOURCES_CXX} ${IMGUI_SOURCES} ${ENET_SOURCES} )
57- target_link_libraries (subsdk9 PUBLIC penet )
5835target_include_directories (penet PUBLIC ${INCLUDE_DIRS} )
5936
37+ target_link_libraries (${PROJECT_NAME} PUBLIC penet )
6038
61- ## Prepare subsdk ld
62- set (SUBSDK_LD_PATH ${CMAKE_CURRENT_SOURCE_DIR} /module/subsdk9.ld)
63- set (GAME_VERSION 110)
64- set (SYMS_PATH "${CMAKE_CURRENT_SOURCE_DIR} /syms/${GAME_VERSION} " )
65-
66- execute_process (
67- COMMAND bash -c "find ${SYMS_PATH} -type f -name '*.sym' -exec cat {} + > ${CMAKE_BINARY_DIR} /syms.ld"
68- )
69-
70- execute_process (COMMAND uname OUTPUT_VARIABLE uname )
71- if (uname MATCHES "^MINGW" )
72- string (REGEX REPLACE "^/([a-zA-Z])/" "\\ 1:/" SUBSDK_LD_PATH "${SUBSDK_LD_PATH} " )
73- endif ()
74- configure_file (${CMAKE_CURRENT_SOURCE_DIR} /module/subsdk9.specs.template ${CMAKE_CURRENT_BINARY_DIR} /subsdk9.specs )
75-
76- ## Build nso & generate npdm
77- add_nso_target_subsdk (subsdk9 )
78- set_target_properties (subsdk9 PROPERTIES CONFIG_JSON "${CMAKE_CURRENT_BINARY_DIR} /subsdk9.json" )
79- __generate_npdm (subsdk9 )
80- set_target_properties (subsdk9 PROPERTIES LINK_FLAGS "-specs ${CMAKE_BINARY_DIR} /subsdk9.specs -g ${ARCH} -nostartfiles -nostdlib" )
39+ include (sys/cmake/module.cmake )
40+ include (sys/cmake/deploy.cmake )
41+ include (sys/cmake/sail.cmake )
42+ usesail (${PROJECT_NAME} )
0 commit comments