Skip to content

Commit 3d7c8be

Browse files
committed
Migrate to hakkun
1 parent 6aacb54 commit 3d7c8be

File tree

469 files changed

+40402
-50465
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

469 files changed

+40402
-50465
lines changed

.build_counter

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1838
1+
1839

.clang-format

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,9 @@
1-
BasedOnStyle: WebKit
1+
BasedOnStyle: WebKit
2+
QualifierAlignment: Left
3+
NamespaceIndentation: All
4+
BreakBeforeBraces: Custom
5+
BraceWrapping:
6+
AfterEnum: true
7+
AfterFunction: false
8+
AfterClass: false
9+
SplitEmptyFunction: false

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,6 @@ build.sh
4141
.vscode/
4242
.clangd/
4343
.idea/
44-
cmake-build-debug/
44+
cmake-build-debug/
45+
46+
lib/std

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,6 @@
2424
[submodule "server/Library/json"]
2525
path = server/Library/json
2626
url = https://github.com/nlohmann/json
27+
[submodule "sys"]
28+
path = sys
29+
url = https://github.com/fruityloops1/LibHakkun

CMakeLists.txt

Lines changed: 22 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,23 @@
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(BowsersFuryMultiplayer VERSION 1.0 LANGUAGES ASM C CXX)
115
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)
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+
file(GLOB IMGUI_SOURCES ${PROJECT_SOURCE_DIR}/lib/imgui/*.cpp)
13+
file(GLOB ENET_SOURCES ${PROJECT_SOURCE_DIR}/lib/enet-nx/source/*.c ${PROJECT_SOURCE_DIR}/lib/enet-nx/source/*.cpp)
14+
set(SOURCES ${SOURCES_ASM} ${SOURCES_C} ${SOURCES_CXX} ${IMGUI_SOURCES} ${ENET_SOURCES})
2715

2816
add_subdirectory(${PROJECT_SOURCE_DIR}/lib/penet)
2917

30-
## Project sources
31-
set (INCLUDE_DIRS
18+
add_executable(${PROJECT_NAME} ${SOURCES})
19+
20+
set(INCLUDE_DIRS
3221
${PROJECT_SOURCE_DIR}/src/
3322
${PROJECT_SOURCE_DIR}/src/lib
3423
${PROJECT_SOURCE_DIR}/include
@@ -38,43 +27,18 @@ set (INCLUDE_DIRS
3827
${PROJECT_SOURCE_DIR}/lib/imgui
3928
${PROJECT_SOURCE_DIR}/lib/enet-nx/include
4029
${PROJECT_SOURCE_DIR}/lib/penet/Include
30+
${PROJECT_SOURCE_DIR}/sys/hakkun/include
4131
)
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)
4732

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)
33+
include_directories(
34+
${INCLUDE_DIRS}
35+
)
5336

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)
5837
target_include_directories(penet PUBLIC ${INCLUDE_DIRS})
5938

39+
target_link_libraries(${PROJECT_NAME} PUBLIC penet)
6040

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")
41+
include(sys/cmake/module.cmake)
42+
include(sys/cmake/deploy.cmake)
43+
include(sys/cmake/sail.cmake)
44+
usesail(${PROJECT_NAME})

Makefile

Lines changed: 0 additions & 17 deletions
This file was deleted.

config/ModuleList.sym

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
rtld = 0
2+
game = 1
3+
sdk = 3

config/VersionList.sym

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@game
2+
110 = 891687f016a18f1773d4a88ebf8a973c

config/config.cmake

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
set(LINKFLAGS -nodefaultlibs)
2+
set(LLDFLAGS --no-demangle --gc-sections)
3+
4+
set(OPTIMIZE_OPTIONS_DEBUG -O2 -gdwarf-4)
5+
set(OPTIMIZE_OPTIONS_RELEASE -O3 -ffast-math -flto)
6+
set(WARN_OPTIONS -Werror=return-type -Wno-invalid-offsetof)
7+
8+
set(INCLUDES include include/agl)
9+
set(DEFINITIONS DEBUGMENU private=public protected=public)
10+
11+
set(ASM_OPTIONS "")
12+
set(C_OPTIONS -ffunction-sections -fdata-sections)
13+
set(CXX_OPTIONS "")
14+
set(CMAKE_CXX_STANDARD 23)
15+
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
16+
17+
set(IS_32_BIT FALSE)
18+
set(TARGET_IS_STATIC FALSE)
19+
set(MODULE_NAME BowsersFuryMultiplayer)
20+
set(TITLE_ID 0x010028600EBDA000)
21+
set(MODULE_BINARY subsdk4)
22+
set(SDK_PAST_1900 FALSE)
23+
set(USE_SAIL TRUE)
24+
25+
set(TRAMPOLINE_POOL_SIZE 0x40)
26+
set(BAKE_SYMBOLS FALSE)
27+
28+
set(HAKKUN_ADDONS HeapSourceDynamic LogManager)
29+
set(HAKKUN_BSS_HEAP_SIZE 0x100000)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name":"Application",
3-
"title_id":"@CONFIG_TITLE_ID@",
3+
"title_id":"@TITLE_ID@",
44
"title_id_range_min":"0x0100000000010000",
55
"title_id_range_max":"0x01ffffffffffffff",
66
"main_thread_stack_size":"0x00100000",

0 commit comments

Comments
 (0)