Skip to content

Commit

Permalink
use devkitPro cmakery (#708)
Browse files Browse the repository at this point in the history
* use devkitPro cmakery

* fix switch cmake configuration

* use latest devkitA64 docker image

* use latest devkitA64 docker

* use pkg-config to determine Switch libraries

* ICON is done with nx_create_nro

* manual include directories not required for switch

* switch only needs sdl2 & sdl2_mixer

* Use variables set by dkP cmakery

* only require PkgConfig for Switch

* use target linking instead of manual lib/include/cflags

* stick with unlabelled target_link_libraries

* correct overzealous removal of PRIVATE
  • Loading branch information
WinterMute authored Nov 11, 2023
1 parent 9748444 commit 86263a3
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 116 deletions.
2 changes: 1 addition & 1 deletion .ci_scripts/run_cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ case "$BUILD_TARGET" in
docker exec vitasdk /bin/bash -c "mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DTARGET_PLATFORM=vita .."
;;
"switch")
docker exec switchdev /bin/bash -c "mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DTARGET_PLATFORM=switch .."
docker exec switchdev /bin/bash -c "/opt/devkitpro/portlibs/switch/bin/aarch64-none-elf-cmake -DCMAKE_BUILD_TYPE=Release -DTARGET_PLATFORM=switch -B build -S ."
;;
"mac")
mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DSYSTEM_LIBS=OFF -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" ..
Expand Down
4 changes: 3 additions & 1 deletion .ci_scripts/setup_environment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ case "$BUILD_TARGET" in
docker run -d --name vitasdk --workdir /build/git -v "${PWD}:/build/git" gnuton/vitasdk-docker:20210217 tail -f /dev/null
;;
"switch")
docker run -d --name switchdev --workdir /build/git -v "${PWD}:/build/git" devkitpro/devkita64:20200730 tail -f /dev/null
# You can obtain a recent devkitA64 image from https://hub.docker.com/repository/docker/devkitpro/devkita64/general
# As for Vita Make sure that it compiles correctly and runs on a Switch prior to pushing the change
docker run -d --name switchdev --workdir /build/git -v "${PWD}:/build/git" devkitpro/devkita64:20231108 tail -f /dev/null
;;
"android")
# Decrypt the key files
Expand Down
68 changes: 18 additions & 50 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,7 @@ if(${TARGET_PLATFORM} STREQUAL "vita" AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
endif()

if(${TARGET_PLATFORM} STREQUAL "switch" AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
if(DEFINED ENV{DEVKITPRO})
set(DEVKITPRO $ENV{DEVKITPRO})
set(CMAKE_TOOLCHAIN_FILE "./cmake/switch.cmake" CACHE PATH "toolchain file")
else()
message(FATAL_ERROR "Please define DEVKITPRO to point to your SDK path!")
endif()
message(FATAL_ERROR "Please use /opt/devkitpro/portlibs/switch/bin/aarch64-none-elf-cmake to configure")
endif()

if(${TARGET_PLATFORM} STREQUAL "emscripten" AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
Expand All @@ -39,6 +34,10 @@ set(SHORT_NAME julius)
set(USER_FRIENDLY_NAME Julius)
project(${SHORT_NAME} C)

if (NINTENDO_SWITCH)
find_package(PkgConfig REQUIRED)
endif()

if (${TARGET_PLATFORM} STREQUAL "vita")
include("${VITASDK}/share/vita.cmake" REQUIRED)
set(VITA_TITLEID "JULIUS001")
Expand Down Expand Up @@ -134,7 +133,7 @@ if(${TARGET_PLATFORM} STREQUAL "vita")
set(VITA_VERSION "${VITA_VERSION_MAJOR}.${VITA_VERSION_MINOR}")
endif()

if (${TARGET_PLATFORM} STREQUAL "switch")
if (NINTENDO_SWITCH)
string(SUBSTRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${VERSION_REVISION}" 0 15 SWITCH_VERSION)
endif()

Expand Down Expand Up @@ -197,7 +196,7 @@ if (${TARGET_PLATFORM} STREQUAL "vita")
${PROJECT_SOURCE_DIR}/src/platform/vita/vita.c
${PROJECT_SOURCE_DIR}/src/platform/vita/vita_keyboard.c
)
elseif (${TARGET_PLATFORM} STREQUAL "switch")
elseif (NINTENDO_SWITCH)
set(PLATFORM_FILES
${PLATFORM_FILES}
${PROJECT_SOURCE_DIR}/src/platform/switch/switch.c
Expand Down Expand Up @@ -755,13 +754,6 @@ if(${TARGET_PLATFORM} STREQUAL "vita")
$ENV{VITASDK}/arm-vita-eabi/include
${CMAKE_CURRENT_SOURCE_DIR}
)
elseif (${TARGET_PLATFORM} STREQUAL "switch")
include_directories(SYSTEM
${DEVKITPRO}/portlibs/switch/include/SDL2
${DEVKITPRO}/libnx/include
${DEVKITPRO}/portlibs/switch/include
${CMAKE_CURRENT_SOURCE_DIR}
)
endif()

include_directories(SYSTEM ext)
Expand Down Expand Up @@ -810,45 +802,21 @@ if (${TARGET_PLATFORM} STREQUAL "vita")
FILE res/vita/startup.png sce_sys/livearea/contents/startup.png
FILE res/vita/template.xml sce_sys/livearea/contents/template.xml
)
elseif(${TARGET_PLATFORM} STREQUAL "switch")
target_link_libraries (${SHORT_NAME}
SDL2_mixer
SDL2
EGL
GLESv2
glapi
drm_nouveau
vorbisidec
modplug
mpg123
FLAC
opusfile
opus
ogg
m
z
nx
stdc++
)
elseif(NINTENDO_SWITCH)

set(FLAGS
-fPIE
-L${DEVKITPRO}/portlibs/switch/lib
-L${DEVKITPRO}/libnx/lib
)
pkg_check_modules(SDL2 REQUIRED IMPORTED_TARGET sdl2 SDL2_mixer)
target_link_libraries(${SHORT_NAME} PkgConfig::SDL2)

foreach(flag ${FLAGS})
set(FLAGS_GENERAL "${FLAGS_GENERAL} ${flag}")
endforeach(flag ${FLAGS})
nx_generate_nacp (${PROJECT_NAME}.nacp
NAME "Julius"
AUTHOR "Bianca van Schaik"
)

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAGS_GENERAL}")
nx_create_nro (${PROJECT_NAME}
NACP ${PROJECT_NAME}.nacp
ICON ${CMAKE_SOURCE_DIR}/res/switch/icon0.jpg
)

target_compile_options(${SHORT_NAME} PRIVATE ${FLAGS})
add_custom_command(TARGET ${SHORT_NAME}
POST_BUILD
COMMAND ${DEVKITPRO}/tools/bin/nacptool --create "${SHORT_NAME}" "rsn8887" ${SWITCH_VERSION} ${SHORT_NAME}.nacp
COMMAND ${DEVKITPRO}/tools/bin/elf2nro ${SHORT_NAME} ${SHORT_NAME}.nro --icon=${CMAKE_SOURCE_DIR}/res/switch/icon0.jpg --nacp=${SHORT_NAME}.nacp
)
else()
if (UNIX AND NOT APPLE AND (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang"))
target_link_libraries(${SHORT_NAME} m)
Expand Down
64 changes: 0 additions & 64 deletions cmake/switch.cmake

This file was deleted.

0 comments on commit 86263a3

Please sign in to comment.