Skip to content

Commit

Permalink
Use function with easier input for generating PRX module files
Browse files Browse the repository at this point in the history
  • Loading branch information
sharkwouter committed Oct 31, 2024
1 parent 6638c67 commit af86b64
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 59 deletions.
55 changes: 55 additions & 0 deletions src/base/AddPrxModule.cmake
Original file line number Diff line number Diff line change
@@ -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" "$<TARGET_FILE:${name}>"
COMMENT "Calling psp-fixup-imports"
)

# Generate the .prx module from executable target
add_custom_command(
TARGET ${name}
POST_BUILD COMMAND
"${PSPDEV}/bin/psp-prxgen" "$<TARGET_FILE:${name}>"
"$<TARGET_FILE:${name}>.prx"
COMMENT "Calling prxgen"
)
endfunction()
57 changes: 0 additions & 57 deletions src/base/CreatePRX.cmake

This file was deleted.

2 changes: 1 addition & 1 deletion src/base/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion src/base/pspdev.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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")

0 comments on commit af86b64

Please sign in to comment.