1
+
cmake_minimum_required(VERSION 3.21)
2
+
project(subsdk)
3
+
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)
11
+
set(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)
17
+
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
25
+
26
+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/module/subsdk9.json.template ${CMAKE_CURRENT_BINARY_DIR}/subsdk9.json)
27
+
28
+
add_subdirectory(${PROJECT_SOURCE_DIR}/lib/penet)
29
+
30
+
## Project sources
31
+
set (INCLUDE_DIRS
32
+
${PROJECT_SOURCE_DIR}/src/
33
+
${PROJECT_SOURCE_DIR}/src/lib
34
+
${PROJECT_SOURCE_DIR}/include
35
+
${PROJECT_SOURCE_DIR}/lib/sead/include
36
+
${PROJECT_SOURCE_DIR}/lib/NintendoSDK/include
37
+
${PROJECT_SOURCE_DIR}/lib/NintendoSDK/include/nvn
38
+
${PROJECT_SOURCE_DIR}/lib/imgui
39
+
${PROJECT_SOURCE_DIR}/lib/enet-nx/include
40
+
${PROJECT_SOURCE_DIR}/lib/penet/Include
41
+
)
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)
50
+
51
+
## Include nx tools
52
+
include(${CMAKE_SOURCE_DIR}/cmake/SwitchTools.cmake)
53
+
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)
58
+
target_include_directories(penet PUBLIC ${INCLUDE_DIRS})
59
+
60
+
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")
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4