diff --git a/archives/archives.txt b/archives/archives.txt index d0f49b9..1466688 100644 --- a/archives/archives.txt +++ b/archives/archives.txt @@ -31,3 +31,6 @@ b6ae1ee2fa3d42ac489287d3ec34c5885730b1296f0801ae577a35193d3affbc 1903175 https: - - https://github.com/sahlberg/libsmb2/tarball/master -> libsmb2.tar.gz - - https://github.com/clienthax/psl1ght/tarball/master -> psl1ght.tar.gz - - https://github.com/bucanero/pthread-emb-ps3/tarball/master -> pthread-emb-ps3.tar.gz +- - https://github.com/onesixromcom/SDL/tarball/ps3-rsx-ps3dev -> sdl3.tar.gz +182a07c745375e113dc740d43964ff21b0be29f29f59876c4dbc4db3d32f6901 5161139 https://github.com/libsdl-org/SDL_mixer/releases/download/release-3.2.4/SDL3_mixer-3.2.4.tar.gz +63547d58d0185c833213885b635a2c0548201cc8f301e6587c0be1a67e1e045d 1545950 https://github.com/libsdl-org/SDL_ttf/releases/download/release-3.2.2/SDL3_ttf-3.2.2.tar.gz diff --git a/cmake/ps3-toolchain.cmake b/cmake/ps3-toolchain.cmake new file mode 100644 index 0000000..e3067d6 --- /dev/null +++ b/cmake/ps3-toolchain.cmake @@ -0,0 +1,70 @@ +# +# CMake platform file for PS3 PPC processor +# + +cmake_minimum_required(VERSION 3.0...3.12) + +include(${CMAKE_CURRENT_LIST_DIR}/ps3dev.cmake) + +string(JOIN " " PPC_CFLAGS_STR ${PPC_CFLAGS}) +string(JOIN " " PPC_LDFLAGS_STR ${PPC_LDFLAGS}) +string(JOIN " " PPC_LIBS_STR ${PPC_LIBS}) +list(TRANSFORM PPC_INC PREPEND "-I" OUTPUT_VARIABLE PPC_INC_FLAGS) +string(JOIN " " PPC_INC_STR ${PPC_INC_FLAGS}) +list(TRANSFORM PPC_LIB PREPEND "-I" OUTPUT_VARIABLE PPC_LIB_FLAGS) +string(JOIN " " PPC_LIB_STR ${PPC_LIB_FLAGS}) + +set(CMAKE_C_FLAGS_INIT "${PPC_CFLAGS_STR} ${PPC_INC_STR}") +set(CMAKE_CXX_FLAGS_INIT ${CMAKE_C_FLAGS_INIT}) +set(CMAKE_EXE_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT} "${PPC_LDFLAGS_STR} ${PPC_LIB_STR}") +set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} "${PPC_LIBS_STR}") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + +set(CMAKE_INSTALL_PREFIX "$ENV{PS3DEV}/portlibs/ppu" CACHE PATH "" FORCE) +set(CMAKE_PREFIX_PATH "$ENV{PS3DEV}/portlibs/ppu" CACHE PATH "" FORCE) + +add_definitions(-DPS3) +set(PS3 TRUE) + +# SDL3 +set(SDL_TESTS FALSE) +set(SDL_EXAMPLES FALSE) +set(SDL_TEST_LIBRARY FALSE) +set(SDL_STATIC ON) +set(SDL_GPU OFF) +set(SDL_CAMERA OFF) +set(SDL_HAPTIC OFF) +set(SDL_HIDAPI OFF) +set(SDL_POWER OFF) +set(SDL_SENSOR OFF) +set(SDL_DIALOG OFF) +set(SDL_DISKAUDIO OFF) +set(SDL_DUMMYAUDIO OFF) +set(SDL_DUMMYCAMERA OFF) +set(SDL_DUMMYVIDEO OFF) +set(SDL_OFFSCREEN OFF) +set(SDL_RENDER_GPU OFF) +set(SDL_TRAY OFF) +set(SDL_VIRTUAL_JOYSTICK OFF) + +# SDL3_mixer +set(BUILD_SHARED_LIBS OFF) +set(SDLMIXER_TESTS OFF) +set(SDLMIXER_TESTS_INSTALL OFF) +set(SDLMIXER_EXAMPLES OFF) +set(SDLMIXER_OPUS OFF) +set(SDLMIXER_VORBIS_VORBISFILE OFF) +set(SDLMIXER_WAVPACK OFF) +set(SDLMIXER_FLAC OFF) +set(SDLMIXER_MP3_MPG123 OFF) +set(SDLMIXER_GME OFF) +set(SDLMIXER_MIDI_TIMIDITY OFF) + +# SDL3_ttf +set(SDLTTF_VENDORED ON) +set(SDLTTF_HARFBUZZ OFF) +set(SDLTTF_SAMPLES OFF) diff --git a/depends/check-cmake.sh b/depends/check-cmake.sh new file mode 100755 index 0000000..21be1d1 --- /dev/null +++ b/depends/check-cmake.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# check-cmake.sh + +## Check for cmake. +cmake --version 1> /dev/null || { echo "ERROR: Install cmake before continuing."; exit 1; } diff --git a/libraries.sh b/libraries.sh index 6076f8b..b7bef70 100755 --- a/libraries.sh +++ b/libraries.sh @@ -1,6 +1,13 @@ #!/bin/sh # libraries.sh by Naomi Peori (naomi@peori.ca) +## Copy share file. +if [ ! -f "$PS3DEV/share/ps3dev.cmake" ]; then + cp -r ./share "$PS3DEV/" +fi + +exit + ## Enter the ps3libraries directory. cd "`dirname $0`" || { echo "ERROR: Could not enter the ps3libraries directory."; exit 1; } diff --git a/patches/SDL3_ttf-1.patch b/patches/SDL3_ttf-1.patch new file mode 100644 index 0000000..72c66a3 --- /dev/null +++ b/patches/SDL3_ttf-1.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7b27db8..35e1251 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -71,7 +71,7 @@ include(GNUInstallDirs) + include(CheckSymbolExists) + + set(PLATFORM_SUPPORTS_SHARED ON) +-if(EMSCRIPTEN OR VITA OR PSP OR PS2 OR N3DS OR RISCOS) ++if(EMSCRIPTEN OR VITA OR PSP OR PS2 OR PS3 OR N3DS OR RISCOS) + set(PLATFORM_SUPPORTS_SHARED OFF) + endif() + diff --git a/scripts/033-sdl3.sh b/scripts/033-sdl3.sh new file mode 100755 index 0000000..abbe4bd --- /dev/null +++ b/scripts/033-sdl3.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +set -eo pipefail +# SDL3 by 16rom.com + +SDL3="SDL3_3.4.14" +## Source util functions +source ../utils/utils.sh + +## Download the source code. +../download.sh sdl3.tar.gz + +## Unpack the source code. +rm -Rf ${SDL3} +mkdir ${SDL3} +echo "Unpacking ${SDL3}" +extract ../archives/sdl3.tar.gz --strip-components=1 --directory=${SDL3} +cd ${SDL3} +mkdir -p build-ppc +cd build-ppc + +cmake -DCMAKE_TOOLCHAIN_FILE="../../cmake/ps3-toolchain.cmake" -DCMAKE_BUILD_TYPE=Release .. +cmake --build . +cmake --install . diff --git a/scripts/034-sdl3_mixer.sh b/scripts/034-sdl3_mixer.sh new file mode 100755 index 0000000..156237c --- /dev/null +++ b/scripts/034-sdl3_mixer.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +set -eo pipefail +# SDL3 by 16rom.com + +SDL3_MIXER="SDL3_mixer_3.2.4" +## Source util functions +source ../utils/utils.sh + +## Download the source code. +../download.sh SDL3_mixer-3.2.4.tar.gz + +## Unpack the source code. +rm -Rf ${SDL3_MIXER} +mkdir ${SDL3_MIXER} +echo "Unpacking ${SDL3_MIXER}" +extract ../archives/SDL3_mixer-3.2.4.tar.gz --strip-components=1 --directory=${SDL3_MIXER} +cd ${SDL3_MIXER} +mkdir -p build-ppc +cd build-ppc + +cmake -DCMAKE_TOOLCHAIN_FILE="../../cmake/ps3-toolchain.cmake" -DCMAKE_BUILD_TYPE=Release .. +cmake --build . +cmake --install . diff --git a/scripts/035-sdl3_ttf.sh b/scripts/035-sdl3_ttf.sh new file mode 100755 index 0000000..8687e11 --- /dev/null +++ b/scripts/035-sdl3_ttf.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +set -eo pipefail +# SDL3_ttf by 16rom.com + +SDL3_TTF="SDL3_ttf-3.2.2" +## Source util functions +source ../utils/utils.sh + +## Download the source code. +../download.sh ${SDL3_TTF}.tar.gz + +## Unpack the source code. +rm -Rf ${SDL3_TTF} +mkdir ${SDL3_TTF} +echo "Unpacking ${SDL3_TTF}" +extract ../archives/${SDL3_TTF}.tar.gz --strip-components=1 --directory=${SDL3_TTF} +cd ${SDL3_TTF} + +## Patch the source code. +echo "Patching ${SDL3_TTF} for compatibility..." +cat ../../patches/SDL3_ttf-1.patch | patch -p1 + +# Download vendored libs +./external/download.sh + +mkdir -p build-ppc +cd build-ppc + +cmake -DCMAKE_TOOLCHAIN_FILE="../../cmake/ps3-toolchain.cmake" -DCMAKE_BUILD_TYPE=Release .. +cmake --build . +cmake --install . diff --git a/share/createPKG.cmake b/share/createPKG.cmake new file mode 100644 index 0000000..24a7d00 --- /dev/null +++ b/share/createPKG.cmake @@ -0,0 +1,134 @@ +cmake_minimum_required(VERSION 3.10) + +# --------------------------------------------------------------------------- +# ps3_create_pkg_file +# +# Packages a PS3 ELF/SELF target into a signed .pkg. +# +# Usage: +# +# add_executable(mygame main.c) +# ps3_create_pkg_file( +# TARGET mygame +# TITLE "My Game" +# APPID "TEST00001" +# CONTENTID "UP0001-TEST00001_00-0000000000000000" +# ICON0 "${CMAKE_SOURCE_DIR}/assets/ICON0.PNG" +# SFOXML "${CMAKE_SOURCE_DIR}/assets/sfo.xml" +# ) +# +# All arguments except TARGET are optional and fall back to sane defaults, +# matching the variables at the top of the original Makefile. Any of them +# can be overridden per-call, and PS3DEV-relative defaults can be +# overridden globally by setting the corresponding cache variable before +# calling the macro (e.g. -DPS3_DEFAULT_ICON0=... on the cmake command line). +# --------------------------------------------------------------------------- + +set(PS3_DEFAULT_APPID "TEST00001" CACHE STRING "Default PS3 APPID") +set(PS3_DEFAULT_ICON0 "$ENV{PS3DEV}/bin/ICON0.PNG" CACHE FILEPATH "Default ICON0.PNG path") +set(PS3_DEFAULT_SFOXML "$ENV{PS3DEV}/bin/sfo.xml" CACHE FILEPATH "Default sfo.xml path") + +set(MAKE_SELF_NPDRM_EXECUTABLE "$ENV{PS3DEV}/bin/make_self_npdrm") +set(SFO_EXECUTABLE "$ENV{PS3DEV}/bin/sfo") +set(PKG_EXECUTABLE "$ENV{PS3DEV}/bin/pkg") + +macro(ps3_create_pkg_file) + + set(options) + set(oneValueArgs + TARGET # required, defined by add_executable() before calling ps3_create_pkg_file + TITLE # optional, string, title shown in the PS3 XMB + APPID # optional, e.g. "TEST00001" + CONTENTID # optional, e.g. "UP0001-_00-0000000000000000" + ICON0 # optional, absolute path to ICON0.PNG + SFOXML # optional, absolute path to sfo.xml template + OUTPUT_DIR # optional, directory the final .pkg is written to + OUTPUT_NAME # optional, filename (without extension) of the final .pkg + ) + set(multiValueArgs) + + cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if(NOT DEFINED ARG_TARGET) + message(FATAL_ERROR "create_pkg_file: TARGET must be defined") + endif() + + if(NOT TARGET ${ARG_TARGET}) + message(FATAL_ERROR "create_pkg_file: '${ARG_TARGET}' is not a defined CMake target (call add_executable() first)") + endif() + + if(NOT DEFINED ARG_TITLE) + set(ARG_TITLE "${ARG_TARGET}") + endif() + + if(NOT DEFINED ARG_APPID) + set(ARG_APPID "${PS3_DEFAULT_APPID}") + endif() + + if(NOT DEFINED ARG_CONTENTID) + set(ARG_CONTENTID "UP0001-${ARG_APPID}_00-0000000000000000") + endif() + + if(NOT DEFINED ARG_ICON0) + set(ARG_ICON0 "${PS3_DEFAULT_ICON0}") + endif() + + if(NOT DEFINED ARG_SFOXML) + set(ARG_SFOXML "${PS3_DEFAULT_SFOXML}") + endif() + + if(NOT DEFINED ARG_OUTPUT_DIR) + set(ARG_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}") + endif() + + if(NOT DEFINED ARG_OUTPUT_NAME) + set(ARG_OUTPUT_NAME "${ARG_TARGET}") + endif() + + set(PS3_PKG_STAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/${ARG_TARGET}.pkgdir") + set(PS3_PKG_FILE "${ARG_OUTPUT_DIR}/${ARG_OUTPUT_NAME}.pkg") + + add_custom_command( + TARGET ${ARG_TARGET} + POST_BUILD + + # fresh staging tree (mirrors `rm -Rf pkg && mkdir -p pkg/USRDIR`) + COMMAND ${CMAKE_COMMAND} -E remove_directory "${PS3_PKG_STAGE_DIR}" + COMMAND ${CMAKE_COMMAND} -E make_directory "${PS3_PKG_STAGE_DIR}/USRDIR" + + # cp $(ICON0) pkg + COMMAND ${CMAKE_COMMAND} -E copy "${ARG_ICON0}" "${PS3_PKG_STAGE_DIR}/ICON0.PNG" + + # make_self_npdrm $< pkg/USRDIR/EBOOT.BIN $(CONTENTID) + COMMAND "${MAKE_SELF_NPDRM_EXECUTABLE}" + "$" + "${PS3_PKG_STAGE_DIR}/USRDIR/EBOOT.BIN" + "${ARG_CONTENTID}" + + # sfo --title .. --appid .. -f sfo.xml pkg/PARAM.SFO + COMMAND "${SFO_EXECUTABLE}" + --title "${ARG_TITLE}" + --appid "${ARG_APPID}" + -f "${ARG_SFOXML}" + "${PS3_PKG_STAGE_DIR}/PARAM.SFO" + + COMMAND ${CMAKE_COMMAND} -E make_directory "${ARG_OUTPUT_DIR}" + + # pkg --contentid $(CONTENTID) pkg/ $@ + COMMAND "${PKG_EXECUTABLE}" + --contentid "${ARG_CONTENTID}" + "${PS3_PKG_STAGE_DIR}/" + "${PS3_PKG_FILE}" + + # rm -Rf pkg + COMMAND ${CMAKE_COMMAND} -E remove_directory "${PS3_PKG_STAGE_DIR}" + + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + COMMENT "Building PS3 package ${PS3_PKG_FILE}" + VERBATIM + ) + + unset(PS3_PKG_STAGE_DIR) + unset(PS3_PKG_FILE) + +endmacro() \ No newline at end of file diff --git a/share/createSELF.cmake b/share/createSELF.cmake new file mode 100644 index 0000000..ce10b90 --- /dev/null +++ b/share/createSELF.cmake @@ -0,0 +1,126 @@ +cmake_minimum_required(VERSION 3.10) + +# --------------------------------------------------------------------------- +# ps3_create_self_file +# +# Runs the PSL1GHT post-build steps needed to turn a plain PPU ELF target +# into a signed SELF (and optionally a fake SELF for use with PS3 loaders), +# equivalent to: +# +# sprxlinker $ +# powerpc64-ps3-elf-strip --strip-debug $ -o +# make_self .self +# fself .fake.self +# +# Usage: +# +# add_executable(mygame main.c) +# ps3_create_self_file(TARGET mygame) +# +# Optional arguments let you skip steps or change output locations: +# +# ps3_create_self_file( +# TARGET mygame +# OUTPUT_DIR "${CMAKE_BINARY_DIR}/pkg/USRDIR" +# OUTPUT_NAME EBOOT +# NO_SPRXLINK # skip the sprxlinker OPD-fixup step +# NO_STRIP # skip stripping, package the raw ELF instead +# NO_FSELF # don't build the fake SELF +# ) +# --------------------------------------------------------------------------- + +if(NOT DEFINED PS3DEV) + set(PS3DEV "$ENV{PS3DEV}") +endif() + +find_program(SPRXLINKER_EXECUTABLE NAMES sprxlinker PATHS "${PS3DEV}/bin") +find_program(MAKE_SELF_EXECUTABLE NAMES make_self PATHS "${PS3DEV}/bin") +find_program(FSELF_EXECUTABLE NAMES fself PATHS "${PS3DEV}/bin") +find_program(PPU_STRIP_EXECUTABLE NAMES powerpc64-ps3-elf-strip PATHS "${PS3DEV}/ppu/bin") + +macro(ps3_create_self_file) + + set(oneValueArgs + TARGET # required, defined by add_executable() before calling create_self_file + OUTPUT_DIR # optional, directory the .self/.fake.self are written to (default: target's own output dir) + OUTPUT_NAME # optional, base filename, without extension (default: target name) + STRIP_FLAGS # optional, flags passed to the PPU strip tool (default: --strip-debug) + ) + set(multiValueArgs) + + cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if(NOT DEFINED ARG_TARGET) + message(FATAL_ERROR "ps3_create_self_file: TARGET must be defined") + endif() + + if(NOT TARGET ${ARG_TARGET}) + message(FATAL_ERROR "ps3_create_self_file: '${ARG_TARGET}' is not a defined CMake target (call add_executable() first)") + endif() + + if(NOT DEFINED ARG_OUTPUT_NAME) + set(ARG_OUTPUT_NAME "${ARG_TARGET}") + endif() + + if(NOT DEFINED ARG_STRIP_FLAGS) + set(ARG_STRIP_FLAGS "--strip-debug") + endif() + + if(NOT ARG_NO_SPRXLINK AND NOT SPRXLINKER_EXECUTABLE) + message(FATAL_ERROR "ps3_create_self_file: sprxlinker not found, is PS3DEV set and in PATH?") + endif() + if(NOT ARG_NO_STRIP AND NOT PPU_STRIP_EXECUTABLE) + message(FATAL_ERROR "ps3_create_self_file: powerpc64-ps3-elf-strip not found, is PS3DEV set and in PATH?") + endif() + if(NOT MAKE_SELF_EXECUTABLE) + message(FATAL_ERROR "ps3_create_self_file: make_self not found, is PS3DEV set and in PATH?") + endif() + if(NOT ARG_NO_FSELF AND NOT FSELF_EXECUTABLE) + message(FATAL_ERROR "ps3_create_self_file: fself not found, is PS3DEV set and in PATH?") + endif() + + if(DEFINED ARG_OUTPUT_DIR) + set(PS3_SELF_OUT_DIR "${ARG_OUTPUT_DIR}") + else() + set(PS3_SELF_OUT_DIR "$") + endif() + + set(PS3_SELF_WORK_ELF "${PS3_SELF_OUT_DIR}/${ARG_OUTPUT_NAME}") + + if(ARG_NO_STRIP) + set(PS3_SELF_PACKAGE_ELF "${PS3_SELF_WORK_ELF}") + else() + set(PS3_SELF_PACKAGE_ELF "${PS3_SELF_OUT_DIR}/${ARG_OUTPUT_NAME}.stripped.elf") + endif() + + set(PS3_SELF_FILE "${PS3_SELF_OUT_DIR}/${ARG_OUTPUT_NAME}.self") + set(PS3_FSELF_FILE "${PS3_SELF_OUT_DIR}/${ARG_OUTPUT_NAME}.fake.self") + + add_custom_command( + TARGET ${ARG_TARGET} + POST_BUILD + COMMAND echo "Running PS3 post-build steps..." + + # 1. Fix OPD relocations FIRST, before anything else + COMMAND ${SPRXLINKER_EXECUTABLE} ${PS3_SELF_WORK_ELF} + + # 2. Strip AFTER sprxlinker, preserve OPD with -R flag + COMMAND ${PPU_STRIP_EXECUTABLE} + --strip-debug + ${PS3_SELF_WORK_ELF} + -o ${PS3_SELF_PACKAGE_ELF} + + # 3. Package the STRIPPED elf into SELF + COMMAND ${MAKE_SELF_EXECUTABLE} ${PS3_SELF_PACKAGE_ELF} ${PS3_SELF_FILE} + COMMAND ${FSELF_EXECUTABLE} ${PS3_SELF_PACKAGE_ELF} ${PS3_FSELF_FILE} + + COMMAND echo "Done: ${PS3_SELF_FILE}" + ) + + unset(PS3_SELF_OUT_DIR) + unset(PS3_SELF_WORK_ELF) + unset(PS3_SELF_PACKAGE_ELF) + unset(PS3_SELF_FILE) + unset(PS3_FSELF_FILE) + +endmacro() \ No newline at end of file diff --git a/share/ps3dev.cmake b/share/ps3dev.cmake new file mode 100644 index 0000000..1cd60b7 --- /dev/null +++ b/share/ps3dev.cmake @@ -0,0 +1,62 @@ +# +# CMake platform file for PS3 PPC processor +# + +cmake_minimum_required(VERSION 3.0...3.12) + +if(DEFINED ENV{PS3DEV}) + set(PS3DEV $ENV{PS3DEV}) +else() + message(FATAL_ERROR "The environment variable PS3DEV needs to be defined.") +endif() + +set(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_SYSTEM_PROCESSOR powerpc64) + +set(CMAKE_C_COMPILER powerpc64-ps3-elf-gcc) +set(CMAKE_CXX_COMPILER powerpc64-ps3-elf-g++) +set(CMAKE_ASM_COMPILER powerpc64-ps3-elf-g++) + +set(PPC_INC + ${PS3DEV}/ppu/include + ${PS3DEV}/ppu/include/simdmath + ${PS3DEV}/portlibs/ppu/include +) +set(PPC_LIB + ${PS3DEV}/ppu/lib + ${PS3DEV}/ppu/ppu/lib + ${PS3DEV}/portlibs/ppu/lib +) + +set(PPC_MACHDEP -mhard-float -fmodulo-sched -ffunction-sections -fdata-sections) +set(PPC_CFLAGS -O2 -Wall -mcpu=cell ${PPC_MACHDEP}) +set(PPC_LDFLAGS -Wl,-zmax-page-size=128) +set(PPC_LIBS -lgcm_sys -lrsx -lsysutil -lio -lm -lz -lrt -llv2 -laudio) + +set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE) + +add_compile_definitions(PS3 __PS3__) +set(PS3 1) + +macro(ps3_target_setup target) + target_compile_options(${target} PRIVATE + ${PPC_CFLAGS} + ) + target_link_options(${target} PRIVATE + ${PPC_LDFLAGS} + ) + target_link_directories(${target} PRIVATE + ${PPC_LIB} + ) + target_include_directories(${target} PUBLIC + ${PPC_INC} + ) + target_link_libraries(${target} PUBLIC + ${PPC_LIBS} + ) +endmacro() + +include("${PS3DEV}/share/createSELF.cmake") +include("${PS3DEV}/share/createPKG.cmake") +