summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Graber <adrian@adriangraber.com>2021-07-12 02:27:45 +0200
committerAdrian Graber <adrian@adriangraber.com>2021-07-13 00:50:49 +0200
commit5cab196718d94c1ddfe1ddda0490a639cac7fde0 (patch)
treeb543d8e0291ef591d85519e786d6f63255fca218
parent3bde84f6c8480217b2fcd7ec29c28f62672a3279 (diff)
Finish cmake stuff for Switch build
* SDL2 for OpenAL not needed anymore * Add re3_platform_target function and use that instead of manually building NRO
-rw-r--r--CMakeLists.txt15
-rw-r--r--cmake/nx/NXFunctions.cmake31
-rw-r--r--src/CMakeLists.txt25
3 files changed, 43 insertions, 28 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8bfe3656..adf3c29f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,18 +4,25 @@ set(EXECUTABLE re3)
set(PROJECT RE3)
project(${EXECUTABLE} C CXX)
+set(${PROJECT}_AUTHOR "${PROJECT} Team")
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC GIT_SHA1 "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR")
message(STATUS "Building ${CMAKE_PROJECT_NAME} GIT SHA1: ${GIT_SHA1}")
-if(WIN32)
- set(${PROJECT}_AUDIOS "OAL" "MSS")
-elseif(NINTENDO_SWITCH)
+if(NINTENDO_SWITCH)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/nx")
include(NXFunctions)
- set(${PROJECT}_AUDIOS "OAL")
+endif()
+
+if(NOT COMMAND re3_platform_target)
+ function(re3_platform_target)
+ endfunction()
+endif()
+
+if(WIN32)
+ set(${PROJECT}_AUDIOS "OAL" "MSS")
else()
set(${PROJECT}_AUDIOS "OAL")
endif()
diff --git a/cmake/nx/NXFunctions.cmake b/cmake/nx/NXFunctions.cmake
index 8fa23fae..cf3f974b 100644
--- a/cmake/nx/NXFunctions.cmake
+++ b/cmake/nx/NXFunctions.cmake
@@ -5,3 +5,34 @@ endif()
if(NOT COMMAND nx_create_nro)
message(FATAL_ERROR "The `nx_create_nro` cmake command is not available. Please use an appropriate Nintendo Switch toolchain.")
endif()
+
+set(CMAKE_EXECUTABLE_SUFFIX ".elf")
+
+function(re3_platform_target TARGET)
+ cmake_parse_arguments(RPT "INSTALL" "" "" ${ARGN})
+
+ get_target_property(TARGET_TYPE "${TARGET}" TYPE)
+ if(TARGET_TYPE STREQUAL "EXECUTABLE")
+ nx_generate_nacp(${TARGET}.nacp
+ NAME "${TARGET}"
+ AUTHOR "${${PROJECT}_AUTHOR}"
+ VERSION "1.0.0-${GIT_SHA1}"
+ )
+
+ nx_create_nro(${TARGET}
+ NACP ${TARGET}.nacp
+ ICON "${PROJECT_SOURCE_DIR}/res/images/logo_256.jpg"
+ )
+
+ if(${PROJECT}_INSTALL AND RPT_INSTALL)
+ get_target_property(TARGET_OUTPUT_NAME ${TARGET} OUTPUT_NAME)
+ if(NOT TARGET_OUTPUT_NAME)
+ set(TARGET_OUTPUT_NAME "${TARGET}")
+ endif()
+
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_OUTPUT_NAME}.nro"
+ DESTINATION "."
+ )
+ endif()
+ endif()
+endfunction()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 425f2315..8dac5a3a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -156,27 +156,4 @@ if(${PROJECT}_INSTALL)
endif()
endif()
-# Build Nintendo Switch binaries
-if(NINTENDO_SWITCH)
- # Needed for OpenAL-Soft
- target_link_libraries(${EXECUTABLE} PRIVATE
- SDL2
- )
-
- nx_generate_nacp (${EXECUTABLE}.nacp
- NAME "${EXECUTABLE}"
- AUTHOR "${EXECUTABLE} Team"
- VERSION "1.0.0-${GIT_SHA1}"
- )
-
- nx_create_nro(${EXECUTABLE}
- NACP ${EXECUTABLE}.nacp
- ICON "${PROJECT_SOURCE_DIR}/res/images/logo_256.jpg"
- )
-
- if(${PROJECT}_INSTALL)
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE}.nro"
- DESTINATION "."
- )
- endif()
-endif()
+re3_platform_target(${EXECUTABLE} INSTALL)