From 83a8c5794bf0c514edc965df66a396534615a551 Mon Sep 17 00:00:00 2001 From: Diogo Autilio Date: Sun, 16 Nov 2025 09:51:32 -0300 Subject: [PATCH] ci: add CMake sample builds --- .github/scripts/setup_pspdev.sh | 27 ++++++++- .github/workflows/Build.yml | 16 +++++- .gitignore | 1 + samples/OSK/CMakeLists.txt | 50 ++++++++++++++++ samples/OSK/CMakePresets.json | 21 +++++++ samples/adhoc/CMakeLists.txt | 51 +++++++++++++++++ samples/adhoc/CMakePresets.json | 21 +++++++ samples/dialog/CMakeLists.txt | 51 +++++++++++++++++ samples/dialog/CMakePresets.json | 21 +++++++ samples/helloWorld/CMakeLists.txt | 70 +++++++++++++++++++++++ samples/helloWorld/CMakePresets.json | 21 +++++++ samples/internetBrowser/CMakeLists.txt | 51 +++++++++++++++++ samples/internetBrowser/CMakePresets.json | 21 +++++++ samples/internetBrowser/README.cmake.md | 8 +++ samples/intraFont/CMakeLists.txt | 50 ++++++++++++++++ samples/intraFont/CMakePresets.json | 21 +++++++ samples/map/CMakeLists.txt | 50 ++++++++++++++++ samples/map/CMakePresets.json | 21 +++++++ samples/net/CMakeLists.txt | 51 +++++++++++++++++ samples/net/CMakePresets.json | 21 +++++++ samples/rectAndFonts/CMakeLists.txt | 51 +++++++++++++++++ samples/rectAndFonts/CMakePresets.json | 21 +++++++ samples/saveAndLoad/CMakeLists.txt | 50 ++++++++++++++++ samples/saveAndLoad/CMakePresets.json | 21 +++++++ samples/sfont/CMakeLists.txt | 50 ++++++++++++++++ samples/sfont/CMakePresets.json | 21 +++++++ samples/shapes/CMakeLists.txt | 50 ++++++++++++++++ samples/shapes/CMakePresets.json | 21 +++++++ 28 files changed, 927 insertions(+), 2 deletions(-) create mode 100644 samples/OSK/CMakeLists.txt create mode 100644 samples/OSK/CMakePresets.json create mode 100644 samples/adhoc/CMakeLists.txt create mode 100644 samples/adhoc/CMakePresets.json create mode 100644 samples/dialog/CMakeLists.txt create mode 100644 samples/dialog/CMakePresets.json create mode 100644 samples/helloWorld/CMakeLists.txt create mode 100644 samples/helloWorld/CMakePresets.json create mode 100644 samples/internetBrowser/CMakeLists.txt create mode 100644 samples/internetBrowser/CMakePresets.json create mode 100644 samples/internetBrowser/README.cmake.md create mode 100644 samples/intraFont/CMakeLists.txt create mode 100644 samples/intraFont/CMakePresets.json create mode 100644 samples/map/CMakeLists.txt create mode 100644 samples/map/CMakePresets.json create mode 100644 samples/net/CMakeLists.txt create mode 100644 samples/net/CMakePresets.json create mode 100644 samples/rectAndFonts/CMakeLists.txt create mode 100644 samples/rectAndFonts/CMakePresets.json create mode 100644 samples/saveAndLoad/CMakeLists.txt create mode 100644 samples/saveAndLoad/CMakePresets.json create mode 100644 samples/sfont/CMakeLists.txt create mode 100644 samples/sfont/CMakePresets.json create mode 100644 samples/shapes/CMakeLists.txt create mode 100644 samples/shapes/CMakePresets.json diff --git a/.github/scripts/setup_pspdev.sh b/.github/scripts/setup_pspdev.sh index 2bbe9a0..21d9c2e 100755 --- a/.github/scripts/setup_pspdev.sh +++ b/.github/scripts/setup_pspdev.sh @@ -51,4 +51,29 @@ if command -v brew >/dev/null 2>&1; then fi echo "PSPDEV setup complete: $PSPDEV_PATH" -echo "PSP toolchain ready to use." \ No newline at end of file +echo "PSP toolchain ready to use." + +# Ensure CMake is available (install if missing) +if ! command -v cmake >/dev/null 2>&1; then + echo "CMake not found. Installing..." + case "$OS" in + ubuntu-*) + sudo apt-get update + sudo apt-get install -y cmake + ;; + macos-*) + if ! command -v brew >/dev/null 2>&1; then + echo "Homebrew not found on macOS runner; cannot install CMake automatically." + exit 1 + fi + brew update + brew install cmake + ;; + *) + echo "CMake auto-install not supported on OS: $OS" + exit 1 + ;; + esac +fi + +cmake --version || true \ No newline at end of file diff --git a/.github/workflows/Build.yml b/.github/workflows/Build.yml index 4ceff7b..b4eeee8 100644 --- a/.github/workflows/Build.yml +++ b/.github/workflows/Build.yml @@ -36,7 +36,7 @@ jobs: make make install - - name: Build all samples + - name: Build all samples (Vanilla Makefile) run: | set -euo pipefail for d in samples/*/ ; do @@ -45,3 +45,17 @@ jobs: make -C "$d" fi done + + - name: Build all samples (CMake) + run: | + set -euo pipefail + for d in samples/*/ ; do + if [ -f "$d/CMakeLists.txt" ]; then + echo "Building (CMake) $d" + ( + cd "$d" + cmake --preset psp + cmake --build --preset psp -j + ) + fi + done diff --git a/.gitignore b/.gitignore index ba06bde..ea99442 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ samples/**/*.elf samples/**/*.PBP samples/**/*.prx samples/**/*.SFO +samples/**/cbuild # Ignore documentation directory doc/html diff --git a/samples/OSK/CMakeLists.txt b/samples/OSK/CMakeLists.txt new file mode 100644 index 0000000..d599214 --- /dev/null +++ b/samples/OSK/CMakeLists.txt @@ -0,0 +1,50 @@ +cmake_minimum_required(VERSION 3.10) +project(OSK C) + +add_executable(osk main.c) + +# Link OSLib and PSP SDK libs (SDK libs last) +target_link_libraries(osk PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan +) + +# Ensure PSP SDK lib search paths +execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPDIR OUTPUT_STRIP_TRAILING_WHITESPACE) +if(PSPDIR) + target_link_directories(osk PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(osk PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +set_target_properties(osk PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "OSK test") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET osk POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" VERBATIM) +endif() + +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET osk POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + else() + add_custom_command(TARGET osk POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + endif() +endforeach() diff --git a/samples/OSK/CMakePresets.json b/samples/OSK/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/OSK/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +} diff --git a/samples/adhoc/CMakeLists.txt b/samples/adhoc/CMakeLists.txt new file mode 100644 index 0000000..4091450 --- /dev/null +++ b/samples/adhoc/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required(VERSION 3.10) +project(adhoc C) + +add_executable(adhoc main.c) + +# Link OSLib and PSP SDK libs (SDK libs last) +target_link_libraries(adhoc PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan + pspnet pspnet_apctl pspnet_adhoc pspnet_adhocctl pspnet_adhocmatching +) + +# Ensure PSP SDK lib search paths +execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPDIR OUTPUT_STRIP_TRAILING_WHITESPACE) +if(PSPDIR) + target_link_directories(adhoc PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(adhoc PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +set_target_properties(adhoc PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "Ad hoc sample") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET adhoc POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" VERBATIM) +endif() + +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET adhoc POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + else() + add_custom_command(TARGET adhoc POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + endif() +endforeach() diff --git a/samples/adhoc/CMakePresets.json b/samples/adhoc/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/adhoc/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +} diff --git a/samples/dialog/CMakeLists.txt b/samples/dialog/CMakeLists.txt new file mode 100644 index 0000000..f8ae1d2 --- /dev/null +++ b/samples/dialog/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required(VERSION 3.10) +project(dialog C) + +add_executable(dialog main.c) + +# Link OSLib and PSP SDK libs (SDK libs last) +target_link_libraries(dialog PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan + pspnet pspnet_apctl +) + +# Ensure PSP SDK lib search paths +execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPDIR OUTPUT_STRIP_TRAILING_WHITESPACE) +if(PSPDIR) + target_link_directories(dialog PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(dialog PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +set_target_properties(dialog PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "Dialog test") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET dialog POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" VERBATIM) +endif() + +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET dialog POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + else() + add_custom_command(TARGET dialog POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + endif() +endforeach() diff --git a/samples/dialog/CMakePresets.json b/samples/dialog/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/dialog/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +} diff --git a/samples/helloWorld/CMakeLists.txt b/samples/helloWorld/CMakeLists.txt new file mode 100644 index 0000000..ef5ead8 --- /dev/null +++ b/samples/helloWorld/CMakeLists.txt @@ -0,0 +1,70 @@ +cmake_minimum_required(VERSION 3.10) +project(helloWorld C) + +# Build executable from sample sources +add_executable(helloworld main.c) + +# Link against installed OSLib and PSP SDK libs; put SDK libs last +target_link_libraries(helloworld PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan + pspnet_adhoc pspnet_adhocctl pspnet_adhocmatching +) + +# Ensure PSP SDK lib search paths are available to the linker +execute_process( + COMMAND psp-config --psp-prefix + OUTPUT_VARIABLE PSPDIR + OUTPUT_STRIP_TRAILING_WHITESPACE +) +if(PSPDIR) + # Some CMake+toolchain combos may ignore link_directories; ensure via explicit -L + target_link_directories(helloworld PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(helloworld PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +# Outputs go to the build directory for this sample +set_target_properties(helloworld PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +# PSP packaging tools +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) +find_program(PSP_PRXGEN psp-prxgen) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "Hello World") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET helloworld POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" + VERBATIM) +endif() + +# Copy assets (non-source files) to OUT_DIR +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET helloworld POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${CMAKE_CURRENT_SOURCE_DIR}/${F}" + "${OUT_DIR}/${F}" + VERBATIM) + else() + add_custom_command(TARGET helloworld POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${CMAKE_CURRENT_SOURCE_DIR}/${F}" + "${OUT_DIR}/${F}" + VERBATIM) + endif() +endforeach() diff --git a/samples/helloWorld/CMakePresets.json b/samples/helloWorld/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/helloWorld/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +} diff --git a/samples/internetBrowser/CMakeLists.txt b/samples/internetBrowser/CMakeLists.txt new file mode 100644 index 0000000..3f77fe7 --- /dev/null +++ b/samples/internetBrowser/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required(VERSION 3.10) +project(internetBrowser C) + +add_executable(internetbrowser main.c) + +# Link OSLib and PSP SDK libs (SDK libs last) +target_link_libraries(internetbrowser PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan + pspnet pspnet_apctl pspnet_inet +) + +# Ensure PSP SDK lib search paths +execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPDIR OUTPUT_STRIP_TRAILING_WHITESPACE) +if(PSPDIR) + target_link_directories(internetbrowser PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(internetbrowser PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +set_target_properties(internetbrowser PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "Internet Browser test") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET internetbrowser POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" VERBATIM) +endif() + +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET internetbrowser POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + else() + add_custom_command(TARGET internetbrowser POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + endif() +endforeach() diff --git a/samples/internetBrowser/CMakePresets.json b/samples/internetBrowser/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/internetBrowser/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +} diff --git a/samples/internetBrowser/README.cmake.md b/samples/internetBrowser/README.cmake.md new file mode 100644 index 0000000..79f330e --- /dev/null +++ b/samples/internetBrowser/README.cmake.md @@ -0,0 +1,8 @@ +Build this sample with CMake (standalone): + +```bash +cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=../../cmake/PSP.cmake +cmake --build build -j +``` + +Outputs: `build/EBOOT.PBP` and copied assets. diff --git a/samples/intraFont/CMakeLists.txt b/samples/intraFont/CMakeLists.txt new file mode 100644 index 0000000..5e78785 --- /dev/null +++ b/samples/intraFont/CMakeLists.txt @@ -0,0 +1,50 @@ +cmake_minimum_required(VERSION 3.10) +project(intraFont C) + +add_executable(testIntraFont main.c) + +# Link OSLib and PSP SDK libs (SDK libs last) +target_link_libraries(testIntraFont PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan +) + +# Ensure PSP SDK lib search paths +execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPDIR OUTPUT_STRIP_TRAILING_WHITESPACE) +if(PSPDIR) + target_link_directories(testIntraFont PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(testIntraFont PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +set_target_properties(testIntraFont PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "intraFont Test") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET testIntraFont POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" VERBATIM) +endif() + +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET testIntraFont POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + else() + add_custom_command(TARGET testIntraFont POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + endif() +endforeach() diff --git a/samples/intraFont/CMakePresets.json b/samples/intraFont/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/intraFont/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +} diff --git a/samples/map/CMakeLists.txt b/samples/map/CMakeLists.txt new file mode 100644 index 0000000..461474e --- /dev/null +++ b/samples/map/CMakeLists.txt @@ -0,0 +1,50 @@ +cmake_minimum_required(VERSION 3.10) +project(map C) + +add_executable(maps main.c) + +# Link OSLib and PSP SDK libs (SDK libs last) +target_link_libraries(maps PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan +) + +# Ensure PSP SDK lib search paths +execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPDIR OUTPUT_STRIP_TRAILING_WHITESPACE) +if(PSPDIR) + target_link_directories(maps PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(maps PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +set_target_properties(maps PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "Map sample") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET maps POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" VERBATIM) +endif() + +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET maps POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + else() + add_custom_command(TARGET maps POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + endif() +endforeach() diff --git a/samples/map/CMakePresets.json b/samples/map/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/map/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +} diff --git a/samples/net/CMakeLists.txt b/samples/net/CMakeLists.txt new file mode 100644 index 0000000..65bbdc2 --- /dev/null +++ b/samples/net/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required(VERSION 3.10) +project(net C) + +add_executable(net main.c) + +# Link OSLib and PSP SDK libs (SDK libs last) +target_link_libraries(net PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan + pspnet pspnet_apctl pspnet_inet pspnet_resolver +) + +# Ensure PSP SDK lib search paths +execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPDIR OUTPUT_STRIP_TRAILING_WHITESPACE) +if(PSPDIR) + target_link_directories(net PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(net PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +set_target_properties(net PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "Net test") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET net POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" VERBATIM) +endif() + +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET net POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + else() + add_custom_command(TARGET net POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + endif() +endforeach() diff --git a/samples/net/CMakePresets.json b/samples/net/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/net/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +} diff --git a/samples/rectAndFonts/CMakeLists.txt b/samples/rectAndFonts/CMakeLists.txt new file mode 100644 index 0000000..d76c104 --- /dev/null +++ b/samples/rectAndFonts/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required(VERSION 3.10) +project(rectAndFonts C) + +# Keep target name consistent with original makefile +add_executable(dialog main.c) + +# Link OSLib and PSP SDK libs (SDK libs last) +target_link_libraries(dialog PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan +) + +# Ensure PSP SDK lib search paths +execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPDIR OUTPUT_STRIP_TRAILING_WHITESPACE) +if(PSPDIR) + target_link_directories(dialog PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(dialog PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +set_target_properties(dialog PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "Rect and Fonts Test") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET dialog POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" VERBATIM) +endif() + +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET dialog POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + else() + add_custom_command(TARGET dialog POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + endif() +endforeach() diff --git a/samples/rectAndFonts/CMakePresets.json b/samples/rectAndFonts/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/rectAndFonts/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +} diff --git a/samples/saveAndLoad/CMakeLists.txt b/samples/saveAndLoad/CMakeLists.txt new file mode 100644 index 0000000..0c83dc6 --- /dev/null +++ b/samples/saveAndLoad/CMakeLists.txt @@ -0,0 +1,50 @@ +cmake_minimum_required(VERSION 3.10) +project(saveAndLoad C) + +add_executable(saveandload main.c) + +# Link OSLib and PSP SDK libs (SDK libs last) +target_link_libraries(saveandload PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan +) + +# Ensure PSP SDK lib search paths +execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPDIR OUTPUT_STRIP_TRAILING_WHITESPACE) +if(PSPDIR) + target_link_directories(saveandload PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(saveandload PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +set_target_properties(saveandload PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "Save And Load Test") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET saveandload POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" VERBATIM) +endif() + +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET saveandload POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + else() + add_custom_command(TARGET saveandload POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + endif() +endforeach() diff --git a/samples/saveAndLoad/CMakePresets.json b/samples/saveAndLoad/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/saveAndLoad/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +} diff --git a/samples/sfont/CMakeLists.txt b/samples/sfont/CMakeLists.txt new file mode 100644 index 0000000..499c43d --- /dev/null +++ b/samples/sfont/CMakeLists.txt @@ -0,0 +1,50 @@ +cmake_minimum_required(VERSION 3.10) +project(sfont C) + +add_executable(sfont main.c) + +# Link OSLib and PSP SDK libs (SDK libs last) +target_link_libraries(sfont PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan +) + +# Ensure PSP SDK lib search paths +execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPDIR OUTPUT_STRIP_TRAILING_WHITESPACE) +if(PSPDIR) + target_link_directories(sfont PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(sfont PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +set_target_properties(sfont PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "SFont test") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET sfont POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" VERBATIM) +endif() + +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET sfont POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + else() + add_custom_command(TARGET sfont POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + endif() +endforeach() diff --git a/samples/sfont/CMakePresets.json b/samples/sfont/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/sfont/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +} diff --git a/samples/shapes/CMakeLists.txt b/samples/shapes/CMakeLists.txt new file mode 100644 index 0000000..dc1617e --- /dev/null +++ b/samples/shapes/CMakeLists.txt @@ -0,0 +1,50 @@ +cmake_minimum_required(VERSION 3.10) +project(shapes C CXX) + +add_executable(shapes main.cpp) + +# Link OSLib and PSP SDK libs (SDK libs last) +target_link_libraries(shapes PRIVATE + osl + png jpeg z m + pspdisplay pspge pspuser pspdebug + pspsdk pspctrl psphprm pspumd psprtc pspgu pspgum pspaudiolib pspaudio pspaudiocodec psppower pspusb pspusbstor psputility pspssl psphttp pspwlan +) + +# Ensure PSP SDK lib search paths +execute_process(COMMAND psp-config --psp-prefix OUTPUT_VARIABLE PSPDIR OUTPUT_STRIP_TRAILING_WHITESPACE) +if(PSPDIR) + target_link_directories(shapes PRIVATE "${PSPDIR}/sdk/lib" "${PSPDIR}/lib") + target_link_options(shapes PRIVATE "-L${PSPDIR}/sdk/lib" "-L${PSPDIR}/lib") +endif() + +set_target_properties(shapes PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + +find_program(MKSFOEX mksfoex) +find_program(PACKPBP pack-pbp) + +set(OUT_DIR "${CMAKE_BINARY_DIR}") +set(PARAM_SFO "${OUT_DIR}/PARAM.SFO") +set(EBOOT_PBP "${OUT_DIR}/EBOOT.PBP") +set(TITLE "Hello World") + +if(MKSFOEX AND PACKPBP) + add_custom_command(TARGET shapes POST_BUILD + COMMAND ${MKSFOEX} "${TITLE}" "${PARAM_SFO}" + COMMAND ${PACKPBP} "${EBOOT_PBP}" "${PARAM_SFO}" NULL NULL NULL NULL NULL $ NULL + BYPRODUCTS "${PARAM_SFO}" "${EBOOT_PBP}" + COMMENT "Packaging EBOOT.PBP (ELF)" VERBATIM) +endif() + +file(GLOB SAMPLE_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*") +foreach(F ${SAMPLE_FILES}) + string(TOLOWER "${F}" F_LC) + if(F_LC MATCHES "\\.(c|h|o|elf|prx|pbp)$" OR F_LC STREQUAL "makefile") + continue() + endif() + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${F}") + add_custom_command(TARGET shapes POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + else() + add_custom_command(TARGET shapes POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/${F}" "${OUT_DIR}/${F}" VERBATIM) + endif() +endforeach() diff --git a/samples/shapes/CMakePresets.json b/samples/shapes/CMakePresets.json new file mode 100644 index 0000000..3883d83 --- /dev/null +++ b/samples/shapes/CMakePresets.json @@ -0,0 +1,21 @@ +{ + "version": 4, + "cmakeMinimumRequired": { "major": 3, "minor": 16 }, + "configurePresets": [ + { + "name": "psp", + "displayName": "PSP (Unix Makefiles)", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/cbuild", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../../cmake/PSP.cmake" + } + } + ], + "buildPresets": [ + { + "name": "psp", + "configurePreset": "psp" + } + ] +}