refactor(build): extract shared CMake target helpers

All 17 module CMakeLists repeated the same prologue: language standards, the
PS5 SDK header paths, a clang check, the cross-compile triple, the output
directory layout and an objcopy strip step. The triple appeared 17 times and
the strip block 6 times, each needing manual sync.

Add source/cmake/OnionTarget.cmake with onion_module_prologue,
onion_output_dirs and onion_strip_debug. Language standards stay opt-in
arguments because the loader-side C modules are C17 while the rest are C11,
and a shared default would silently downgrade them. Per-module compiler flags
are left alone since the modules genuinely differ.

Drop IS_SUBPROJECT and IS_CLANG, which were assigned in 11 and 6 modules
respectively and never read anywhere.

Add CONFIGURE_DEPENDS to the seven source-listing globs that lacked it, so a
newly added source file triggers a re-configure instead of being silently
omitted from the build.

Hoist -DDEBUG onto the shared C flags in the five modules that only passed it
to C++, so both languages in a target see the same macros. No .c file keys
off DEBUG today, so this changes no behaviour.

Compile and link flags were captured from build.ninja before and after: all
132 compile edges and 17 link edges are unchanged except for the intended
-DDEBUG addition.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
HexwellandClaude Fable 5 committed 2026-07-26 19:50:30 +08:00
1 parent dccfa2ddf0
commit 8db337607a
19 files changed
+170 -449

No files matched your search

+2
View File
@@ -3,6 +3,8 @@ cmake_minimum_required (VERSION 3.20)
project("OnionHEN")
set(PROJECT_ROOT "${CMAKE_CURRENT_SOURCE_DIR}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(OnionTarget)
get_filename_component(ONIONHEN_ROOT "${PROJECT_ROOT}/.." ABSOLUTE)
set(ONIONHEN_THIRD_PARTY_DIR "${ONIONHEN_ROOT}/third_party" CACHE PATH
"Third-party dependency source directory")
+7 -47
View File
@@ -3,33 +3,10 @@ cmake_minimum_required (VERSION 3.20)
set(basename "bootstrapper")
project(${basename} C CXX ASM)
# Language Standard Defaults
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 20)
# Check for sub-project as part of main build or external build
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(IS_SUBPROJECT TRUE)
else()
set(IS_SUBPROJECT FALSE)
endif()
message("IS_SUBPROJECT: ${IS_SUBPROJECT}")
onion_module_prologue(C_STANDARD 11 CXX_STANDARD 20)
set(D_CWD "${CMAKE_CURRENT_SOURCE_DIR}")
if(DEFINED ONIONHEN_OUT_BIN)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ONIONHEN_OUT_BIN})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${D_CWD}/../bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${D_CWD}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${D_CWD}/bin)
endif()
onion_output_dirs()
set(D_SRC ${D_CWD}/source)
# SVG menu icons are the source of truth. Rasterize them into the build tree so
@@ -97,20 +74,9 @@ foreach(_raster_icon IN ITEMS
list(APPEND _generated_icon_files "${_raster_output}")
endforeach()
# Headers
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}/include")
add_executable(${PROJECT_NAME})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}.elf")
# Must build with clang
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "[Cc]lang")
set(IS_CLANG 1)
else()
message(FATAL_ERROR "${PROJECT_NAME} is meant to be built with clang! CompilerID: ${CMAKE_CXX_COMPILER_ID}")
endif()
# Finalize main target sources
target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:C>:${C_DEFS} ${C_FLAGS}>
@@ -118,17 +84,15 @@ target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:ASM>:${ASM_FLAGS}>
)
message("========== build: ${PROJECT_NAME} ==========")
# Byepervisor removed from OnionHEN — bootstrapper sources only.
# pt.c / elfldr.c live in libonion_elfldr (raise_privileges + inject primitives).
file(GLOB SrcFiles ${D_SRC}/*.c ${D_SRC}/*.cpp ${D_SRC}/../include/*.h ${D_SRC}/../include/*.hpp ${D_SRC}/*.s ${ONIONHEN_COMMON_DIR}/backtrace.cpp)
file(GLOB SrcFiles CONFIGURE_DEPENDS ${D_SRC}/*.c ${D_SRC}/*.cpp ${D_SRC}/../include/*.h ${D_SRC}/../include/*.hpp ${D_SRC}/*.s ${ONIONHEN_COMMON_DIR}/backtrace.cpp)
list(FILTER SrcFiles EXCLUDE REGEX ".*/(pt|elfldr)\\.c$")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-keyword-macro -fPIC -fPIE -march=znver2 -Wall -Werror -fstack-protector-all")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -DDEBUG -gfull -gdwarf-2 -O0 -pedantic -pedantic-errors")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDEBUG")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -gfull -gdwarf-2 -O0 -pedantic -pedantic-errors")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
target_sources(${PROJECT_NAME} PRIVATE ${SrcFiles})
@@ -168,7 +132,6 @@ target_include_directories(${PROJECT_NAME} PRIVATE
target_link_directories (${PROJECT_NAME} PUBLIC "${ONIONHEN_PS5_STUB_DIR}")
target_sources(${PROJECT_NAME} PRIVATE "${ONIONHEN_COMMON_DIR}/elfldr_remote.c")
target_link_libraries (${PROJECT_NAME} PUBLIC onion_proc onion_platform onion_settings onion_payload onion_ready onion_elfldr SceNotification SceSystemService)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_custom_target(${PROJECT_NAME}_assets DEPENDS ${_generated_icon_files})
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_assets)
add_dependencies(${PROJECT_NAME} daemon util shellui onion_elfldr_server onion_proc onion_platform onion_settings onion_payload onion_ready onion_elfldr)
@@ -180,10 +143,7 @@ add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
)
# Add post-build command
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_OBJCOPY} --remove-section .debug_info --remove-section .debug_abbrev --remove-section .debug_line --remove-section .debug_str --remove-section .debug_loc --remove-section .debug_aranges --remove-section .debug_ranges --remove-section .debug_pubnames --remove-section .debug_pubtypes --remove-section .debug_frame --strip-unneeded $<TARGET_FILE:${PROJECT_NAME}>
COMMENT "Stripping debugging information from ${PROJECT_NAME}.elf"
)
onion_strip_debug(${PROJECT_NAME})
# Portable size + lzma pack (Linux GNU stat / macOS BSD stat; lzma or xz)
# PROJECT_ROOT is source/; pack script lives at repo scripts/
+105
View File
@@ -0,0 +1,105 @@
# OnionHEN shared CMake helpers.
#
# Every module under source/ used to repeat the same prologue: language
# standards, the PS5 SDK header paths, a clang check, the cross-compile target
# triple, the output directories, and an objcopy strip step. That was 17 copies
# of the triple, 11 of the IS_SUBPROJECT dance, 9 clang checks and 6 strip
# blocks — all of which had to be kept in sync by hand.
#
# Modules now call:
# onion_module_prologue() # standards + SDK includes + clang check
# onion_output_dirs() # bin/ and lib/ layout
# onion_strip_debug(<target>) # post-build objcopy (ELF targets only)
#
# Compiler flags stay per-module: the modules genuinely differ (libhijacker
# builds -O3 -fno-exceptions, shellui adds -pedantic, libNidResolver is
# -nostdlib). ONION_PS5_TARGET_FLAGS holds only the part that is identical
# everywhere, so a module composes it with its own flags rather than retyping
# the triple.
include_guard(GLOBAL)
# Cross-compile target + platform defines. Identical in all 17 modules.
# NOTE: no -march here — a few modules place it at a different position in
# their flag string, so they append it themselves.
set(ONION_PS5_TARGET_FLAGS
"--target=x86_64-sie-ps5 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW}")
# Same, with -march=znver2 folded in, which is what most modules want.
set(ONION_PS5_TARGET_FLAGS_MARCH
"--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW}")
# Language standards, PS5 SDK headers, and a compiler sanity check.
# A macro (not a function) so the CMAKE_* settings land in the caller's scope.
#
# Usage: onion_module_prologue([C_STANDARD <n>] [CXX_STANDARD <n>])
#
# The standards are opt-in because modules genuinely differ: the loader-side
# C modules (NidResolver, NineS, onion_elfldr, elfldr_server) are C17 while
# the rest are C11. Setting a default here would silently downgrade them.
macro(onion_module_prologue)
cmake_parse_arguments(_onion "" "C_STANDARD;CXX_STANDARD" "" ${ARGN})
if(DEFINED _onion_C_STANDARD)
set(CMAKE_C_STANDARD ${_onion_C_STANDARD})
set(CMAKE_C_STANDARD_REQUIRED ON)
endif()
if(DEFINED _onion_CXX_STANDARD)
set(CMAKE_CXX_STANDARD ${_onion_CXX_STANDARD})
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
endif()
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}/include")
# Check whichever language the module actually enabled — asking about
# CMAKE_CXX_COMPILER_ID in a `project(... C)` module reads as empty and
# would fail the check spuriously.
get_property(_onion_langs GLOBAL PROPERTY ENABLED_LANGUAGES)
if("CXX" IN_LIST _onion_langs)
set(_onion_compiler_id "${CMAKE_CXX_COMPILER_ID}")
else()
set(_onion_compiler_id "${CMAKE_C_COMPILER_ID}")
endif()
if(NOT "${_onion_compiler_id}" MATCHES "[Cc]lang")
message(FATAL_ERROR
"${PROJECT_NAME} must be built with clang! CompilerID: ${_onion_compiler_id}")
endif()
unset(_onion_langs)
unset(_onion_compiler_id)
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
endmacro()
# Artifact layout: ELFs to bin/, static libs to lib/. Falls back to a
# module-local directory for standalone (non-superbuild) configures.
macro(onion_output_dirs)
if(DEFINED ONIONHEN_OUT_BIN)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${ONIONHEN_OUT_BIN}")
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/../bin")
endif()
if(DEFINED ONIONHEN_OUT_LIB)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${ONIONHEN_OUT_LIB}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${ONIONHEN_OUT_LIB}")
else()
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/bin")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/bin")
endif()
endmacro()
# Drop DWARF sections from a linked ELF. Keeps the on-device payload small;
# the unstripped object files stay in the build tree for symbolication.
function(onion_strip_debug target)
add_custom_command(TARGET ${target} POST_BUILD
COMMAND ${CMAKE_OBJCOPY}
--remove-section .debug_info --remove-section .debug_abbrev
--remove-section .debug_line --remove-section .debug_str
--remove-section .debug_loc --remove-section .debug_aranges
--remove-section .debug_ranges --remove-section .debug_pubnames
--remove-section .debug_pubtypes --remove-section .debug_frame
--strip-unneeded $<TARGET_FILE:${target}>
COMMENT "Stripping debugging information from ${target}"
)
endfunction()
+7 -47
View File
@@ -3,49 +3,15 @@ cmake_minimum_required (VERSION 3.20)
set(basename "daemon")
project(${basename} C CXX ASM)
# Language Standard Defaults
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 20)
# Check for sub-project as part of main build or external build
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(IS_SUBPROJECT TRUE)
else()
set(IS_SUBPROJECT FALSE)
endif()
message("IS_SUBPROJECT: ${IS_SUBPROJECT}")
onion_module_prologue(C_STANDARD 11 CXX_STANDARD 20)
set(D_CWD "${CMAKE_CURRENT_SOURCE_DIR}")
if(DEFINED ONIONHEN_OUT_BIN)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ONIONHEN_OUT_BIN})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${D_CWD}/../bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${D_CWD}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${D_CWD}/bin)
endif()
onion_output_dirs()
set(D_SRC ${D_CWD}/source)
# Headers
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}/include")
add_executable(${PROJECT_NAME})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}.elf")
# Must build with clang
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "[Cc]lang")
set(IS_CLANG 1)
else()
message(FATAL_ERROR "${PROJECT_NAME} is meant to be built with clang! CompilerID: ${CMAKE_CXX_COMPILER_ID}")
endif()
# Finalize main target sources
target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:C>:${C_DEFS} ${C_FLAGS}>
@@ -53,14 +19,12 @@ target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:ASM>:${ASM_FLAGS}>
)
message("========== build: ${PROJECT_NAME} ==========")
file(GLOB SrcFiles CONFIGURE_DEPENDS ${D_SRC}/*.c ${D_SRC}/*.cpp ${D_SRC}/../include/*.h ${D_SRC}/../include/*.hpp ${D_SRC}/*.s ${ONIONHEN_THIRD_PARTY_DIR}/cjson/*.cpp ${ONIONHEN_THIRD_PARTY_DIR}/cjson/*.hpp ${ONIONHEN_COMMON_DIR}/backtrace.cpp)
file(GLOB SrcFiles ${D_SRC}/*.c ${D_SRC}/*.cpp ${D_SRC}/../include/*.h ${D_SRC}/../include/*.hpp ${D_SRC}/*.s ${ONIONHEN_THIRD_PARTY_DIR}/cjson/*.cpp ${ONIONHEN_THIRD_PARTY_DIR}/cjson/*.hpp ${ONIONHEN_COMMON_DIR}/backtrace.cpp)
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-keyword-macro -fPIC -fPIE -march=znver2 -Wall -Werror -fstack-protector-all")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -DDEBUG -gfull -gdwarf-2 -O0 -pedantic -pedantic-errors")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDEBUG")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -gfull -gdwarf-2 -O0 -pedantic -pedantic-errors")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 ")
target_sources(${PROJECT_NAME} PRIVATE ${SrcFiles} "${ONIONHEN_COMMON_DIR}/elfldr_remote.c")
@@ -96,9 +60,5 @@ target_link_directories (${PROJECT_NAME} PUBLIC "${ONIONHEN_PS5_STUB_DIR}")
add_dependencies(${PROJECT_NAME} onion_version util onion_elfldr_server NineS shellui hijacker onion_settings onion_ipc onion_proc onion_platform onion_ready onion_elfldr)
# Supervises private :9020 via external :9021, then restarts embedded util via :9020.
target_link_libraries (${PROJECT_NAME} PUBLIC onion_ipc onion_settings onion_proc onion_platform onion_ready onion_elfldr hijacker SceSystemService SceNotification SceUserService SceNetCtl SceSysCore kernel_sys NineS)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Add post-build command
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_OBJCOPY} --remove-section .debug_info --remove-section .debug_abbrev --remove-section .debug_line --remove-section .debug_str --remove-section .debug_loc --remove-section .debug_aranges --remove-section .debug_ranges --remove-section .debug_pubnames --remove-section .debug_pubtypes --remove-section .debug_frame --strip-unneeded $<TARGET_FILE:${PROJECT_NAME}>
COMMENT "Stripping debugging information from ${PROJECT_NAME}.elf"
)
onion_strip_debug(${PROJECT_NAME})
+3 -22
View File
@@ -9,29 +9,13 @@ cmake_minimum_required (VERSION 3.20)
set(basename "NidResolver")
project(${basename} C)
# Language Standard Defaults
set(CMAKE_C_STANDARD 17)
set(CMAKE_C_STANDARD_REQUIRED ON)
# Check for sub-project as part of main build or external build
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(IS_SUBPROJECT TRUE)
else()
set(IS_SUBPROJECT FALSE)
endif()
message("IS_SUBPROJECT: ${IS_SUBPROJECT}")
set(D_CWD "${PROJECT_SOURCE_DIR}")
# Headers
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}/include")
onion_module_prologue(C_STANDARD 17)
set(D_SRC ${D_CWD}/source)
file(GLOB SrcFiles ${D_SRC}/*.c ${D_SRC}/*.h)
file(GLOB SrcFiles CONFIGURE_DEPENDS ${D_SRC}/*.c ${D_SRC}/*.h)
add_library(${PROJECT_NAME} STATIC ${SrcFiles})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
@@ -41,12 +25,9 @@ target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:C>:${C_DEFS} ${C_FLAGS}>
)
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS_MARCH} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112 -D__BSD_VISIBLE=1 -D__XSI_VISIBLE=500")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin -nostdlib -Wall") # -nostartfiles
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -gfull -O3 -march=znver2 -Wall -Werror")
target_include_directories(${PROJECT_NAME} PRIVATE "${D_CWD}/../include")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+2 -21
View File
@@ -9,25 +9,9 @@ cmake_minimum_required (VERSION 3.20)
set(basename "NineS")
project(${basename} C)
# Language Standard Defaults
set(CMAKE_C_STANDARD 17)
set(CMAKE_C_STANDARD_REQUIRED ON)
# Check for sub-project as part of main build or external build
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(IS_SUBPROJECT TRUE)
else()
set(IS_SUBPROJECT FALSE)
endif()
message("IS_SUBPROJECT: ${IS_SUBPROJECT}")
set(D_CWD "${PROJECT_SOURCE_DIR}")
# Headers
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}/include")
onion_module_prologue(C_STANDARD 17)
set(D_SRC ${D_CWD}/src)
@@ -46,9 +30,7 @@ target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:C>:${C_DEFS} ${C_FLAGS}>
)
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS_MARCH} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112 -D__BSD_VISIBLE=1 -D__XSI_VISIBLE=500")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin -nostdlib -Wall") # -nostartfiles
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
@@ -75,4 +57,3 @@ if(TARGET onion_elfldr)
add_dependencies(${PROJECT_NAME} onion_elfldr)
target_link_libraries(${PROJECT_NAME} PUBLIC onion_elfldr)
endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+3 -36
View File
@@ -9,47 +9,19 @@ cmake_minimum_required (VERSION 3.20)
set(basename "hijacker")
project(${basename} C CXX ASM)
# Language Standard Defaults
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
onion_module_prologue(C_STANDARD 11 CXX_STANDARD 20)
if ("${CMAKE_CXX_STANDARD}" STREQUAL "")
set(CMAKE_CXX_STANDARD 20)
endif()
# Check for sub-project as part of main build or external build
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(IS_SUBPROJECT TRUE)
else()
set(IS_SUBPROJECT FALSE)
endif()
message("IS_SUBPROJECT: ${IS_SUBPROJECT}")
set(D_CWD "${PROJECT_SOURCE_DIR}")
# Headers
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}/include")
set(D_SRC ${D_CWD}/source)
file(GLOB SrcFiles ${D_SRC}/*.c ${D_SRC}/*.cpp ${D_SRC}/**/*.cpp ${D_SRC}/*.h ${D_SRC}/*.hpp ${D_SRC}/**/*.hpp ${D_SRC}/*.s)
file(GLOB SrcFiles CONFIGURE_DEPENDS ${D_SRC}/*.c ${D_SRC}/*.cpp ${D_SRC}/**/*.cpp ${D_SRC}/*.h ${D_SRC}/*.hpp ${D_SRC}/**/*.hpp ${D_SRC}/*.s)
add_library(${PROJECT_NAME} STATIC ${SrcFiles})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
# Must build with clang
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "[Cc]lang")
set(IS_CLANG 1)
else()
message(FATAL_ERROR "${PROJECT_NAME} is meant to be built with clang! CompilerID: ${CMAKE_CXX_COMPILER_ID}")
endif()
# Finalize main target sources
target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:C>:${C_DEFS} ${C_FLAGS}>
@@ -57,13 +29,8 @@ target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:ASM>:${ASM_FLAGS}>
)
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS_MARCH} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -fstack-protector-all")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -O3 -march=znver2 -Wall -Wextra -Wmove -Wmost -Werror -fno-exceptions")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g0 -O0")
target_include_directories(${PROJECT_NAME} PRIVATE "${D_CWD}/../include")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+2 -24
View File
@@ -7,25 +7,10 @@ cmake_minimum_required(VERSION 3.20)
set(basename "onion_detour")
project(${basename} C CXX)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(IS_SUBPROJECT TRUE)
else()
set(IS_SUBPROJECT FALSE)
endif()
message("IS_SUBPROJECT: ${IS_SUBPROJECT}")
onion_module_prologue(C_STANDARD 11 CXX_STANDARD 20)
set(D_CWD "${PROJECT_SOURCE_DIR}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}/include")
add_library(${PROJECT_NAME} STATIC
source/detour.cpp
source/hde64.cpp
@@ -35,13 +20,7 @@ add_library(${PROJECT_NAME} STATIC
)
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
if(NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "[Cc]lang")
message(FATAL_ERROR "${PROJECT_NAME} is meant to be built with clang! CompilerID: ${CMAKE_CXX_COMPILER_ID}")
endif()
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS_MARCH} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -fstack-protector-all")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -O2 -Wall -Wextra -Werror -fno-exceptions")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g0 -O2")
@@ -55,4 +34,3 @@ target_include_directories(${PROJECT_NAME}
# Logging symbols (shellui_log) come from onion_ipc at final link.
add_dependencies(${PROJECT_NAME} onion_ipc)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+2 -8
View File
@@ -7,12 +7,9 @@ cmake_minimum_required(VERSION 3.20)
set(basename "onion_elfldr")
project(${basename} C)
set(CMAKE_C_STANDARD 17)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(D_CWD "${PROJECT_SOURCE_DIR}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}/include")
onion_module_prologue(C_STANDARD 17)
add_library(${PROJECT_NAME} STATIC
source/pt.c
@@ -20,9 +17,7 @@ add_library(${PROJECT_NAME} STATIC
)
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS_MARCH} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112 -D__BSD_VISIBLE=1 -D__XSI_VISIBLE=500")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin -nostdlib -Wall -fPIC -gfull -O3")
@@ -34,4 +29,3 @@ target_include_directories(${PROJECT_NAME}
# Authid policy: no per-syscall flip in pt.c; injectors elevate once at entry.
target_compile_definitions(${PROJECT_NAME} PRIVATE ONION_ELFLDR_NO_PER_CALL_AUTHID=1)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+2 -24
View File
@@ -7,38 +7,17 @@ cmake_minimum_required(VERSION 3.20)
set(basename "onion_ipc")
project(${basename} C CXX)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(IS_SUBPROJECT TRUE)
else()
set(IS_SUBPROJECT FALSE)
endif()
message("IS_SUBPROJECT: ${IS_SUBPROJECT}")
onion_module_prologue(C_STANDARD 11 CXX_STANDARD 20)
set(D_CWD "${PROJECT_SOURCE_DIR}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}/include")
add_library(${PROJECT_NAME} STATIC
source/ipc_client.cpp
source/ipc_server.cpp
)
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
if(NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "[Cc]lang")
message(FATAL_ERROR "${PROJECT_NAME} is meant to be built with clang! CompilerID: ${CMAKE_CXX_COMPILER_ID}")
endif()
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS_MARCH} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -fstack-protector-all")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -O2 -Wall -Wextra -Werror -fno-exceptions")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g0 -O2")
@@ -52,4 +31,3 @@ target_include_directories(${PROJECT_NAME}
# cJSON symbols are provided by the final link unit (shellui already
# compile third_party/cjson into the ELF). Keep them unresolved here.
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+2 -9
View File
@@ -7,19 +7,13 @@ cmake_minimum_required(VERSION 3.20)
set(basename "onion_payload")
project(${basename} C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
onion_module_prologue(C_STANDARD 11)
set(D_CWD "${PROJECT_SOURCE_DIR}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}/include")
add_library(${PROJECT_NAME} STATIC source/payload.c)
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} -fPIC -fstack-protector-all -O2 -Wall -Wextra -Werror")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS_MARCH} -fPIC -fstack-protector-all -O2 -Wall -Wextra -Werror")
target_include_directories(${PROJECT_NAME}
PUBLIC "${D_CWD}/include"
@@ -32,4 +26,3 @@ target_include_directories(${PROJECT_NAME}
target_link_libraries(${PROJECT_NAME} PUBLIC onion_proc onion_platform)
add_dependencies(${PROJECT_NAME} onion_proc onion_platform)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+2 -9
View File
@@ -7,13 +7,9 @@ cmake_minimum_required(VERSION 3.20)
set(basename "onion_platform")
project(${basename} C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
onion_module_prologue(C_STANDARD 11)
set(D_CWD "${PROJECT_SOURCE_DIR}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}/include")
add_library(${PROJECT_NAME} STATIC
source/fs.c
source/log.c
@@ -23,8 +19,6 @@ add_library(${PROJECT_NAME} STATIC
)
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
message("========== build: ${PROJECT_NAME} ==========")
find_package(Python3 REQUIRED COMPONENTS Interpreter)
set(I18N_DIR "${D_CWD}/../i18n")
@@ -47,11 +41,10 @@ add_custom_command(
add_custom_target(onion_platform_i18n_catalog DEPENDS "${NOTIFY_I18N_CATALOG}")
add_dependencies(${PROJECT_NAME} onion_platform_i18n_catalog)
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} -fPIC -fstack-protector-all -O2 -Wall -Wextra -Werror")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS_MARCH} -fPIC -fstack-protector-all -O2 -Wall -Wextra -Werror")
target_include_directories(${PROJECT_NAME}
PUBLIC "${D_CWD}/include"
PRIVATE "${D_CWD}/../include" "${I18N_GENERATED_DIR}"
)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+2 -7
View File
@@ -1,20 +1,15 @@
cmake_minimum_required(VERSION 3.20)
set(basename "onion_proc")
project(${basename} C CXX)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(D_CWD "${PROJECT_SOURCE_DIR}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}/include")
onion_module_prologue(C_STANDARD 11 CXX_STANDARD 20)
add_library(${PROJECT_NAME} STATIC
source/proc.cpp
source/ucred.cpp
source/proc_query.cpp
)
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} -fPIC -fstack-protector-all")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS_MARCH} -fPIC -fstack-protector-all")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -O2 -Wall -Wextra -Werror -fno-exceptions")
target_include_directories(${PROJECT_NAME}
PUBLIC "${D_CWD}/include"
+2 -9
View File
@@ -2,22 +2,15 @@ cmake_minimum_required(VERSION 3.20)
set(basename "onion_ready")
project(${basename} C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
onion_module_prologue(C_STANDARD 11)
set(D_CWD "${PROJECT_SOURCE_DIR}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}/include")
add_library(${PROJECT_NAME} STATIC source/ready.c)
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} -fPIC -fstack-protector-all -O2 -Wall -Wextra -Werror")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS_MARCH} -fPIC -fstack-protector-all -O2 -Wall -Wextra -Werror")
target_include_directories(${PROJECT_NAME}
PUBLIC "${PROJECT_ROOT}/include"
)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+2 -24
View File
@@ -7,37 +7,16 @@ cmake_minimum_required(VERSION 3.20)
set(basename "onion_settings")
project(${basename} C CXX)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(IS_SUBPROJECT TRUE)
else()
set(IS_SUBPROJECT FALSE)
endif()
message("IS_SUBPROJECT: ${IS_SUBPROJECT}")
onion_module_prologue(C_STANDARD 11 CXX_STANDARD 20)
set(D_CWD "${PROJECT_SOURCE_DIR}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}/include")
add_library(${PROJECT_NAME} STATIC
source/settings.cpp
)
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
if(NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "[Cc]lang")
message(FATAL_ERROR "${PROJECT_NAME} is meant to be built with clang! CompilerID: ${CMAKE_CXX_COMPILER_ID}")
endif()
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -march=znver2 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS_MARCH} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -fstack-protector-all")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -O2 -Wall -Wextra -Werror -fno-exceptions")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g0 -O2")
@@ -47,4 +26,3 @@ target_include_directories(${PROJECT_NAME}
PRIVATE "${D_CWD}/../include"
)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+4 -22
View File
@@ -3,29 +3,15 @@ cmake_minimum_required(VERSION 3.20)
set(basename "onion_elfldr_server")
project(${basename} C)
set(CMAKE_C_STANDARD 17)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(D_CWD "${CMAKE_CURRENT_SOURCE_DIR}")
if(DEFINED ONIONHEN_OUT_BIN)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ONIONHEN_OUT_BIN})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${D_CWD}/../bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${D_CWD}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${D_CWD}/bin)
endif()
onion_output_dirs()
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories(SYSTEM "${PS5_PAYLOAD_SDK}/include")
onion_module_prologue(C_STANDARD 17)
add_executable(${PROJECT_NAME} source/main.c)
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "onion_elfldr.elf")
message("========== build: ${PROJECT_NAME} ==========")
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112 -D__BSD_VISIBLE=1 -D__XSI_VISIBLE=500")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-keyword-macro -fPIC -fPIE -march=znver2 -Wall -Werror -fstack-protector-all -O2")
@@ -37,8 +23,4 @@ target_link_directories(${PROJECT_NAME} PUBLIC "${ONIONHEN_PS5_STUB_DIR}")
add_dependencies(${PROJECT_NAME} onion_elfldr)
target_link_libraries(${PROJECT_NAME} PUBLIC onion_elfldr)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_OBJCOPY} --remove-section .debug_info --remove-section .debug_abbrev --remove-section .debug_line --remove-section .debug_str --remove-section .debug_loc --remove-section .debug_aranges --remove-section .debug_ranges --remove-section .debug_pubnames --remove-section .debug_pubtypes --remove-section .debug_frame --strip-unneeded $<TARGET_FILE:${PROJECT_NAME}>
COMMENT "Stripping debugging information from onion_elfldr.elf"
)
onion_strip_debug(${PROJECT_NAME})
+7 -49
View File
@@ -3,52 +3,15 @@ cmake_minimum_required (VERSION 3.20)
set(basename "shellui")
project(${basename} C CXX ASM)
# Language Standard Defaults
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 20)
# Check for sub-project as part of main build or external build
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(IS_SUBPROJECT TRUE)
else()
set(IS_SUBPROJECT FALSE)
endif()
message("IS_SUBPROJECT: ${IS_SUBPROJECT}")
onion_module_prologue(C_STANDARD 11 CXX_STANDARD 20)
set(D_CWD "${CMAKE_CURRENT_SOURCE_DIR}")
if(DEFINED ONIONHEN_OUT_BIN)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ONIONHEN_OUT_BIN})
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${D_CWD}/../bin)
endif()
if(DEFINED ONIONHEN_OUT_LIB)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
else()
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${D_CWD}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${D_CWD}/bin)
endif()
onion_output_dirs()
set(D_SRC ${D_CWD}/src)
# Headers
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}/include")
add_executable(${PROJECT_NAME})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}.elf")
# Must build with clang
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "[Cc]lang")
set(IS_CLANG 1)
else()
message(FATAL_ERROR "${PROJECT_NAME} is meant to be built with clang! CompilerID: ${CMAKE_CXX_COMPILER_ID}")
endif()
# Finalize main target sources
target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:C>:${C_DEFS} ${C_FLAGS}>
@@ -65,8 +28,6 @@ if(NOT ONIONHEN_SHELLUI_HOMEUI_TOP_NAV_PATCH)
message(STATUS "shellui: HomeUI top-nav patch DISABLED")
endif()
message("========== build: ${PROJECT_NAME} ==========")
find_package(Python3 REQUIRED COMPONENTS Interpreter)
set(I18N_DIR "${D_CWD}/../i18n")
@@ -88,11 +49,12 @@ add_custom_command(
)
add_custom_target(shellui_i18n_catalog DEPENDS "${I18N_CATALOG}")
file(GLOB SrcFiles ${D_SRC}/*.c ${D_SRC}/*.cpp ${D_SRC}/../include/*.h ${D_SRC}/../include/*.hpp ${D_SRC}/*.s ${ONIONHEN_THIRD_PARTY_DIR}/cjson/*.cpp ${ONIONHEN_THIRD_PARTY_DIR}/cjson/*.hpp ${ONIONHEN_COMMON_DIR}/backtrace.cpp)
file(GLOB SrcFiles CONFIGURE_DEPENDS ${D_SRC}/*.c ${D_SRC}/*.cpp ${D_SRC}/../include/*.h ${D_SRC}/../include/*.hpp ${D_SRC}/*.s ${ONIONHEN_THIRD_PARTY_DIR}/cjson/*.cpp ${ONIONHEN_THIRD_PARTY_DIR}/cjson/*.hpp ${ONIONHEN_COMMON_DIR}/backtrace.cpp)
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-nested-anon-types -Wno-gnu-anonymous-struct -Wno-zero-length-array -Wno-keyword-macro -fPIC -fPIE -march=znver2 -Wall -Werror -fstack-protector-all")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -DDEBUG -gfull -gdwarf-2 -O0 -pedantic -pedantic-errors")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDEBUG")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -gfull -gdwarf-2 -O0 -pedantic -pedantic-errors")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 ")
target_sources(${PROJECT_NAME} PRIVATE ${SrcFiles})
@@ -110,10 +72,6 @@ target_include_directories(${PROJECT_NAME} PRIVATE
)
target_link_directories (${PROJECT_NAME} PUBLIC "${ONIONHEN_PS5_STUB_DIR}")
target_link_libraries (${PROJECT_NAME} PUBLIC onion_detour onion_proc onion_platform onion_ipc onion_settings onion_ready SceRegMgr SceSystemService SceUserService SceNetCtl SceAppInstUtil)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Add post-build command
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_OBJCOPY} --remove-section .debug_info --remove-section .debug_abbrev --remove-section .debug_line --remove-section .debug_str --remove-section .debug_loc --remove-section .debug_aranges --remove-section .debug_ranges --remove-section .debug_pubnames --remove-section .debug_pubtypes --remove-section .debug_frame --strip-unneeded $<TARGET_FILE:${PROJECT_NAME}>
COMMENT "Stripping debugging information from ${PROJECT_NAME}.elf"
)
onion_strip_debug(${PROJECT_NAME})
+6 -48
View File
@@ -3,51 +3,16 @@ cmake_minimum_required (VERSION 3.20)
set(basename "unpacker")
project(${basename} C ASM)
# Language Standard Defaults
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 20)
# Check for sub-project as part of main build or external build
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(IS_SUBPROJECT TRUE)
else()
set(IS_SUBPROJECT FALSE)
endif()
message("IS_SUBPROJECT: ${IS_SUBPROJECT}")
onion_module_prologue(C_STANDARD 11 CXX_STANDARD 20)
set(D_CWD "${CMAKE_CURRENT_SOURCE_DIR}")
if(DEFINED ONIONHEN_OUT_BIN)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ONIONHEN_OUT_BIN})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${D_CWD}/../bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${D_CWD}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${D_CWD}/bin)
endif()
onion_output_dirs()
set(D_SRC ${D_CWD}/source)
# Headers
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}/include")
set(PROJECT_NAME OnionHEN)
add_executable(${PROJECT_NAME})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}.elf")
# Must build with clang
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "[Cc]lang")
set(IS_CLANG 1)
else()
message(FATAL_ERROR "${PROJECT_NAME} is meant to be built with clang! CompilerID: ${CMAKE_CXX_COMPILER_ID}")
endif()
# Finalize main target sources
target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:C>:${C_DEFS} ${C_FLAGS}>
@@ -55,10 +20,6 @@ target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:ASM>:${ASM_FLAGS}>
)
message("========== build: ${PROJECT_NAME} ==========")
set(LZMA_ROOT "${ONIONHEN_THIRD_PARTY_DIR}/7zip_sdk/C")
set(LZMA_LIB ${LZMA_ROOT}/LzmaLib.c ${LZMA_ROOT}/Alloc.c
${LZMA_ROOT}/LzmaEnc.c
@@ -72,9 +33,10 @@ set(LZMA_LIB ${LZMA_ROOT}/LzmaLib.c ${LZMA_ROOT}/Alloc.c
# main.c only — initial bootstrap is sent to external elfldr 9021.
set(SrcFiles ${D_SRC}/main.c ${LZMA_LIB})
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-keyword-macro -fPIC -fPIE -march=znver2 -Wall -Werror -fstack-protector-all")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -DDEBUG -O0")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDEBUG")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -O0")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
target_sources(${PROJECT_NAME} PRIVATE ${SrcFiles})
@@ -91,11 +53,7 @@ target_compile_definitions(${PROJECT_NAME} PRIVATE
ONIONHEN_BOOTSTRAPPER_LZMA="${ONIONHEN_OUT_BIN}/bootstrapper.elf.lzma"
ONIONHEN_BOOTSTRAPPER_SIZE="${ONIONHEN_OUT_BIN}/bootstrapper.elf.lzma.size"
)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_dependencies(${PROJECT_NAME} bootstrapper)
# Add post-build command
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_OBJCOPY} --remove-section .debug_info --remove-section .debug_abbrev --remove-section .debug_line --remove-section .debug_str --remove-section .debug_loc --remove-section .debug_aranges --remove-section .debug_ranges --remove-section .debug_pubnames --remove-section .debug_pubtypes --remove-section .debug_frame --strip-unneeded $<TARGET_FILE:${PROJECT_NAME}>
COMMENT "Stripping debugging information from ${PROJECT_NAME}.elf"
)
onion_strip_debug(${PROJECT_NAME})
+8 -43
View File
@@ -4,54 +4,22 @@ set(basename "util")
project(${basename} C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 20)
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(IS_SUBPROJECT TRUE)
else()
set(IS_SUBPROJECT FALSE)
endif()
message("IS_SUBPROJECT: ${IS_SUBPROJECT}")
onion_module_prologue(C_STANDARD 11 CXX_STANDARD 20)
set(D_CWD "${CMAKE_CURRENT_SOURCE_DIR}")
if(DEFINED ONIONHEN_OUT_BIN)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ONIONHEN_OUT_BIN})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ONIONHEN_OUT_LIB})
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${D_CWD}/../bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${D_CWD}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${D_CWD}/bin)
endif()
onion_output_dirs()
set(D_SRC ${D_CWD}/source)
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}")
include_directories (SYSTEM "${PS5_PAYLOAD_SDK}/include")
add_executable(${PROJECT_NAME})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}.elf")
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "[Cc]lang")
set(IS_CLANG 1)
else()
message(FATAL_ERROR "${PROJECT_NAME} is meant to be built with clang! CompilerID: ${CMAKE_CXX_COMPILER_ID}")
endif()
target_compile_options(${PROJECT_NAME} PUBLIC
$<$<COMPILE_LANGUAGE:C>:${C_DEFS} ${C_FLAGS}>
$<$<COMPILE_LANGUAGE:CXX>:${CXX_DEFS} ${CXX_FLAGS}>
$<$<COMPILE_LANGUAGE:ASM>:${ASM_FLAGS}>
)
message("========== build: ${PROJECT_NAME} ==========")
file(GLOB SrcFiles
file(GLOB SrcFiles CONFIGURE_DEPENDS
${D_SRC}/*.c
${D_SRC}/*.cpp
${D_SRC}/cheats/*.c
@@ -65,9 +33,10 @@ file(GLOB SrcFiles
${ONIONHEN_COMMON_DIR}/backtrace.cpp
)
set(CMAKE_C_FLAGS "--target=x86_64-sie-ps5 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${ONION_PS5_TARGET_FLAGS} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-keyword-macro -fPIC -fPIE -march=znver2 -Wall -Werror -fstack-protector-all -Wno-unused-const-variable -Wno-deprecated-declarations")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -DDEBUG -gfull -gdwarf-2 -O0 -pedantic -pedantic-errors")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDEBUG")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -gfull -gdwarf-2 -O0 -pedantic -pedantic-errors")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
target_sources(${PROJECT_NAME} PRIVATE ${SrcFiles} "${ONIONHEN_COMMON_DIR}/elfldr_remote.c")
@@ -114,13 +83,9 @@ set_source_files_properties(
${ONIONHEN_THIRD_PARTY_DIR}/cheat_support/sha256.c
PROPERTIES COMPILE_FLAGS "-Wno-error -Wno-unused-function -Wno-sign-compare -Wno-unused-parameter"
)
file(GLOB CHEAT_ENGINE_SRCS ${D_SRC}/cheats/*.c)
file(GLOB CHEAT_ENGINE_SRCS CONFIGURE_DEPENDS ${D_SRC}/cheats/*.c)
set_source_files_properties(${CHEAT_ENGINE_SRCS} PROPERTIES
COMPILE_FLAGS "-Wno-error -Wno-unused-parameter -Wno-sign-compare"
)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_OBJCOPY} --remove-section .debug_info --remove-section .debug_abbrev --remove-section .debug_line --remove-section .debug_str --remove-section .debug_loc --remove-section .debug_aranges --remove-section .debug_ranges --remove-section .debug_pubnames --remove-section .debug_pubtypes --remove-section .debug_frame --strip-unneeded $<TARGET_FILE:${PROJECT_NAME}>
COMMENT "Stripping debugging information from ${PROJECT_NAME}.elf"
)
onion_strip_debug(${PROJECT_NAME})