Skip to content

Commit ab4a4fd

Browse files
committed
feat: Add option to specify a pre-built PARAM.SFO when building a pbp file using CMake.
1 parent f4677d9 commit ab4a4fd

1 file changed

Lines changed: 28 additions & 14 deletions

File tree

src/base/CreatePBP.cmake

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ macro(create_pbp_file)
1212

1313
set(oneValueArgs
1414
TARGET # defined by an add_executable call before calling create_pbp_file
15+
SFO_PATH # optional, absolute path to pre-built PARAM.SFO
1516
TITLE # optional, string, target's name in PSP menu
1617
ICON_PATH # optional, absolute path to .png file, 144x82
1718
ANIM_PATH # optional, absolute path to .pmf file
@@ -34,6 +35,11 @@ macro(create_pbp_file)
3435
set(ARG_VERSION "")
3536
endif()
3637

38+
# set ARG_SFO_PATH if not defined
39+
if (NOT DEFINED ARG_SFO_PATH)
40+
set(ARG_SFO_PATH "")
41+
endif()
42+
3743
# set output directory to where the target is build if not set
3844
if (NOT DEFINED ARG_OUTPUT_DIR)
3945
set(ARG_OUTPUT_DIR $<TARGET_FILE_DIR:${ARG_TARGET}>)
@@ -143,37 +149,45 @@ macro(create_pbp_file)
143149
if (NOT ${ARG_MEMSIZE})
144150
set(ARG_MEMSIZE "1")
145151
endif()
146-
add_custom_command(
147-
TARGET ${ARG_TARGET}
148-
POST_BUILD COMMAND
149-
"${PSPDEV}/bin/mksfoex" "-d" "MEMSIZE=${ARG_MEMSIZE}" "-s" "APP_VER=${ARG_VERSION}" "${ARG_TITLE}" "${ARG_OUTPUT_DIR}/PARAM.SFO"
150-
COMMENT "Calling mksfoex for target ${ARG_TARGET}"
151-
)
152+
153+
if(NOT ARG_SFO_PATH)
154+
add_custom_command(
155+
TARGET ${ARG_TARGET}
156+
POST_BUILD COMMAND
157+
"${PSPDEV}/bin/mksfoex" "-d" "MEMSIZE=${ARG_MEMSIZE}" "-s" "APP_VER=${ARG_VERSION}" "${ARG_TITLE}" "${ARG_OUTPUT_DIR}/PARAM.SFO"
158+
COMMENT "Calling mksfoex for target ${ARG_TARGET}"
159+
)
160+
set(SFO_PATH "${ARG_OUTPUT_DIR}/PARAM.SFO")
161+
else()
162+
set(SFO_PATH "${ARG_SFO_PATH}")
163+
endif()
152164

153165
if(${ARG_BUILD_PRX})
154166
add_custom_command(
155167
TARGET ${ARG_TARGET}
156168
POST_BUILD COMMAND
157-
"${PSPDEV}/bin/pack-pbp" "${ARG_OUTPUT_DIR}/EBOOT.PBP" "${ARG_OUTPUT_DIR}/PARAM.SFO" "${ARG_ICON_PATH}" "${ARG_ANIM_PATH}" "${ARG_PREVIEW_PATH}"
169+
"${PSPDEV}/bin/pack-pbp" "${ARG_OUTPUT_DIR}/EBOOT.PBP" "${SFO_PATH}" "${ARG_ICON_PATH}" "${ARG_ANIM_PATH}" "${ARG_PREVIEW_PATH}"
158170
"${ARG_BACKGROUND_PATH}" "${ARG_MUSIC_PATH}" "$<TARGET_FILE:${ARG_TARGET}>.prx" "${ARG_PSAR_PATH}"
159171
COMMENT "Calling pack-pbp with PRX file for target ${ARG_TARGET}"
160172
)
161173
else()
162174
add_custom_command(
163175
TARGET ${ARG_TARGET}
164176
POST_BUILD COMMAND
165-
"${PSPDEV}/bin/pack-pbp" "${ARG_OUTPUT_DIR}/EBOOT.PBP" "${ARG_OUTPUT_DIR}/PARAM.SFO" "${ARG_ICON_PATH}" "${ARG_ANIM_PATH}" "${ARG_PREVIEW_PATH}"
177+
"${PSPDEV}/bin/pack-pbp" "${ARG_OUTPUT_DIR}/EBOOT.PBP" "${SFO_PATH}" "${ARG_ICON_PATH}" "${ARG_ANIM_PATH}" "${ARG_PREVIEW_PATH}"
166178
"${ARG_BACKGROUND_PATH}" "${ARG_MUSIC_PATH}" "$<TARGET_FILE:${ARG_TARGET}>" "${ARG_PSAR_PATH}"
167179
COMMENT "Calling pack-pbp with ELF file for target ${ARG_TARGET}"
168180
)
169181
endif()
170182

171-
add_custom_command(
172-
TARGET ${ARG_TARGET} POST_BUILD
173-
COMMAND ${CMAKE_COMMAND} -E remove
174-
${ARG_OUTPUT_DIR}/PARAM.SFO
175-
COMMENT "Cleaning up PARAM.SFO for target ${ARG_TARGET}"
176-
)
183+
if(NOT ARG_SFO_PATH)
184+
add_custom_command(
185+
TARGET ${ARG_TARGET} POST_BUILD
186+
COMMAND ${CMAKE_COMMAND} -E remove
187+
${ARG_OUTPUT_DIR}/PARAM.SFO
188+
COMMENT "Cleaning up PARAM.SFO for target ${ARG_TARGET}"
189+
)
190+
endif()
177191

178192
add_custom_command(
179193
TARGET ${ARG_TARGET}

0 commit comments

Comments
 (0)