From af86b6445d5c19b6bdc7f300999d0cbc29787f61 Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Thu, 31 Oct 2024 08:56:55 +0100 Subject: [PATCH 1/5] Use function with easier input for generating PRX module files --- src/base/AddPrxModule.cmake | 55 +++++++++++++++++++++++++++++++++++ src/base/CreatePRX.cmake | 57 ------------------------------------- src/base/Makefile.am | 2 +- src/base/pspdev.cmake | 2 +- 4 files changed, 57 insertions(+), 59 deletions(-) create mode 100644 src/base/AddPrxModule.cmake delete mode 100644 src/base/CreatePRX.cmake diff --git a/src/base/AddPrxModule.cmake b/src/base/AddPrxModule.cmake new file mode 100644 index 00000000..46666ef5 --- /dev/null +++ b/src/base/AddPrxModule.cmake @@ -0,0 +1,55 @@ +# File defining macro outputting PSP-specific PRX module out of passed executable target. +cmake_minimum_required(VERSION 3.10) + +function(add_prx_module name) + # Initialize list for existing and generated source files + set(SRC_FILES) + + # Loop over each source file + foreach(FILE ${ARGN}) + # Get the extension of the file + get_filename_component(FILE_EXTENSION ${FILE} EXT) + + # Generate a .c file from .exp files + if (${FILE_EXTENSION} EQUAL ".exp") + # Get the filename without extension + get_filename_component(EXP_FILE_NAME ${FILE} NAME_WE) + + # Define the output .c file path + set(GENERATED_C_FILE ${CMAKE_BINARY_DIR}/${EXP_FILE_NAME}.c) + + # Add a custom command for each .exp file to generate a .c file + add_custom_command( + OUTPUT ${GENERATED_C_FILE} + COMMAND psp-build-exports -b ${EXP_FILE} > ${GENERATED_C_FILE} + DEPENDS ${EXP_FILE} + COMMENT "Generating ${EXP_FILE_NAME}.c from ${EXP_FILE_NAME}.exp" + ) + + # Add the generated .c file to the list + list(APPEND SRC_FILES ${GENERATED_C_FILE}) + else() + # Simply add other files to the list + list(APPEND SRC_FILES ${FILE}) + endif() + endforeach() + + add_executable(${name} ${SRC_FILES}) + target_link_options(${name} PRIVATE -Wl,-q,-T${PSPDEV}/psp/sdk/lib/linkfile.prx -nostartfiles -Wl,-zmax-page-size=128) + + add_custom_command( + TARGET ${name} + POST_BUILD COMMAND + "$ENV{PSPDEV}/bin/psp-fixup-imports" "$" + COMMENT "Calling psp-fixup-imports" + ) + + # Generate the .prx module from executable target + add_custom_command( + TARGET ${name} + POST_BUILD COMMAND + "${PSPDEV}/bin/psp-prxgen" "$" + "$.prx" + COMMENT "Calling prxgen" + ) +endfunction() diff --git a/src/base/CreatePRX.cmake b/src/base/CreatePRX.cmake deleted file mode 100644 index 56119b21..00000000 --- a/src/base/CreatePRX.cmake +++ /dev/null @@ -1,57 +0,0 @@ -# File defining macro outputting PSP-specific PRX module out of passed executable target. -cmake_minimum_required(VERSION 3.10) - -macro(add_prx_module) - - set(OPTIONS_ARGS) - set(ONE_VALUE_ARGS - TARGET # CMake target for the prx module that is being output - ) - set(MULTI_VALUE_ARGS - SRC_FILES # Source files for the module - EXP_FILES # Export files for the module - ) - - cmake_parse_arguments("ARG" "${OPTIONS_ARGS}" "${ONE_VALUE_ARGS}" "${MULTI_VALUE_ARGS}" ${ARGN} ) - - # Initialize a list to store generated .c files - set(GENERATED_C_FILES) - - # Loop over each .exp file to set up a rule to generate a corresponding .c file - foreach(EXP_FILE ${ARG_EXP_FILES}) - # Get the filename without extension - get_filename_component(EXP_FILE_NAME ${EXP_FILE} NAME_WE) - - # Define the output .c file path - set(GENERATED_C_FILE ${CMAKE_BINARY_DIR}/${EXP_FILE_NAME}.c) - - # Add a custom command for each .exp file to generate a .c file - add_custom_command( - OUTPUT ${GENERATED_C_FILE} - COMMAND psp-build-exports -b ${EXP_FILE} > ${GENERATED_C_FILE} - DEPENDS ${EXP_FILE} - COMMENT "Generating ${EXP_FILE_NAME}.c from ${EXP_FILE_NAME}.exp" - ) - - # Add the generated .c file to the list - list(APPEND GENERATED_C_FILES ${GENERATED_C_FILE}) - endforeach() - - add_executable(${ARG_TARGET} ${ARG_SRC_FILES} ${GENERATED_C_FILES}) - target_link_options(${ARG_TARGET} PRIVATE -Wl,-q,-T${PSPDEV}/psp/sdk/lib/linkfile.prx -nostartfiles -Wl,-zmax-page-size=128) - - add_custom_command( - TARGET ${ARG_TARGET} - POST_BUILD COMMAND - "$ENV{PSPDEV}/bin/psp-fixup-imports" "$" - COMMENT "Calling psp-fixup-imports" - ) - - add_custom_command( - TARGET ${ARG_TARGET} - POST_BUILD COMMAND - "${PSPDEV}/bin/psp-prxgen" "$" - "$.prx" - COMMENT "Calling prxgen" - ) -endmacro(add_prx_module) diff --git a/src/base/Makefile.am b/src/base/Makefile.am index c55ec7b0..c3fe6975 100644 --- a/src/base/Makefile.am +++ b/src/base/Makefile.am @@ -16,6 +16,6 @@ buildmakprx_DATA = build_prx.mak linkfile.prx ## Install the cmake toolchain config to $PSPDEV/share buildmakcmakedir = @PSPDEV_SHAREDIR@ -buildmakcmake_DATA = pspdev.cmake CreatePBP.cmake CreatePRX.cmake +buildmakcmake_DATA = pspdev.cmake CreatePBP.cmake AddPrxModule.cmake EXTRA_DIST = build.mak prxspecs build_prx.mak linkfile.prx pspdev.cmake diff --git a/src/base/pspdev.cmake b/src/base/pspdev.cmake index 85b60218..10659c74 100644 --- a/src/base/pspdev.cmake +++ b/src/base/pspdev.cmake @@ -35,4 +35,4 @@ SET(PLATFORM_PSP TRUE) SET(PSP TRUE) include("${PSPDEV}/psp/share/CreatePBP.cmake") -include("${PSPDEV}/psp/share/CreatePRX.cmake") +include("${PSPDEV}/psp/share/AddPrxModule.cmake") From 388c583718df323b0cdf9583465db0d4e09c7721 Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Thu, 31 Oct 2024 09:32:17 +0100 Subject: [PATCH 2/5] Improved output for calling prxgen and fixup imports --- src/base/AddPrxModule.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/base/AddPrxModule.cmake b/src/base/AddPrxModule.cmake index 46666ef5..077e4f38 100644 --- a/src/base/AddPrxModule.cmake +++ b/src/base/AddPrxModule.cmake @@ -41,7 +41,7 @@ function(add_prx_module name) TARGET ${name} POST_BUILD COMMAND "$ENV{PSPDEV}/bin/psp-fixup-imports" "$" - COMMENT "Calling psp-fixup-imports" + COMMENT "Calling psp-fixup-imports for target ${name}" ) # Generate the .prx module from executable target @@ -50,6 +50,6 @@ function(add_prx_module name) POST_BUILD COMMAND "${PSPDEV}/bin/psp-prxgen" "$" "$.prx" - COMMENT "Calling prxgen" + COMMENT "Calling prxgen for target ${name}" ) endfunction() From d1ca1d6b5c63fb22222b2382255ed57bf22c0061 Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Thu, 31 Oct 2024 09:32:49 +0100 Subject: [PATCH 3/5] Make sure psp-build-exports is actually run --- src/base/AddPrxModule.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/base/AddPrxModule.cmake b/src/base/AddPrxModule.cmake index 077e4f38..8b559dbf 100644 --- a/src/base/AddPrxModule.cmake +++ b/src/base/AddPrxModule.cmake @@ -11,7 +11,7 @@ function(add_prx_module name) get_filename_component(FILE_EXTENSION ${FILE} EXT) # Generate a .c file from .exp files - if (${FILE_EXTENSION} EQUAL ".exp") + if ("${FILE_EXTENSION}" MATCHES ".exp") # Get the filename without extension get_filename_component(EXP_FILE_NAME ${FILE} NAME_WE) @@ -21,9 +21,9 @@ function(add_prx_module name) # Add a custom command for each .exp file to generate a .c file add_custom_command( OUTPUT ${GENERATED_C_FILE} - COMMAND psp-build-exports -b ${EXP_FILE} > ${GENERATED_C_FILE} - DEPENDS ${EXP_FILE} - COMMENT "Generating ${EXP_FILE_NAME}.c from ${EXP_FILE_NAME}.exp" + COMMAND psp-build-exports -b ${FILE} > ${GENERATED_C_FILE} + DEPENDS ${FILE} + COMMENT "Generating ${EXP_FILE_NAME}.c from ${FILE}" ) # Add the generated .c file to the list From 380ca62c525dff9b0414c2c8902f2cf258215d17 Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Thu, 31 Oct 2024 09:37:11 +0100 Subject: [PATCH 4/5] Add target to output of psp-build-exports command --- src/base/AddPrxModule.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base/AddPrxModule.cmake b/src/base/AddPrxModule.cmake index 8b559dbf..b3173227 100644 --- a/src/base/AddPrxModule.cmake +++ b/src/base/AddPrxModule.cmake @@ -23,7 +23,7 @@ function(add_prx_module name) OUTPUT ${GENERATED_C_FILE} COMMAND psp-build-exports -b ${FILE} > ${GENERATED_C_FILE} DEPENDS ${FILE} - COMMENT "Generating ${EXP_FILE_NAME}.c from ${FILE}" + COMMENT "Generating ${EXP_FILE_NAME}.c from ${EXP_FILE_NAME}.exp for target ${name}" ) # Add the generated .c file to the list From 7b0fb05c5d5f219530893220ef89f85552c6f8a6 Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Thu, 31 Oct 2024 09:41:50 +0100 Subject: [PATCH 5/5] Use STREQUAL instead of MATCHES --- src/base/AddPrxModule.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base/AddPrxModule.cmake b/src/base/AddPrxModule.cmake index b3173227..0743e2d9 100644 --- a/src/base/AddPrxModule.cmake +++ b/src/base/AddPrxModule.cmake @@ -11,7 +11,7 @@ function(add_prx_module name) get_filename_component(FILE_EXTENSION ${FILE} EXT) # Generate a .c file from .exp files - if ("${FILE_EXTENSION}" MATCHES ".exp") + if ("${FILE_EXTENSION}" STREQUAL ".exp") # Get the filename without extension get_filename_component(EXP_FILE_NAME ${FILE} NAME_WE)