mirror of
https://github.com/aydencharles/onionHEN.git
synced 2026-10-22 03:42:46 -05:00
134 lines
4.5 KiB
CMake
134 lines
4.5 KiB
CMake
cmake_minimum_required (VERSION 3.20)
|
|
|
|
set(basename "util")
|
|
|
|
project(${basename} C CXX ASM)
|
|
|
|
onion_module_prologue(C_STANDARD 11 CXX_STANDARD 20)
|
|
|
|
set(D_CWD "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
onion_output_dirs()
|
|
set(D_SRC ${D_CWD}/source)
|
|
|
|
add_executable(${PROJECT_NAME})
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "util.elf")
|
|
|
|
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}>
|
|
)
|
|
|
|
file(GLOB SrcFiles CONFIGURE_DEPENDS
|
|
${D_SRC}/*.c
|
|
${D_SRC}/*.cpp
|
|
${D_SRC}/cheats/*.c
|
|
${D_SRC}/cheats/*.cpp
|
|
${D_SRC}/cheats/sync/*.cpp
|
|
${ONIONHEN_THIRD_PARTY_DIR}/cheat_support/*.c
|
|
${D_SRC}/../include/*.h
|
|
${D_SRC}/../include/*.hpp
|
|
${D_SRC}/*.s
|
|
${ONIONHEN_THIRD_PARTY_DIR}/cjson/*.cpp
|
|
${ONIONHEN_THIRD_PARTY_DIR}/cjson/*.hpp
|
|
|
|
)
|
|
|
|
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 -ffunction-sections -fdata-sections")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -gfull -gdwarf-2 -pedantic -pedantic-errors")
|
|
set(CMAKE_C_FLAGS_RELEASE "-Os -DNDEBUG")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "-Os -DNDEBUG")
|
|
|
|
target_sources(${PROJECT_NAME} PRIVATE ${SrcFiles}
|
|
"${ONIONHEN_COMMON_DIR}/elfldr_remote.c")
|
|
onion_target_debug_define(${PROJECT_NAME})
|
|
target_include_directories(${PROJECT_NAME} PRIVATE
|
|
"${D_CWD}/include"
|
|
"${ONIONHEN_THIRD_PARTY_DIR}/cjson"
|
|
# miniz / sha256 / mc4 headers live beside their vendored .c files.
|
|
"${ONIONHEN_THIRD_PARTY_DIR}/cheat_support"
|
|
"${ONIONHEN_THIRD_PARTY_DIR}/keystone/include"
|
|
"${PROJECT_ROOT}/libhijacker/include"
|
|
"${PROJECT_ROOT}/libonion_settings/include"
|
|
"${PROJECT_ROOT}/libonion_ipc/include"
|
|
"${PROJECT_ROOT}/libonion_proc/include"
|
|
"${PROJECT_ROOT}/libonion_platform/include"
|
|
"${PROJECT_ROOT}/libonion_payload/include"
|
|
"${PROJECT_ROOT}/libonion_elfldr/include"
|
|
"${PROJECT_ROOT}/include"
|
|
)
|
|
# CBC for MC4 / ShnExt AES
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE CBC=1)
|
|
set(ONION_CURL_ROOT "${PS5_PAYLOAD_SDK}/target/user/homebrew")
|
|
set(ONION_CURL_CA_BUNDLE "${ONION_CURL_ROOT}/etc/ca-bundle.crt")
|
|
if(NOT EXISTS "${ONION_CURL_ROOT}/include/curl/curl.h" OR
|
|
NOT EXISTS "${ONION_CURL_ROOT}/lib/libcurl.a" OR
|
|
NOT EXISTS "${ONION_CURL_CA_BUNDLE}")
|
|
message(FATAL_ERROR
|
|
"PS5 payload SDK libcurl and CA bundle are required for cheat catalog HTTP "
|
|
"(looked in ${ONION_CURL_ROOT}).")
|
|
endif()
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
|
CURL_STATICLIB
|
|
ONION_CURL_CA_BUNDLE="${ONION_CURL_CA_BUNDLE}"
|
|
)
|
|
target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE
|
|
"${ONION_CURL_ROOT}/include")
|
|
# The CA bundle is embedded with .incbin, which is invisible to the compiler's
|
|
# normal dependency scanner.
|
|
set_source_files_properties(
|
|
"${D_SRC}/cheats/sync/http_transport_ps5.cpp"
|
|
PROPERTIES OBJECT_DEPENDS "${ONION_CURL_CA_BUNDLE}"
|
|
)
|
|
target_link_directories(${PROJECT_NAME} PUBLIC
|
|
"${ONIONHEN_PS5_STUB_DIR}"
|
|
"${ONIONHEN_THIRD_PARTY_DIR}/keystone/lib"
|
|
"${ONION_CURL_ROOT}/lib"
|
|
"${PS5_PAYLOAD_SDK}/target/lib"
|
|
)
|
|
target_link_options(${PROJECT_NAME} PRIVATE "-Wl,--gc-sections" "-Wl,--icf=safe")
|
|
add_dependencies(${PROJECT_NAME} hijacker onion_settings onion_ipc onion_proc onion_platform onion_payload onion_ready onion_elfldr)
|
|
# keystone: ShnExt ASM only
|
|
target_link_libraries(${PROJECT_NAME} PUBLIC
|
|
onion_ipc
|
|
onion_settings
|
|
onion_proc
|
|
onion_platform
|
|
onion_payload
|
|
onion_ready
|
|
onion_elfldr
|
|
keystone
|
|
hijacker
|
|
SceSystemService
|
|
SceUserService
|
|
SceNotification
|
|
SceNetCtl
|
|
SceNet
|
|
kernel_sys
|
|
curl
|
|
psl
|
|
ssl
|
|
crypto
|
|
zstd
|
|
z
|
|
)
|
|
set_source_files_properties(
|
|
${ONIONHEN_THIRD_PARTY_DIR}/cheat_support/aes.c
|
|
${ONIONHEN_THIRD_PARTY_DIR}/cheat_support/base64.c
|
|
${ONIONHEN_THIRD_PARTY_DIR}/cheat_support/miniz.c
|
|
${ONIONHEN_THIRD_PARTY_DIR}/cheat_support/sha256.c
|
|
PROPERTIES COMPILE_FLAGS "-Wno-error -Wno-unused-function -Wno-sign-compare -Wno-unused-parameter"
|
|
)
|
|
# miniz.h ships static-inline helpers that trip PS5's global -Werror in C++.
|
|
set_source_files_properties(
|
|
${D_SRC}/cheats/sync/zip_archive.cpp
|
|
PROPERTIES COMPILE_FLAGS "-Wno-error -Wno-unused-function -Wno-sign-compare -Wno-unused-parameter"
|
|
)
|
|
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"
|
|
)
|
|
|
|
onion_strip_debug(${PROJECT_NAME})
|