diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 84 |
1 files changed, 29 insertions, 55 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 431e95b..87980a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,13 +6,12 @@ # workaround is to use ExternalProject_Add() to launch multiple independent # CMake instances, creating what's known as a "superbuild". -cmake_minimum_required(VERSION 3.21) +cmake_minimum_required(VERSION 3.20) include(ExternalProject) project( PSn00bSDK LANGUAGES NONE - # IMPORTANT TODO: set a version number VERSION 0.1.0 DESCRIPTION "Open source PlayStation 1 SDK" HOMEPAGE_URL "http://lameguy64.net/?page=psn00bsdk" @@ -36,14 +35,6 @@ set( ) set( - SKIP_TINYXML2 OFF - CACHE BOOL "Skip downloading and building tinyxml2 (if already installed)" -) -set( - SKIP_MKPSXISO OFF - CACHE BOOL "Skip downloading and building mkpsxiso (if already installed)" -) -set( SKIP_EXAMPLES OFF CACHE BOOL "Skip building SDK examples (not required for installation)" ) @@ -61,12 +52,6 @@ set( -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} ) set( - EXT_LIBRARY_ARGS - -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE} - -DCMAKE_INSTALL_PREFIX:PATH=${PROJECT_BINARY_DIR}/install_temp - -DCMAKE_MSVC_RUNTIME_LIBRARY:STRING=MultiThreaded$<$<CONFIG:Debug>:Debug> -) -set( SUBPROJECT_ARGS -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_INSTALL_PREFIX:PATH=${PROJECT_BINARY_DIR}/install_tree @@ -77,50 +62,30 @@ set( -DCMAKE_INSTALL_PREFIX:PATH=${PROJECT_BINARY_DIR}/examples ) -## External dependencies - -if(NOT SKIP_TINYXML2) - list(APPEND SUBPROJECT_ARGS -Dtinyxml2_ROOT:PATH=${PROJECT_BINARY_DIR}/install_temp) - - ExternalProject_Add( - tinyxml2 - GIT_REPOSITORY "https://github.com/leethomason/tinyxml2" - CMAKE_CACHE_ARGS ${COMMON_ARGS} ${EXT_LIBRARY_ARGS} - INSTALL_DIR install_temp - ) -else() - list(APPEND SUBPROJECT_ARGS -Dtinyxml2_ROOT:PATH=${tinyxml2_ROOT}) - - # Create a dummy target so CMake doesn't throw missing dependency errors. - add_library(tinyxml2 INTERFACE) -endif() +## Subprojects -if(NOT SKIP_MKPSXISO) - ExternalProject_Add( - mkpsxiso - GIT_REPOSITORY "https://github.com/Lameguy64/mkpsxiso" - CMAKE_CACHE_ARGS ${COMMON_ARGS} ${SUBPROJECT_ARGS} - INSTALL_DIR install_tree - DEPENDS tinyxml2 - ) -else() - add_library(mkpsxiso INTERFACE) +if(NOT EXISTS ${PROJECT_SOURCE_DIR}/tools/mkpsxiso/CMakeLists.txt) + message(FATAL_ERROR "The mkpsxiso directory is empty. Run 'git submodule update --init --recursive' to populate it.") endif() -## Subprojects - ExternalProject_Add( - libpsn00b - SOURCE_DIR ${PROJECT_SOURCE_DIR}/libpsn00b + tools + SOURCE_DIR ${PROJECT_SOURCE_DIR}/tools CMAKE_CACHE_ARGS ${COMMON_ARGS} ${SUBPROJECT_ARGS} INSTALL_DIR install_tree ) ExternalProject_Add( - tools - SOURCE_DIR ${PROJECT_SOURCE_DIR}/tools + mkpsxiso + SOURCE_DIR ${PROJECT_SOURCE_DIR}/tools/mkpsxiso CMAKE_CACHE_ARGS ${COMMON_ARGS} ${SUBPROJECT_ARGS} INSTALL_DIR install_tree - DEPENDS tinyxml2 +) +ExternalProject_Add( + libpsn00b + SOURCE_DIR ${PROJECT_SOURCE_DIR}/libpsn00b + CMAKE_CACHE_ARGS ${COMMON_ARGS} ${SUBPROJECT_ARGS} + INSTALL_DIR install_tree + #DEPENDS tools ) ExternalProject_Add( examples @@ -133,12 +98,21 @@ ExternalProject_Add( # Install all files in the temporary installation tree, as well as static files # from the source tree, when "cmake --install" is invoked. -install( - DIRECTORY ${PROJECT_BINARY_DIR}/install_tree/ # THE TRAILING SLASH IS IMPORTANT - DESTINATION . - COMPONENT sdk - USE_SOURCE_PERMISSIONS +foreach( + _subdir IN ITEMS + ${CMAKE_INSTALL_BINDIR} + ${CMAKE_INSTALL_LIBDIR} + ${CMAKE_INSTALL_DATADIR} ) + install( + # THE TRAILING SLASH IS IMPORTANT + DIRECTORY ${PROJECT_BINARY_DIR}/install_tree/${_subdir}/ + DESTINATION ${_subdir} + COMPONENT sdk + USE_SOURCE_PERMISSIONS + ) +endforeach() + install( DIRECTORY doc template DESTINATION ${CMAKE_INSTALL_DATADIR}/psn00bsdk |
