diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 106 |
1 files changed, 37 insertions, 69 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 5097a50..431e95b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,8 @@ project( # there's no way to mute it. include(GNUInstallDirs) +## Settings + # These are passed through to libpsn00b and the examples (they are defined in # the toolchain file). set( @@ -34,8 +36,12 @@ set( ) set( - SKIP_DOWNLOAD OFF - CACHE BOOL "Skip downloading and building tinyxml2 and mkpsxiso" + 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 @@ -49,50 +55,55 @@ set( # invoked (ExternalProject_Add() runs the subprojects' install step at build # time). set( - SUBPROJECT_ARGS + COMMON_ARGS -DPSN00BSDK_TC:PATH=${PSN00BSDK_TC} -DPSN00BSDK_TARGET:STRING=${PSN00BSDK_TARGET} + -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 - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} ) set( EXAMPLES_ARGS - -DPSN00BSDK_TC:PATH=${PSN00BSDK_TC} - -DPSN00BSDK_TARGET:STRING=${PSN00BSDK_TARGET} -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${PROJECT_BINARY_DIR}/install_tree/${CMAKE_INSTALL_LIBDIR}/libpsn00b/cmake/sdk.cmake -DCMAKE_INSTALL_PREFIX:PATH=${PROJECT_BINARY_DIR}/examples - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} ) ## External dependencies -if(NOT SKIP_DOWNLOAD) +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 - -DCMAKE_INSTALL_PREFIX:PATH=${PROJECT_BINARY_DIR}/install_temp - -DCMAKE_MSVC_RUNTIME_LIBRARY:STRING=MultiThreaded$<$<CONFIG:Debug>:Debug> + 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() + +if(NOT SKIP_MKPSXISO) ExternalProject_Add( mkpsxiso - # IMPORTANT TODO: migrate to Lameguy64/mkpsxiso once PR #18 is merged GIT_REPOSITORY "https://github.com/Lameguy64/mkpsxiso" - GIT_TAG cmake - #GIT_REPOSITORY "https://github.com/Lameguy64/mkpsxiso" - CMAKE_CACHE_ARGS ${SUBPROJECT_ARGS} + CMAKE_CACHE_ARGS ${COMMON_ARGS} ${SUBPROJECT_ARGS} INSTALL_DIR install_tree DEPENDS tinyxml2 ) else() - list(APPEND SUBPROJECT_ARGS -Dtinyxml2_ROOT:PATH=${tinyxml2_ROOT}) - - # Create dummy targets so CMake doesn't throw missing dependency errors. - add_library(tinyxml2 INTERFACE) add_library(mkpsxiso INTERFACE) endif() @@ -101,21 +112,21 @@ endif() ExternalProject_Add( libpsn00b SOURCE_DIR ${PROJECT_SOURCE_DIR}/libpsn00b - CMAKE_CACHE_ARGS ${SUBPROJECT_ARGS} + CMAKE_CACHE_ARGS ${COMMON_ARGS} ${SUBPROJECT_ARGS} INSTALL_DIR install_tree ) ExternalProject_Add( tools SOURCE_DIR ${PROJECT_SOURCE_DIR}/tools - CMAKE_CACHE_ARGS ${SUBPROJECT_ARGS} + CMAKE_CACHE_ARGS ${COMMON_ARGS} ${SUBPROJECT_ARGS} INSTALL_DIR install_tree DEPENDS tinyxml2 ) ExternalProject_Add( examples SOURCE_DIR ${PROJECT_SOURCE_DIR}/examples - CMAKE_CACHE_ARGS ${EXAMPLES_ARGS} - INSTALL_DIR install_tree + CMAKE_CACHE_ARGS ${COMMON_ARGS} ${EXAMPLES_ARGS} + INSTALL_DIR examples DEPENDS libpsn00b tools mkpsxiso EXCLUDE_FROM_ALL ${SKIP_EXAMPLES} ) @@ -125,58 +136,15 @@ ExternalProject_Add( install( DIRECTORY ${PROJECT_BINARY_DIR}/install_tree/ # THE TRAILING SLASH IS IMPORTANT DESTINATION . + COMPONENT sdk USE_SOURCE_PERMISSIONS ) install( DIRECTORY doc template DESTINATION ${CMAKE_INSTALL_DATADIR}/psn00bsdk + COMPONENT docs ) ## CPack configuration -if(WIN32) - set(CPACK_GENERATOR ZIP NSIS) -elseif(APPLE) - # TODO: add a macOS installer and related options - set(CPACK_GENERATOR ZIP) -elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") - set(CPACK_GENERATOR ZIP DEB RPM) -else() - set(CPACK_GENERATOR ZIP) -endif() - -set(CPACK_PACKAGE_DIRECTORY ${PROJECT_BINARY_DIR}/cpack) -set(CPACK_PACKAGE_NAME PSn00bSDK) -set(CPACK_PACKAGE_VENDOR Lameguy64) -set(CPACK_PACKAGE_CONTACT Lameguy64) -set(CPACK_PACKAGE_ICON ${PROJECT_SOURCE_DIR}/cpack/icon.ico) -set(CPACK_PACKAGE_DESCRIPTION_FILE ${PROJECT_SOURCE_DIR}/cpack/description.txt) -set(CPACK_RESOURCE_FILE_WELCOME ${PROJECT_SOURCE_DIR}/cpack/welcome.txt) -set(CPACK_RESOURCE_FILE_README ${PROJECT_SOURCE_DIR}/README.md) -set(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE.md) -set(CPACK_PRE_BUILD_SCRIPTS ${PROJECT_SOURCE_DIR}/cpack/fakeroot_fix.cmake) - -set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.28), cmake (>= 3.21), gcc-mipsel-unknown-elf") -set(CPACK_DEBIAN_PACKAGE_SUGGESTS "git") -set(CPACK_DEBIAN_PACKAGE_SECTION devel) -set(CPACK_RPM_PACKAGE_REQUIRES "cmake >= 3.21, gcc-mipsel-unknown-elf") -set(CPACK_RPM_PACKAGE_SUGGESTS "git") -#set(CPACK_RPM_PACKAGE_RELOCATABLE ON) - -set(CPACK_NSIS_MUI_ICON ${PROJECT_SOURCE_DIR}/cpack/icon.ico) -set(CPACK_NSIS_MUI_UNIICON ${PROJECT_SOURCE_DIR}/cpack/uninstall.ico) -set(CPACK_NSIS_MUI_HEADERIMAGE ${PROJECT_SOURCE_DIR}/cpack/nsis_header.bmp) -set(CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP ${PROJECT_SOURCE_DIR}/cpack/nsis_banner.bmp) -set(CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP ${PROJECT_SOURCE_DIR}/cpack/nsis_banner.bmp) -set(CPACK_NSIS_BRANDING_TEXT "PSn00bSDK - Meido-Tek Productions") -set(CPACK_NSIS_URL_INFO_ABOUT "${PROJECT_HOMEPAGE_URL}") -set(CPACK_NSIS_MODIFY_PATH ON) -set( - CPACK_NSIS_MENU_LINKS - "${PROJECT_HOMEPAGE_URL}" "About PSn00bSDK" - "https://github.com/Lameguy64/PSn00bSDK" "GitHub repo" -) - -# This will generate a CPack configuration file and add a "package" target to -# launch CPack. -include(CPack) +include(cpack/setup.cmake) |
