diff options
author | Adrian Graber <adrian@adriangraber.com> | 2021-07-12 02:27:45 +0200 |
---|---|---|
committer | Adrian Graber <adrian@adriangraber.com> | 2021-07-13 00:50:49 +0200 |
commit | 5cab196718d94c1ddfe1ddda0490a639cac7fde0 (patch) | |
tree | b543d8e0291ef591d85519e786d6f63255fca218 | |
parent | 3bde84f6c8480217b2fcd7ec29c28f62672a3279 (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.txt | 15 | ||||
-rw-r--r-- | cmake/nx/NXFunctions.cmake | 31 | ||||
-rw-r--r-- | src/CMakeLists.txt | 25 |
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) |