aboutsummaryrefslogtreecommitdiff
path: root/examples/cdrom
diff options
context:
space:
mode:
authorJohn "Lameguy" Wilbert Villamor <lameguy64@gmail.com>2021-10-15 09:22:45 +0800
committerGitHub <noreply@github.com>2021-10-15 09:22:45 +0800
commitdd0f088aaa4c6bf013643be2d1d8621dbffdb000 (patch)
treed848d6ce007d8bb9357c8b99d6a0a39ec41d244e /examples/cdrom
parent9e08d1047fa8deeb3ccb3ce9bb11d69e25a52d56 (diff)
parenteb719a424e6a16fb64209139a32c9f8a7235a929 (diff)
downloadpsn00bsdk-dd0f088aaa4c6bf013643be2d1d8621dbffdb000.tar.gz
Merge pull request #38 from spicyjpeg/cmake
Full CMake support (in place of makefiles)
Diffstat (limited to 'examples/cdrom')
-rw-r--r--examples/cdrom/cdbrowse/CMakeLists.txt27
-rw-r--r--examples/cdrom/cdbrowse/iso.xml12
-rw-r--r--examples/cdrom/cdbrowse/makefile65
-rw-r--r--examples/cdrom/cdxa/CMakeLists.txt29
-rw-r--r--examples/cdrom/cdxa/iso.xml14
-rw-r--r--examples/cdrom/cdxa/makefile65
6 files changed, 69 insertions, 143 deletions
diff --git a/examples/cdrom/cdbrowse/CMakeLists.txt b/examples/cdrom/cdbrowse/CMakeLists.txt
new file mode 100644
index 0000000..6eb4cbb
--- /dev/null
+++ b/examples/cdrom/cdbrowse/CMakeLists.txt
@@ -0,0 +1,27 @@
+# PSn00bSDK example CMake script
+# (C) 2021 spicyjpeg - MPL licensed
+
+cmake_minimum_required(VERSION 3.21)
+
+if(NOT DEFINED CMAKE_TOOLCHAIN_FILE AND DEFINED ENV{PSN00BSDK_LIBS})
+ set(CMAKE_TOOLCHAIN_FILE $ENV{PSN00BSDK_LIBS}/cmake/sdk.cmake)
+endif()
+
+project(
+ cdbrowse
+ LANGUAGES C
+ VERSION 1.0.0
+ DESCRIPTION "PSn00bSDK CD file browser example"
+ HOMEPAGE_URL "http://lameguy64.net/?page=psn00bsdk"
+)
+
+file(GLOB _sources *.c)
+psn00bsdk_add_executable(cdbrowse STATIC ${_sources})
+psn00bsdk_add_cd_image(cdbrowse_iso cdbrowse iso.xml DEPENDS cdbrowse)
+
+install(
+ FILES
+ ${PROJECT_BINARY_DIR}/cdbrowse.bin
+ ${PROJECT_BINARY_DIR}/cdbrowse.cue
+ DESTINATION .
+)
diff --git a/examples/cdrom/cdbrowse/iso.xml b/examples/cdrom/cdbrowse/iso.xml
index 5d8963d..5ffca18 100644
--- a/examples/cdrom/cdbrowse/iso.xml
+++ b/examples/cdrom/cdbrowse/iso.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<iso_project
- image_name="build/cdbrowse.bin"
- cue_sheet="build/cdbrowse.cue"
+ image_name="${CD_IMAGE_NAME}.bin"
+ cue_sheet="${CD_IMAGE_NAME}.cue"
>
<track type="data">
<identifiers
@@ -9,15 +9,15 @@
volume ="CDBROWSE"
volume_set ="CDBROWSE"
publisher ="MEIDOTEK"
- data_preparer ="PSN00BSDK BUILD SCRIPT"
+ data_preparer ="PSN00BSDK ${PSN00BSDK_VERSION}"
application ="PLAYSTATION"
copyright ="README.TXT;1"
/>
<directory_tree>
- <file name="SYSTEM.CNF" type="data" source="system.cnf" />
- <file name="CDBROWSE.EXE" type="data" source="build/cdbrowse.exe" />
- <file name="CDBROWSE.MAP" type="data" source="build/cdbrowse.map" />
+ <file name="SYSTEM.CNF" type="data" source="${PROJECT_SOURCE_DIR}/system.cnf" />
+ <file name="CDBROWSE.EXE" type="data" source="cdbrowse.exe" />
+ <file name="CDBROWSE.MAP" type="data" source="cdbrowse.map" />
<dir name="DIRA">
<dir name="DIRAA">
diff --git a/examples/cdrom/cdbrowse/makefile b/examples/cdrom/cdbrowse/makefile
deleted file mode 100644
index 954408b..0000000
--- a/examples/cdrom/cdbrowse/makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-# PSn00bSDK makefile template
-# Part of the PSn00bSDK Project
-# 2019 - 2021 Lameguy64 / Meido-Tek Productions
-
-## Settings
-
-PSN00BSDK_LIBS ?= ../../../libpsn00b
-
-# Edit this to point to psn00bsdk-setup.mk, or copy that over to your project's
-# root folder (it only depends on environment variables).
-include ../../../psn00bsdk-setup.mk
-
-# Project target name
-TARGET = cdbrowse
-
-## Files
-
-# Searches for C, C++ and S (assembler) files in local directory
-CFILES = $(notdir $(wildcard *.c))
-CPPFILES= $(notdir $(wildcard *.cpp))
-AFILES = $(notdir $(wildcard *.s))
-
-# Create names for object files
-OFILES = $(addprefix build/,$(CFILES:.c=.o)) \
- $(addprefix build/,$(CPPFILES:.cpp=.o)) \
- $(addprefix build/,$(AFILES:.s=.o))
-
-# Project specific includes and libraries
-# (use -I for include dirs, -L for library dirs, -l for static libraries)
-INCLUDE +=
-LIBDIRS +=
-LIBS +=
-
-## Build rules
-
-all: iso
-#all: build/$(TARGET)
-
-iso: build/$(TARGET) resources
- $(MKPSXISO) -y -q iso.xml
-
-resources:
- # Add commands to build/convert your assets here
- #$(LZPACK) data.xml
-
-build/$(TARGET): $(OFILES)
- @mkdir -p $(dir $@)
- $(LD) $(LDFLAGS_EXE) $(LIBDIRS) $^ $(LIBS) -o $@
- $(NM) -f posix -l -n $@ >$@.map
- $(ELF2X) -q $@ $@.exe
-
-build/%.o: %.c
- @mkdir -p $(dir $@)
- $(CC) $(CFLAGS_EXE) $(INCLUDE) -c $< -o $@
-
-build/%.o: %.cpp
- @mkdir -p $(dir $@)
- $(CXX) $(CPPFLAGS_EXE) $(INCLUDE) -c $< -o $@
-
-build/%.o: %.s
- @mkdir -p $(dir $@)
- $(CC) $(AFLAGS_EXE) $(INCLUDE) -c $< -o $@
-
-clean:
- rm -rf build
diff --git a/examples/cdrom/cdxa/CMakeLists.txt b/examples/cdrom/cdxa/CMakeLists.txt
new file mode 100644
index 0000000..b0c8d90
--- /dev/null
+++ b/examples/cdrom/cdxa/CMakeLists.txt
@@ -0,0 +1,29 @@
+# PSn00bSDK example CMake script
+# (C) 2021 spicyjpeg - MPL licensed
+
+cmake_minimum_required(VERSION 3.21)
+
+if(NOT DEFINED CMAKE_TOOLCHAIN_FILE AND DEFINED ENV{PSN00BSDK_LIBS})
+ set(CMAKE_TOOLCHAIN_FILE $ENV{PSN00BSDK_LIBS}/cmake/sdk.cmake)
+endif()
+
+project(
+ cdxa
+ LANGUAGES C
+ VERSION 1.0.0
+ DESCRIPTION "PSn00bSDK CD-XA playback example"
+ HOMEPAGE_URL "http://lameguy64.net/?page=psn00bsdk"
+)
+
+# TODO: add rules to actually generate a valid .XA file
+file(GLOB _sources *.c)
+psn00bsdk_add_executable(cdxa STATIC ${_sources})
+#psn00bsdk_add_cd_image(cdxa_iso cdxa iso.xml DEPENDS cdxa)
+
+install(
+ FILES
+ #${PROJECT_BINARY_DIR}/cdxa.bin
+ #${PROJECT_BINARY_DIR}/cdxa.cue
+ ${PROJECT_BINARY_DIR}/cdxa.exe
+ DESTINATION .
+)
diff --git a/examples/cdrom/cdxa/iso.xml b/examples/cdrom/cdxa/iso.xml
index 9a6a206..b98a16f 100644
--- a/examples/cdrom/cdxa/iso.xml
+++ b/examples/cdrom/cdxa/iso.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<iso_project
- image_name="build/cdxa.bin"
- cue_sheet="build/cdxa.cue"
+ image_name="${CD_IMAGE_NAME}.bin"
+ cue_sheet="${CD_IMAGE_NAME}.cue"
>
<track type="data">
<identifiers
@@ -9,18 +9,18 @@
volume ="CDXA"
volume_set ="CDXA"
publisher ="MEIDOTEK"
- data_preparer ="PSN00BSDK BUILD SCRIPT"
+ data_preparer ="PSN00BSDK ${PSN00BSDK_VERSION}"
application ="PLAYSTATION"
copyright ="README.TXT;1"
/>
<directory_tree>
- <file name="SYSTEM.CNF" type="data" source="system.cnf" />
- <file name="CDXA.EXE" type="data" source="build/cdxa.exe" />
- <file name="CDXA.MAP" type="data" source="build/cdxa.map" />
+ <file name="SYSTEM.CNF" type="data" source="${PROJECT_SOURCE_DIR}/system.cnf" />
+ <file name="CDXA.EXE" type="data" source="cdxa.exe" />
+ <file name="CDXA.MAP" type="data" source="cdxa.map" />
<!-- CD-XA file, you'll have to provide your own to make this example work -->
- <file name="XASAMPLE.XA" type="mixed" source="xasample.xa"/>
+ <file name="XASAMPLE.XA" type="mixed" source="${PROJECT_SOURCE_DIR}/xasample.xa"/>
<dummy sectors="1024"/>
</directory_tree>
diff --git a/examples/cdrom/cdxa/makefile b/examples/cdrom/cdxa/makefile
deleted file mode 100644
index b1627f7..0000000
--- a/examples/cdrom/cdxa/makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-# PSn00bSDK makefile template
-# Part of the PSn00bSDK Project
-# 2019 - 2021 Lameguy64 / Meido-Tek Productions
-
-## Settings
-
-PSN00BSDK_LIBS ?= ../../../libpsn00b
-
-# Edit this to point to psn00bsdk-setup.mk, or copy that over to your project's
-# root folder (it only depends on environment variables).
-include ../../../psn00bsdk-setup.mk
-
-# Project target name
-TARGET = cdxa
-
-## Files
-
-# Searches for C, C++ and S (assembler) files in local directory
-CFILES = $(notdir $(wildcard *.c))
-CPPFILES= $(notdir $(wildcard *.cpp))
-AFILES = $(notdir $(wildcard *.s))
-
-# Create names for object files
-OFILES = $(addprefix build/,$(CFILES:.c=.o)) \
- $(addprefix build/,$(CPPFILES:.cpp=.o)) \
- $(addprefix build/,$(AFILES:.s=.o))
-
-# Project specific includes and libraries
-# (use -I for include dirs, -L for library dirs, -l for static libraries)
-INCLUDE +=
-LIBDIRS +=
-LIBS +=
-
-## Build rules
-
-#all: iso
-all: build/$(TARGET)
-
-iso: build/$(TARGET) resources
- $(MKPSXISO) -y -q iso.xml
-
-resources:
- # Add commands to build/convert your assets here
- #$(LZPACK) data.xml
-
-build/$(TARGET): $(OFILES)
- @mkdir -p $(dir $@)
- $(LD) $(LDFLAGS_EXE) $(LIBDIRS) $^ $(LIBS) -o $@
- $(NM) -f posix -l -n $@ >$@.map
- $(ELF2X) -q $@ $@.exe
-
-build/%.o: %.c
- @mkdir -p $(dir $@)
- $(CC) $(CFLAGS_EXE) $(INCLUDE) -c $< -o $@
-
-build/%.o: %.cpp
- @mkdir -p $(dir $@)
- $(CXX) $(CPPFLAGS_EXE) $(INCLUDE) -c $< -o $@
-
-build/%.o: %.s
- @mkdir -p $(dir $@)
- $(CC) $(AFLAGS_EXE) $(INCLUDE) -c $< -o $@
-
-clean:
- rm -rf build