aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorJohn "Lameguy" Wilbert Villamor <lameguy64@gmail.com>2022-01-18 08:31:14 +0800
committerGitHub <noreply@github.com>2022-01-18 08:31:14 +0800
commit05d44488bd5587786f4bd0286fc0f555c79aa46a (patch)
tree5740f396d10a9580c3a39ca536544436898ff1b6 /CMakeLists.txt
parent08de895e8582dbc70b639ae5f511ab9ebfb4d68a (diff)
parente9475e283a82665fe6c19bebc3318b5084f15a2e (diff)
downloadpsn00bsdk-05d44488bd5587786f4bd0286fc0f555c79aa46a.tar.gz
Merge pull request #44 from spicyjpeg/actions
GitHub Actions CI, psxcd and libc fixes, new examples
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt52
1 files changed, 40 insertions, 12 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3d974a5..2079fd1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,7 +12,7 @@ include(ExternalProject)
project(
PSn00bSDK
LANGUAGES NONE
- VERSION 0.1.0
+ VERSION 0.18
DESCRIPTION "Open source PlayStation 1 SDK"
HOMEPAGE_URL "http://lameguy64.net/?page=psn00bsdk"
)
@@ -26,11 +26,11 @@ include(GNUInstallDirs)
# These are passed through to libpsn00b and the examples (they are defined in
# the toolchain file).
set(
- PSN00BSDK_TC $ENV{PSN00BSDK_TC}
- CACHE PATH "Path to the GCC toolchain's installation directory"
+ PSN00BSDK_TC ""
+ CACHE PATH "Path to the GCC toolchain's installation directory (if not in PATH)"
)
set(
- PSN00BSDK_TARGET mipsel-unknown-elf
+ PSN00BSDK_TARGET mipsel-none-elf
CACHE STRING "GCC toolchain target triplet"
)
@@ -38,6 +38,16 @@ set(
SKIP_EXAMPLES OFF
CACHE BOOL "Skip building SDK examples (not required for installation)"
)
+set(
+ PSN00BSDK_GIT_TAG ""
+ CACHE STRING "Git tag or branch name (used by CI)"
+)
+set(
+ PSN00BSDK_GIT_COMMIT ""
+ CACHE STRING "Git commit hash (used by CI)"
+)
+
+string(TIMESTAMP PSN00BSDK_BUILD_DATE UTC)
# Forward some important variables to mkpsxiso and to the subprojects (they are
# not inherited automatically as they are not environment variables). This also
@@ -46,22 +56,34 @@ set(
# invoked (ExternalProject_Add() runs the subprojects' install step at build
# time).
set(
- COMMON_ARGS
+ _common_args
-DPSN00BSDK_TC:PATH=${PSN00BSDK_TC}
-DPSN00BSDK_TARGET:STRING=${PSN00BSDK_TARGET}
+ -DPSN00BSDK_VERSION:STRING=${PROJECT_VERSION}
+ -DPSN00BSDK_BUILD_DATE:STRING=${PSN00BSDK_BUILD_DATE}
+ -DPSN00BSDK_GIT_TAG:STRING=${PSN00BSDK_GIT_TAG}
+ -DPSN00BSDK_GIT_COMMIT:STRING=${PSN00BSDK_GIT_COMMIT}
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
)
set(
- SUBPROJECT_ARGS
+ _sdk_args
+ ${_common_args}
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE}
-DCMAKE_INSTALL_PREFIX:PATH=${PROJECT_BINARY_DIR}/install_tree
)
set(
- EXAMPLES_ARGS
+ _examples_args
+ ${_common_args}
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${PROJECT_BINARY_DIR}/install_tree/${CMAKE_INSTALL_LIBDIR}/libpsn00b/cmake/sdk.cmake
-DCMAKE_INSTALL_PREFIX:PATH=${PROJECT_BINARY_DIR}/examples
)
+# Ensure PSn00bSDK isn't being built using the toolchain file from PSn00bSDK
+# itself (or from another version of it).
+if(CMAKE_TOOLCHAIN_FILE MATCHES ".*libpsn00b[/\\]cmake[/\\]sdk\.cmake$")
+ message(FATAL_ERROR "CMAKE_TOOLCHAIN_FILE is set to the toolchain file of an existing PSn00bSDK installation. It must be unset or overridden by passing '-DCMAKE_TOOLCHAIN_FILE=\"\"' to CMake.")
+endif()
+
## Subprojects
if(NOT EXISTS ${PROJECT_SOURCE_DIR}/tools/mkpsxiso/CMakeLists.txt)
@@ -71,26 +93,26 @@ endif()
ExternalProject_Add(
tools
SOURCE_DIR ${PROJECT_SOURCE_DIR}/tools
- CMAKE_CACHE_ARGS ${COMMON_ARGS} ${SUBPROJECT_ARGS}
+ CMAKE_CACHE_ARGS ${_sdk_args}
INSTALL_DIR install_tree
)
ExternalProject_Add(
mkpsxiso
SOURCE_DIR ${PROJECT_SOURCE_DIR}/tools/mkpsxiso
- CMAKE_CACHE_ARGS ${COMMON_ARGS} ${SUBPROJECT_ARGS}
+ CMAKE_CACHE_ARGS ${_sdk_args}
INSTALL_DIR install_tree
)
ExternalProject_Add(
libpsn00b
SOURCE_DIR ${PROJECT_SOURCE_DIR}/libpsn00b
- CMAKE_CACHE_ARGS ${COMMON_ARGS} ${SUBPROJECT_ARGS}
+ CMAKE_CACHE_ARGS ${_sdk_args}
INSTALL_DIR install_tree
#DEPENDS tools
)
ExternalProject_Add(
examples
SOURCE_DIR ${PROJECT_SOURCE_DIR}/examples
- CMAKE_CACHE_ARGS ${COMMON_ARGS} ${EXAMPLES_ARGS}
+ CMAKE_CACHE_ARGS ${_examples_args}
INSTALL_DIR examples
DEPENDS libpsn00b tools mkpsxiso
EXCLUDE_FROM_ALL ${SKIP_EXAMPLES}
@@ -102,6 +124,7 @@ foreach(
_subdir IN ITEMS
${CMAKE_INSTALL_BINDIR}
${CMAKE_INSTALL_LIBDIR}
+ ${CMAKE_INSTALL_INCLUDEDIR}
${CMAKE_INSTALL_DATADIR}
)
install(
@@ -114,10 +137,15 @@ foreach(
endforeach()
install(
- DIRECTORY doc template examples
+ DIRECTORY doc template
DESTINATION ${CMAKE_INSTALL_DATADIR}/psn00bsdk
COMPONENT docs
)
+install(
+ DIRECTORY examples
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/psn00bsdk
+ COMPONENT examples
+)
## CPack configuration