@@ -2,7 +2,17 @@ if(NOT DEFINED ENV{OO_PS4_TOOLCHAIN})
22 if (DEFINED OO_PS4_TOOLCHAIN)
33 set (ENV{OO_PS4_TOOLCHAIN} ${OO_PS4_TOOLCHAIN} )
44 else ()
5- message (FATAL_ERROR "Missing OpenOrbis toolchain environment variable!" )
5+ # # Get toolchain before project
6+ message (STATUS "Downloading openOrbis" )
7+ FetchContent_Declare (
8+ openorbis
9+ URL https://github.com/ps4emulation/OpenOrbis-PS4-Toolchain/releases/download/0.5.4-2/v0.5.4-2.tar.gz
10+ URL_HASH SHA256=85cc12f388d06268873401ad80b42e2a059468063156180491c60821c0ff6568 # optional, hash of zip
11+ )
12+ FetchContent_MakeAvailable (openorbis)
13+
14+ set (OO_PS4_TOOLCHAIN ${openorbis_SOURCE_DIR} /PS4Toolchain)
15+ set (ENV{OO_PS4_TOOLCHAIN} ${OO_PS4_TOOLCHAIN} )
616 endif ()
717endif ()
818
@@ -36,21 +46,21 @@ else()
3646endif ()
3747
3848function (OpenOrbisPackage_PreProject )
39- if (TARGET ${PKG_TITLE_ID} )
40- message (FATAL_ERROR "Test name collision detected: ${PKG_TITLE_ID} ." )
41- endif ()
49+ if (TARGET ${PKG_TITLE_ID} )
50+ message (FATAL_ERROR "Test name collision detected: ${PKG_TITLE_ID} ." )
51+ endif ()
4252endfunction ()
4353
44- function (OpenOrbisPackage_PostProject )
45- set_target_properties (${PKG_TITLE_ID} PROPERTIES OUTPUT_NAME "eboot" SUFFIX ".elf" PREFIX "" )
54+ function (OpenOrbisPackage_PostProject path_bin )
55+ set_target_properties (${PKG_TITLE_ID} PROPERTIES OUTPUT_NAME "eboot" SUFFIX ".elf" PREFIX "" )
4656
47- if (CMAKE_HOST_WIN32 )
48- set (ORBIS_BIN_PATH ${OO_PS4_TOOLCHAIN} /bin/windows)
49- elseif (CMAKE_HOST_LINUX)
50- set (ORBIS_BIN_PATH ${OO_PS4_TOOLCHAIN} /bin/linux )
51- else ()
52- message (FATAL_ERROR "Unsupported OS" )
53- endif ()
57+ if (CMAKE_HOST_WIN32 )
58+ set (ORBIS_BIN_PATH ${OO_PS4_TOOLCHAIN} /bin/windows)
59+ elseif (CMAKE_HOST_LINUX)
60+ set (ORBIS_BIN_PATH ${OO_PS4_TOOLCHAIN} /bin/linux )
61+ else ()
62+ message (FATAL_ERROR "Unsupported OS" )
63+ endif ()
5464
5565 if (OO_PS4_NOPKG)
5666 set (PKG_SHOULDBUILD "nopkg" )
@@ -60,15 +70,41 @@ function(OpenOrbisPackage_PostProject)
6070
6171 math (EXPR OO_FWVER "${PKG_SYSVER} * 65536" )
6272
63- # Create eboot.bin from generated elf file
64- add_custom_command (TARGET ${PKG_TITLE_ID} POST_BUILD COMMAND
65- ${CMAKE_COMMAND} -E env "OO_PS4_TOOLCHAIN=${OO_PS4_TOOLCHAIN} "
66- ${ORBIS_BIN_PATH} /create-fself -in "${CMAKE_CURRENT_BINARY_DIR} /eboot.elf"
67- --out "${CMAKE_CURRENT_BINARY_DIR} /eboot.oelf" --eboot "${CMAKE_CURRENT_SOURCE_DIR} /eboot.bin" --paid 0x3800000000000011 --sdkver "${PKG_SYSVER} " --fwversion "${OO_FWVER} "
68- )
69-
70- # Create param.sfo and pkg file
71- if (CMAKE_HOST_WIN32 )
73+ # Create eboot.bin from generated elf file
74+ add_custom_command (TARGET ${PKG_TITLE_ID} POST_BUILD COMMAND
75+ ${CMAKE_COMMAND} -E env "OO_PS4_TOOLCHAIN=${OO_PS4_TOOLCHAIN} "
76+ ${ORBIS_BIN_PATH} /create-fself -in ${path_eboot} "${path_bin} /eboot.elf"
77+ --out "${path_bin} /eboot.oelf" --eboot "${path_bin} /eboot.bin" --paid 0x3800000000000011 --sdkver "${PKG_SYSVER} " --fwversion "${OO_FWVER} "
78+ )
79+ get_filename_component (CURRENT_FOLDER_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME )
80+ set (install_dir "${CMAKE_INSTALL_PREFIX} /${CURRENT_FOLDER_NAME} /${PKG_TITLE_ID} " )
81+
82+ # install
83+ install (FILES ${path_bin} /eboot.bin
84+ DESTINATION "${install_dir} "
85+ )
86+
87+ install (DIRECTORY
88+ ${CMAKE_SOURCE_DIR} /app_data/sce_sys
89+ DESTINATION "${install_dir} "
90+ )
91+
92+ install (DIRECTORY
93+ ${CMAKE_SOURCE_DIR} /app_data/sce_module
94+ DESTINATION "${install_dir} "
95+ )
96+
97+ install (DIRECTORY
98+ ${CMAKE_CURRENT_SOURCE_DIR} /assets
99+ DESTINATION "${install_dir} "
100+ )
101+
102+ install (FILES ${path_bin} /param.sfo
103+ DESTINATION "${install_dir} /sce_sys"
104+ )
105+
106+ # Create param.sfo
107+ if (CMAKE_HOST_WIN32 )
72108 string (REPLACE "^" "^^" ESCAPED_PKG_TITLE "${PKG_TITLE} " )
73109 string (REPLACE "&" "^&" ESCAPED_PKG_TITLE "${ESCAPED_PKG_TITLE} " )
74110 string (REPLACE "|" "^|" ESCAPED_PKG_TITLE "${ESCAPED_PKG_TITLE} " )
@@ -84,22 +120,33 @@ function(OpenOrbisPackage_PostProject)
84120 string (REPLACE "\n " "^n" ESCAPED_PKG_TITLE "${ESCAPED_PKG_TITLE} " )
85121 string (REPLACE " " "^ " ESCAPED_PKG_TITLE "${ESCAPED_PKG_TITLE} " )
86122
87- add_custom_command (TARGET ${PKG_TITLE_ID} POST_BUILD
88- COMMAND ${CMAKE_COMMAND} -E env "OO_PS4_TOOLCHAIN=${OO_PS4_TOOLCHAIN} "
89- cmd /c ${INTEST_SOURCE_ROOT} /package.bat
90- "${ESCAPED_PKG_TITLE} "
91- "${PKG_VERSION} "
92- "${PKG_TITLE_ID} "
93- "${PKG_CONTENT_ID} "
94- "${PKG_DOWNLOADSIZE} "
95- "${PKG_SYSVER} "
96- "${PKG_ATTRIBS1} "
97- "${PKG_ATTRIBS2} "
98- "${PKG_SHOULDBUILD} "
99- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} "
100- COMMENT "Running package.bat..."
101- )
102- elseif (CMAKE_HOST_LINUX)
123+ add_custom_command (TARGET ${PKG_TITLE_ID} POST_BUILD
124+ COMMAND ${CMAKE_COMMAND} -E env "OO_PS4_TOOLCHAIN=${OO_PS4_TOOLCHAIN} "
125+ cmd /c ${INTEST_SOURCE_ROOT} /patch_param.bat
126+ "${ESCAPED_PKG_TITLE} "
127+ "${PKG_VERSION} "
128+ "${PKG_TITLE_ID} "
129+ "${PKG_CONTENT_ID} "
130+ "${PKG_DOWNLOADSIZE} "
131+ "${PKG_SYSVER} "
132+ "${PKG_ATTRIBS1} "
133+ "${PKG_ATTRIBS2} "
134+ "${PKG_SHOULDBUILD} "
135+ WORKING_DIRECTORY "${path_bin} "
136+ COMMENT "Patching param.sfo..."
137+ )
138+
139+ if (NOT OO_PS4_NOPKG)
140+ # create pkg
141+ install (CODE "
142+ execute_process(
143+ COMMAND \" ${INTEST_SOURCE_ROOT} /package.bat\" \" ${PKG_CONTENT_ID} \" \" ${OO_PS4_TOOLCHAIN} \"
144+ WORKING_DIRECTORY \" ${install_dir} \"
145+ )
146+ message(STATUS \" Creating GP4 file\" )
147+ " )
148+ endif ()
149+ elseif (CMAKE_HOST_LINUX)
103150 string (REPLACE "\t " "\\ t" ESCAPED_PKG_TITLE "${PKG_TITLE} " )
104151 string (REPLACE "\" " "\\\" " ESCAPED_PKG_TITLE "${ESCAPED_PKG_TITLE} " )
105152 string (REPLACE "'" "\\ '" ESCAPED_PKG_TITLE "${ESCAPED_PKG_TITLE} " )
@@ -124,48 +171,33 @@ function(OpenOrbisPackage_PostProject)
124171 string (REPLACE "~" "\\ ~" ESCAPED_PKG_TITLE "${ESCAPED_PKG_TITLE} " )
125172 string (REPLACE "\n " "\\ n" ESCAPED_PKG_TITLE "${ESCAPED_PKG_TITLE} " )
126173
127- add_custom_command (TARGET ${PKG_TITLE_ID} POST_BUILD
128- COMMAND ${CMAKE_COMMAND} -E env "OO_PS4_TOOLCHAIN=${OO_PS4_TOOLCHAIN} "
129- "${INTEST_SOURCE_ROOT} /package.sh"
130- "${ESCAPED_PKG_TITLE} "
131- "${PKG_VERSION} "
132- "${PKG_TITLE_ID} "
133- "${PKG_CONTENT_ID} "
134- "${PKG_DOWNLOADSIZE} "
135- "${PKG_SYSVER} "
136- "${PKG_ATTRIBS1} "
137- "${PKG_ATTRIBS2} "
138- "${PKG_SHOULDBUILD} "
139- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} "
140- COMMENT "Running package.sh..."
141- )
142- else ()
143- message (FATAL_ERROR "Unsupported OS" )
144- endif ()
145-
146- get_filename_component (CURRENT_FOLDER_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME )
147-
148- if (NOT OO_PS4_NOPKG)
149- install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /${PKG_CONTENT_ID} .pkg
150- DESTINATION ${CMAKE_INSTALL_PREFIX} /${CURRENT_FOLDER_NAME} )
151- endif ()
152-
153- # install
154- install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /eboot.bin
155- DESTINATION ${CMAKE_INSTALL_PREFIX} /${CURRENT_FOLDER_NAME} )
156-
157- install (DIRECTORY
158- ${CMAKE_CURRENT_SOURCE_DIR} /sce_sys
159- DESTINATION ${CMAKE_INSTALL_PREFIX} /${CURRENT_FOLDER_NAME}
160- )
161-
162- install (DIRECTORY
163- ${CMAKE_CURRENT_SOURCE_DIR} /sce_module
164- DESTINATION ${CMAKE_INSTALL_PREFIX} /${CURRENT_FOLDER_NAME}
165- )
166-
167- install (DIRECTORY
168- ${CMAKE_CURRENT_SOURCE_DIR} /assets
169- DESTINATION ${CMAKE_INSTALL_PREFIX} /${CURRENT_FOLDER_NAME}
170- )
174+ add_custom_command (TARGET ${PKG_TITLE_ID} POST_BUILD
175+ COMMAND ${CMAKE_COMMAND} -E env "OO_PS4_TOOLCHAIN=${OO_PS4_TOOLCHAIN} "
176+ "${INTEST_SOURCE_ROOT} /patch_param.sh"
177+ "${ESCAPED_PKG_TITLE} "
178+ "${PKG_VERSION} "
179+ "${PKG_TITLE_ID} "
180+ "${PKG_CONTENT_ID} "
181+ "${PKG_DOWNLOADSIZE} "
182+ "${PKG_SYSVER} "
183+ "${PKG_ATTRIBS1} "
184+ "${PKG_ATTRIBS2} "
185+ "${PKG_SHOULDBUILD} "
186+ WORKING_DIRECTORY "${path_bin} "
187+ COMMENT "Patching param.sfo..."
188+ )
189+
190+ if (NOT OO_PS4_NOPKG)
191+ # create pkg
192+ install (CODE "
193+ execute_process(
194+ COMMAND \" ${INTEST_SOURCE_ROOT} /package.sh\" \" ${PKG_CONTENT_ID} \" \" ${OO_PS4_TOOLCHAIN} \"
195+ WORKING_DIRECTORY \" ${install_dir} \"
196+ )
197+ message(STATUS \" Creating GP4 file\" )
198+ " )
199+ endif ()
200+ else ()
201+ message (FATAL_ERROR "Unsupported OS" )
202+ endif ()
171203endfunction ()
0 commit comments