aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2020-12-31 03:23:32 +0100
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2021-01-01 04:39:13 +0100
commit9c91d194cd688228baf2214d369ddaa40fb5e6b7 (patch)
tree0333a81e95b57f4bdf117767c90f17345672e7ac
parentb9886cf7be95586322f9de5991df96b47706612c (diff)
downloadairport-9c91d194cd688228baf2214d369ddaa40fb5e6b7.tar.gz
Support CMake
-rw-r--r--.gitignore2
-rw-r--r--CMakeLists.txt53
-rw-r--r--Levels/CMakeLists.txt18
-rw-r--r--Sounds/CMakeLists.txt28
-rw-r--r--Sprites/CMakeLists.txt48
5 files changed, 149 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 2cde58b..d3fc2ce 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,3 +43,5 @@
*.su
*.idb
*.pdb
+
+build/
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..7a8e2f6
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,53 @@
+cmake_minimum_required(VERSION 3.13)
+if("$ENV{PSXSDK_PATH}" STREQUAL "")
+ message(FATAL_ERROR "Please set PSXSDK_PATH env variable first "
+ "where psxsdk root is located e.g.: /usr/local/psxsdk")
+endif()
+set(CMAKE_C_COMPILER psx-gcc)
+set(CMAKE_CXX_COMPILER psx-g++)
+project(airport C)
+set(cdroot ${CMAKE_SOURCE_DIR}/cdimg)
+
+if(NOT EXISTS ${cdroot})
+ file(MAKE_DIRECTORY ${cdroot})
+endif()
+
+add_executable(${PROJECT_NAME}
+ "Source/Aircraft.c"
+ "Source/Camera.c"
+ "Source/EndAnimation.c"
+ "Source/Font.c"
+ "Source/Game.c"
+ "Source/GameGui.c"
+ "Source/Gfx.c"
+ "Source/LoadMenu.c"
+ "Source/main.c"
+ "Source/MainMenuBtnAni.c"
+ "Source/MemCard.c"
+ "Source/Menu.c"
+ "Source/Message.c"
+ "Source/Pad.c"
+ "Source/PltParser.c"
+ "Source/PSXSDKIntro.c"
+ "Source/Serial.c"
+ "Source/Sfx.c"
+ "Source/System.c"
+ "Source/Timer.c"
+)
+target_link_directories(${PROJECT_NAME} PUBLIC $ENV{PSXSDK_PATH}/lib)
+target_compile_options(${PROJECT_NAME} PUBLIC -DFIXMATH_FAST_SIN -D_PAL_MODE_
+ -DPSXSDK_DEBUG -DNO_CDDA -DNO_INTRO -Wall -g3 -Og)
+target_link_libraries(${PROJECT_NAME} PUBLIC -lpsx -lfixmath)
+target_include_directories(${PROJECT_NAME} PRIVATE . $ENV{PSXSDK_PATH}/include)
+add_custom_target(exe ALL elf2exe ${PROJECT_NAME}
+ ${cdroot}/${PROJECT_NAME}.exe -mark=\"A homebrew game created with PSXSDK\"
+ DEPENDS ${PROJECT_NAME})
+add_custom_target(iso ALL mkisofs -o ${PROJECT_NAME}.iso -V ${PROJECT_NAME}
+ -sysid PLAYSTATION ${cdroot} DEPENDS exe)
+set(license $ENV{PSXSDK_PATH}/share/licenses/infoeur.dat)
+add_custom_target(bin_cue ALL mkpsxiso ${PROJECT_NAME}.iso ${PROJECT_NAME}.bin
+ ${license} -s DEPENDS iso)
+add_subdirectory(Levels)
+add_subdirectory(Sprites)
+add_subdirectory(Sounds)
+file(COPY "Source/system.cnf" DESTINATION ${cdroot})
diff --git a/Levels/CMakeLists.txt b/Levels/CMakeLists.txt
new file mode 100644
index 0000000..4e04df0
--- /dev/null
+++ b/Levels/CMakeLists.txt
@@ -0,0 +1,18 @@
+if(NOT EXISTS ${cdroot}/DATA/LEVELS)
+ file(MAKE_DIRECTORY ${cdroot}/DATA/LEVELS)
+endif()
+
+file(COPY
+ EASY.PLT
+ LEVEL18.LVL
+ LEVEL18.PLT
+ LEVEL1.LVL
+ LEVEL1.PLT
+ LEVEL2.LVL
+ LEVEL2.PLT
+ LEVEL3.LVL
+ LEVEL3.PLT
+ TUTORIA1.PLT
+ XAMI.LVL
+ XAMI.PLT
+ DESTINATION ${cdroot}/DATA/LEVELS)
diff --git a/Sounds/CMakeLists.txt b/Sounds/CMakeLists.txt
new file mode 100644
index 0000000..68e7356
--- /dev/null
+++ b/Sounds/CMakeLists.txt
@@ -0,0 +1,28 @@
+function(vag)
+ set(options "")
+ set(multiValueArgs "")
+ set(oneValueArgs NAME DEST)
+ cmake_parse_arguments(VAG "${options}" "${oneValueArgs}"
+ "${multiValueArgs}" ${ARGN})
+
+ if(NOT EXISTS ${VAG_DEST})
+ file(MAKE_DIRECTORY ${VAG_DEST})
+ endif()
+
+ add_custom_target(${VAG_NAME}_vag ALL
+ wav2vag ${VAG_NAME}.wav ${VAG_DEST}/${VAG_NAME}.VAG
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ DEPENDS ${VAG_NAME}.wav
+ BYPRODUCTS ${VAG_DEST}/${VAG_NAME}.VAG)
+ add_dependencies(iso ${VAG_NAME}_vag)
+endfunction()
+
+vag(NAME BELL DEST ${cdroot}/DATA/SOUNDS)
+vag(NAME ACCEPT DEST ${cdroot}/DATA/SOUNDS)
+vag(NAME TRAYCL DEST ${cdroot}/DATA/SOUNDS)
+vag(NAME SPINDISK DEST ${cdroot}/DATA/SOUNDS)
+vag(NAME BEEP DEST ${cdroot}/DATA/SOUNDS)
+vag(NAME TAKEOFF1 DEST ${cdroot}/DATA/SOUNDS)
+vag(NAME RCTM1F1 DEST ${cdroot}/DATA/SOUNDS)
+vag(NAME RCPW1A1 DEST ${cdroot}/DATA/SOUNDS)
+vag(NAME RCPM1A1 DEST ${cdroot}/DATA/SOUNDS)
diff --git a/Sprites/CMakeLists.txt b/Sprites/CMakeLists.txt
new file mode 100644
index 0000000..2b63085
--- /dev/null
+++ b/Sprites/CMakeLists.txt
@@ -0,0 +1,48 @@
+function(tim)
+ set(options "")
+ set(multiValueArgs "")
+ set(oneValueArgs NAME DEST EXT)
+ cmake_parse_arguments(TIM "${options}" "${oneValueArgs}"
+ "${multiValueArgs}" ${ARGN})
+ file(READ ${TIM_NAME}.flags flags)
+
+ # Avoid CMake from introducing escape characters on
+ # each whitespace inside flags.
+ separate_arguments(flags NATIVE_COMMAND ${flags})
+
+ if(NOT EXISTS ${TIM_DEST})
+ file(MAKE_DIRECTORY ${TIM_DEST})
+ endif()
+
+ add_custom_target(${TIM_NAME}_tim ALL
+ bmp2tim ${TIM_NAME}.bmp ${TIM_DEST}/${TIM_NAME}.${TIM_EXT} ${flags}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ DEPENDS ${TIM_NAME}.bmp
+ BYPRODUCTS ${TIM_DEST}/${TIM_NAME}.${TIM_EXT})
+ add_dependencies(iso ${TIM_NAME}_tim)
+endfunction()
+
+tim(NAME PSXDISK DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME TILESET1 DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME TILESET2 DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME MAINMENU DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME LOADING DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME PLANE DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME BUTTONS DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME GAMEPLN DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME PLNBLUE DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME BUBBLE DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME GPL DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME OPENSRC DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME MOUSE DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME DEPARR DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME PAGEUPDN DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME BLDNGS1 DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME LFRARROW DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME UDNARROW DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME BCNGW DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME MENUSTAR DEST ${cdroot}/DATA/SPRITES EXT TIM)
+tim(NAME INTROFNT DEST ${cdroot}/DATA/FONTS EXT TIM)
+
+tim(NAME FONT_1 DEST ${cdroot}/DATA/FONTS EXT FNT)
+tim(NAME FONT_2 DEST ${cdroot}/DATA/FONTS EXT FNT)