aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b
diff options
context:
space:
mode:
authorspicyjpeg <thatspicyjpeg@gmail.com>2022-12-18 16:19:31 +0100
committerspicyjpeg <thatspicyjpeg@gmail.com>2022-12-18 16:19:31 +0100
commita3359c0e7d85bf4752cda3b00892ecd5ef691077 (patch)
tree5888e4a77b207f24ccd9ad148d1c74e9c33400e9 /libpsn00b
parentb58a37bdac753ceace35761ef474c198a3f18e12 (diff)
downloadpsn00bsdk-a3359c0e7d85bf4752cda3b00892ecd5ef691077.tar.gz
Bump to v0.22, update CMake scripts and docs
Diffstat (limited to 'libpsn00b')
-rw-r--r--libpsn00b/cmake/flags.cmake16
-rw-r--r--libpsn00b/cmake/internal_setup.cmake47
2 files changed, 41 insertions, 22 deletions
diff --git a/libpsn00b/cmake/flags.cmake b/libpsn00b/cmake/flags.cmake
index 1ca25c2..fdc479e 100644
--- a/libpsn00b/cmake/flags.cmake
+++ b/libpsn00b/cmake/flags.cmake
@@ -14,7 +14,6 @@ target_compile_options(
# Options common to all target types
-g
-Wa,--strip-local-absolute
- -O2
-ffreestanding
-fno-builtin
-nostdlib
@@ -29,7 +28,6 @@ target_compile_options(
-mabi=32
-mno-mt
-mno-llsc
- -mdivide-breaks
$<$<COMPILE_LANGUAGE:CXX>:
# Options common to all target types (C++)
-fno-exceptions
@@ -38,6 +36,14 @@ target_compile_options(
-fno-threadsafe-statics
-fno-use-cxa-atexit
>
+ $<IF:$<CONFIG:Debug>,
+ # Options for debug builds
+ -Og
+ -mdivide-breaks
+ ,
+ # Options for release builds
+ -O2
+ >
$<$<STREQUAL:$<UPPER_CASE:$<TARGET_PROPERTY:PSN00BSDK_TARGET_TYPE>>,EXECUTABLE_GPREL>:
# Options for executables with $gp-relative addressing
-G8
@@ -86,5 +92,9 @@ target_link_options(
target_compile_definitions(
psn00bsdk INTERFACE
PSN00BSDK=1
- $<$<CONFIG:Release>:NDEBUG=1>
+ $<IF:$<CONFIG:Debug>,
+ #NDEBUG=0
+ ,
+ NDEBUG=1
+ >
)
diff --git a/libpsn00b/cmake/internal_setup.cmake b/libpsn00b/cmake/internal_setup.cmake
index b21451e..9e7a4d3 100644
--- a/libpsn00b/cmake/internal_setup.cmake
+++ b/libpsn00b/cmake/internal_setup.cmake
@@ -173,6 +173,7 @@ function(psn00bsdk_add_executable name type)
#$<${_repl},${PSN00BSDK_SYMBOL_MAP_SUFFIX}>
${CMAKE_CURRENT_BINARY_DIR}/${name}${PSN00BSDK_EXECUTABLE_SUFFIX}
${CMAKE_CURRENT_BINARY_DIR}/${name}${PSN00BSDK_SYMBOL_MAP_SUFFIX}
+ #VERBATIM
)
endfunction()
@@ -200,6 +201,7 @@ function(psn00bsdk_add_library name type)
$<SHELL_PATH:${CMAKE_CURRENT_BINARY_DIR}/${name}${PSN00BSDK_SHARED_LIBRARY_SUFFIX}>
#BYPRODUCTS $<${_repl},${PSN00BSDK_SHARED_LIBRARY_SUFFIX}>
BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${name}${PSN00BSDK_SHARED_LIBRARY_SUFFIX}
+ VERBATIM
)
else()
message(FATAL_ERROR "Invalid library type: ${type} (must be STATIC, OBJECT, SHARED or MODULE)")
@@ -209,8 +211,8 @@ endfunction()
## Linking helpers
function(psn00bsdk_target_incbin_a name type symbol_name size_name path section align)
- string(MAKE_C_IDENTIFIER ${symbol_name} _id)
- string(MAKE_C_IDENTIFIER ${size_name} _size)
+ string(MAKE_C_IDENTIFIER "${symbol_name}" _id)
+ string(MAKE_C_IDENTIFIER "${size_name}" _size)
cmake_path(ABSOLUTE_PATH path OUTPUT_VARIABLE _path)
string(SHA1 _hash "${name} ${_id}")
@@ -223,11 +225,12 @@ function(psn00bsdk_target_incbin_a name type symbol_name size_name path section
CONFIGURE
OUTPUT ${_asm_file}
CONTENT [[
-.section ${section}
+.section ${section}.${_id}, "aw"
.balign ${align}
.global ${_id}
.type ${_id}, @object
+.size ${_id}, (${_id}_end - ${_id})
${_id}:
.incbin "${_path}"
@@ -235,34 +238,32 @@ ${_id}:
${_id}_end:
.balign ${align}
+
+.section ${section}.${_size}, "aw"
.balign 4
.global ${_size}
.type ${_size}, @object
+.size ${_size}, 4
${_size}:
.int (${_id}_end - ${_id})
-
-.size ${_id}, (${_id}_end - ${_id})
-.size ${_size}, 4
]]
ESCAPE_QUOTES
NEWLINE_STYLE LF
)
target_sources(${name} ${type} ${_asm_file})
- set_source_files_properties(${_asm_file} PROPERTIES OBJECT_DEPENDS ${_path})
+ set_source_files_properties(${_asm_file} PROPERTIES OBJECT_DEPENDS "${_path}")
endfunction()
function(psn00bsdk_target_incbin name type symbol_name path)
- string(MAKE_C_IDENTIFIER ${symbol_name} _id)
-
psn00bsdk_target_incbin_a(
${name}
${type}
- ${_id}
- ${_id}_size
- ${path}
- .data.${_id}
+ "${symbol_name}"
+ "${symbol_name}_size"
+ "${path}"
+ .data
4
)
endfunction()
@@ -280,14 +281,22 @@ function(psn00bsdk_add_cd_image name image_name config_file)
cmake_path(HASH config_file _hash)
set(CD_IMAGE_NAME ${image_name})
- set(CD_CONFIG_FILE cd_image_${_hash}.xml)
- configure_file(${config_file} ${CD_CONFIG_FILE})
+ set(CD_CONFIG_FILE ${CMAKE_CURRENT_BINARY_DIR}/cd_image_${_hash}.xml)
+ configure_file("${config_file}" ${CD_CONFIG_FILE})
+ add_custom_command(
+ OUTPUT ${CD_IMAGE_NAME}.bin ${CD_IMAGE_NAME}.cue
+ COMMAND
+ ${MKPSXISO} -y
+ -o ${CD_IMAGE_NAME}.bin -c ${CD_IMAGE_NAME}.cue ${CD_CONFIG_FILE}
+ COMMENT "Building CD image ${CD_IMAGE_NAME}"
+ VERBATIM
+ ${ARGN}
+ )
add_custom_target(
${name} ALL
- COMMAND ${MKPSXISO} -y ${CD_CONFIG_FILE}
- BYPRODUCTS ${image_name}.bin ${image_name}.cue
- COMMENT "Building CD image ${image_name}"
- ${ARGN}
+ DEPENDS
+ ${CMAKE_CURRENT_BINARY_DIR}/${CD_IMAGE_NAME}.bin
+ ${CMAKE_CURRENT_BINARY_DIR}/${CD_IMAGE_NAME}.cue
)
endfunction()