refactoring
Co-authored-by: n.fedorov <mail@nfedorov.dev> Co-committed-by: n.fedorov <mail@nfedorov.dev>
This commit was merged in pull request #1.
This commit is contained in:
+121
@@ -0,0 +1,121 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
project(NXST
|
||||
LANGUAGES CXX
|
||||
VERSION 0.1.0
|
||||
)
|
||||
|
||||
# ── C++ standard and flags ────────────────────────────────────────────────────
|
||||
# Arch/linker/libnx flags are already injected by the Switch.cmake toolchain.
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS ON) # gnu++17
|
||||
|
||||
add_compile_options(
|
||||
-fno-rtti
|
||||
-fno-exceptions
|
||||
-O2
|
||||
-g
|
||||
-D_GNU_SOURCE=1
|
||||
)
|
||||
|
||||
# Export compilation database (enables clangd / clang-tidy on the host)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
# ── Sources ───────────────────────────────────────────────────────────────────
|
||||
file(GLOB_RECURSE NXST_SOURCES
|
||||
src/app/*.cpp
|
||||
src/domain/*.cpp
|
||||
src/infra/net/*.cpp
|
||||
src/infra/fs/*.cpp
|
||||
src/infra/sys/*.cpp
|
||||
src/service/*.cpp
|
||||
src/ui/*.cpp
|
||||
)
|
||||
|
||||
add_executable(NXST ${NXST_SOURCES})
|
||||
|
||||
# ── Include paths ─────────────────────────────────────────────────────────────
|
||||
target_include_directories(NXST PRIVATE include)
|
||||
|
||||
# ── pkg-config (uses aarch64-none-elf-pkg-config set by Switch.cmake) ─────────
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
set(NXST_PKG_MODULES
|
||||
SDL2_ttf SDL2_gfx SDL2_image SDL2_mixer
|
||||
freetype2 harfbuzz minizip libpng libjpeg libwebp
|
||||
glesv2 egl glapi zlib
|
||||
)
|
||||
pkg_check_modules(PORTLIBS REQUIRED IMPORTED_TARGET ${NXST_PKG_MODULES})
|
||||
|
||||
target_include_directories(NXST PRIVATE ${PORTLIBS_INCLUDE_DIRS})
|
||||
|
||||
# ── Plutonium ─────────────────────────────────────────────────────────────────
|
||||
include(ExternalProject)
|
||||
|
||||
set(PLUTONIUM_SOURCE_DIR ${CMAKE_BINARY_DIR}/plutonium)
|
||||
set(LIBPU_A ${PLUTONIUM_SOURCE_DIR}/Plutonium/lib/libpu.a)
|
||||
|
||||
ExternalProject_Add(plutonium_ep
|
||||
GIT_REPOSITORY https://github.com/XorTroll/Plutonium.git
|
||||
GIT_TAG b56564b70d038c59eef875f2c3cf436859c827f2
|
||||
GIT_PROGRESS ON
|
||||
SOURCE_DIR ${PLUTONIUM_SOURCE_DIR}
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND make -j -C ${PLUTONIUM_SOURCE_DIR}/Plutonium
|
||||
INSTALL_COMMAND ""
|
||||
BUILD_IN_SOURCE 1
|
||||
BUILD_BYPRODUCTS ${LIBPU_A}
|
||||
)
|
||||
|
||||
add_library(plutonium STATIC IMPORTED GLOBAL)
|
||||
add_dependencies(plutonium plutonium_ep)
|
||||
set_target_properties(plutonium PROPERTIES
|
||||
IMPORTED_LOCATION ${LIBPU_A}
|
||||
)
|
||||
target_include_directories(NXST PRIVATE ${PLUTONIUM_SOURCE_DIR}/Plutonium/include)
|
||||
|
||||
# ── Link libraries ────────────────────────────────────────────────────────────
|
||||
# Order matters for static linking: put most dependent libs first.
|
||||
# drm_nouveau, harfbuzz, freetype, z appended explicitly after pkg-config output
|
||||
# to fix the freetype→harfbuzz static link order (see build notes from libnx update).
|
||||
target_link_libraries(NXST PRIVATE
|
||||
plutonium
|
||||
PkgConfig::PORTLIBS
|
||||
drm_nouveau
|
||||
harfbuzz
|
||||
freetype
|
||||
z
|
||||
)
|
||||
|
||||
# ── NACP + NRO ────────────────────────────────────────────────────────────────
|
||||
set(NXST_NACP ${CMAKE_CURRENT_BINARY_DIR}/NXST.nacp)
|
||||
|
||||
nx_generate_nacp(
|
||||
OUTPUT ${NXST_NACP}
|
||||
NAME "NXST"
|
||||
AUTHOR "DragonSpirit"
|
||||
VERSION "04.26.2026"
|
||||
)
|
||||
|
||||
nx_create_nro(NXST
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/NXST.nro
|
||||
ICON ${CMAKE_SOURCE_DIR}/icon.png
|
||||
NACP ${NXST_NACP}
|
||||
)
|
||||
|
||||
# ── Convenience targets ────────────────────────────────────────────────────────
|
||||
find_program(NXLINK_EXE nxlink HINTS ${DEVKITPRO}/tools/bin)
|
||||
|
||||
if(NXLINK_EXE)
|
||||
add_custom_target(send
|
||||
COMMAND ${NXLINK_EXE} ${CMAKE_CURRENT_BINARY_DIR}/NXST.nro
|
||||
DEPENDS NXST_nro
|
||||
COMMENT "Sending NXST.nro via nxlink"
|
||||
)
|
||||
|
||||
add_custom_target(debug
|
||||
COMMAND ${NXLINK_EXE} -s ${CMAKE_CURRENT_BINARY_DIR}/NXST.nro
|
||||
DEPENDS NXST_nro
|
||||
COMMENT "Sending NXST.nro with stdio bridge"
|
||||
)
|
||||
endif()
|
||||
Reference in New Issue
Block a user