aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2022-05-24 22:19:34 +0200
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2022-05-24 22:20:04 +0200
commit9073d82ea66ee5c07c4603a62f9bb07b3eb5c3ce (patch)
treee416ff0ee628e090eb531291e098ce111318fc50
parent938ab934826ba8b94a1ea43ce7f6b583cee10b50 (diff)
downloadrts-9073d82ea66ee5c07c4603a62f9bb07b3eb5c3ce.tar.gz
Split CMakeLists.txt into platform-specific *.cmake
-rw-r--r--CMakeLists.txt88
-rw-r--r--cmake/host.cmake12
-rw-r--r--cmake/ps1.cmake28
-rw-r--r--cmake/win9x.cmake37
4 files changed, 82 insertions, 83 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1ca63a4..4dfad29 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,67 +27,15 @@ project(rts)
add_executable(${PROJECT_NAME} "src/main.c")
set(cdroot ${CMAKE_BINARY_DIR}/cdimg)
+# Avoid C11 since it is not supported by the i386-mingw32 toolchain.
+set(cflags -Wall -g3 -ffunction-sections -fdata-sections -pedantic -std=c99)
if(PS1_BUILD)
- file(MAKE_DIRECTORY ${cdroot})
- target_link_directories(${PROJECT_NAME} PUBLIC $ENV{PSXSDK_PATH}/lib)
- target_link_libraries(${PROJECT_NAME} PUBLIC -lpsx -lfixmath)
- target_compile_definitions(${PROJECT_NAME} PUBLIC FIXMATH_FAST_SIN PSXSDK_DEBUG)
- 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_custom_target(libpsx ALL DEPENDS $ENV{PSXSDK_PATH}/lib/libpsx.a)
- # add_dependencies(${PROJECT_NAME} libpsx)
-
- if(NOT EXISTS "${cdroot}/system.cnf")
- file(COPY "src/system.cnf" DESTINATION "${cdroot}")
- endif()
+ include("cmake/ps1.cmake")
elseif(WIN9X_BUILD)
- file(MAKE_DIRECTORY ${cdroot})
- if("$ENV{SDL_PATH}" STREQUAL "")
- message(FATAL_ERROR "please define env variable SDL_PATH")
- elseif("$ENV{SDL_TTF_PATH}" STREQUAL "")
- message(FATAL_ERROR "please define env variable SDL_TTF_PATH")
- elseif("$ENV{FREETYPE_PATH}" STREQUAL "")
- message(FATAL_ERROR "please define env variable FREETYPE_PATH")
- elseif("$ENV{SDL_MIXER_PATH}" STREQUAL "")
- message(FATAL_ERROR "please define env variable SDL_MIXER_PATH")
- endif()
-
- add_custom_command(OUTPUT ${cdroot}/${PROJECT_NAME}
- COMMAND i386-mingw32-strip ${PROJECT_NAME} -o ${cdroot}/${PROJECT_NAME}
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
- DEPENDS ${PROJECT_NAME}
- VERBATIM)
- add_custom_target(stripped-exe ALL DEPENDS ${cdroot}/${PROJECT_NAME})
-
- target_link_directories(${PROJECT_NAME} PRIVATE $ENV{SDL_PATH}/lib
- $ENV{SDL_TTF_PATH}/lib $ENV{FREETYPE_PATH}/lib
- $ENV{SDL_MIXER_PATH}/lib)
- include_directories($ENV{SDL_PATH}/include
- $ENV{SDL_PATH}/include/SDL $ENV{SDL_TTF_PATH}/include
- $ENV{FREETYPE_PATH}/include
- $ENV{SDL_MIXER_PATH}/include)
- add_compile_options(-march=i386)
- link_libraries(gdi32 user32 winmm dxguid freetype)
- set(SDL1_2_BUILD 1)
+ include("cmake/win9x.cmake")
elseif(HOST_BUILD)
- file(MAKE_DIRECTORY ${cdroot})
- find_package(SDL 1.2 REQUIRED)
- find_package(SDL_mixer 1.2 REQUIRED)
- set(SDL1_2_BUILD 1)
- #find_package(SDL_ttf 2.0 REQUIRED)
-endif()
-
-# libfixmath is already bundled with PSXSDK.
-if(NOT PS1_BUILD)
- add_subdirectory(libfixmath)
+ include("cmake/host.cmake")
endif()
add_subdirectory("res")
@@ -118,32 +66,6 @@ set(interfaces
tech
)
-# Avoid C11 since it is not supported by the i386-mingw32 toolchain.
-set(cflags -Wall -g3 -ffunction-sections -fdata-sections -pedantic -std=c99)
-
-if(WIN9X_BUILD)
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
- # i386-mingw32-gcc 3.4.5 does not support -Og.
- set(cflags ${cflags} -O0)
- else()
- set(cflags ${cflags} -O2)
- endif()
-elseif(PS1_BUILD)
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
- set(cflags ${cflags} -Og)
- else()
- set(cflags ${cflags} -Os)
- endif()
-
- set(cflags ${cflags} -fshort-enums)
-else()
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
- set(cflags ${cflags} -Og)
- else()
- set(cflags ${cflags} -O3)
- endif()
-endif()
-
target_compile_options(${PROJECT_NAME} PUBLIC ${cflags})
foreach(c ${components})
diff --git a/cmake/host.cmake b/cmake/host.cmake
new file mode 100644
index 0000000..b1b000a
--- /dev/null
+++ b/cmake/host.cmake
@@ -0,0 +1,12 @@
+file(MAKE_DIRECTORY ${cdroot})
+find_package(SDL 1.2 REQUIRED)
+find_package(SDL_mixer 1.2 REQUIRED)
+set(SDL1_2_BUILD 1)
+
+if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+ set(cflags ${cflags} -Og)
+else()
+ set(cflags ${cflags} -O3)
+endif()
+
+add_subdirectory(libfixmath)
diff --git a/cmake/ps1.cmake b/cmake/ps1.cmake
new file mode 100644
index 0000000..e9ae0f6
--- /dev/null
+++ b/cmake/ps1.cmake
@@ -0,0 +1,28 @@
+file(MAKE_DIRECTORY ${cdroot})
+target_link_directories(${PROJECT_NAME} PUBLIC $ENV{PSXSDK_PATH}/lib)
+target_link_libraries(${PROJECT_NAME} PUBLIC -lpsx -lfixmath)
+target_compile_definitions(${PROJECT_NAME} PUBLIC FIXMATH_FAST_SIN PSXSDK_DEBUG)
+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_custom_target(libpsx ALL DEPENDS $ENV{PSXSDK_PATH}/lib/libpsx.a)
+# add_dependencies(${PROJECT_NAME} libpsx)
+
+if(NOT EXISTS "${cdroot}/system.cnf")
+ file(COPY "src/system.cnf" DESTINATION "${cdroot}")
+endif()
+
+if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+ set(cflags ${cflags} -Og)
+else()
+ set(cflags ${cflags} -Os)
+endif()
+
+set(cflags ${cflags} -fshort-enums)
+# libfixmath is already bundled with PSXSDK.
diff --git a/cmake/win9x.cmake b/cmake/win9x.cmake
new file mode 100644
index 0000000..3423248
--- /dev/null
+++ b/cmake/win9x.cmake
@@ -0,0 +1,37 @@
+file(MAKE_DIRECTORY ${cdroot})
+if("$ENV{SDL_PATH}" STREQUAL "")
+ message(FATAL_ERROR "please define env variable SDL_PATH")
+elseif("$ENV{SDL_TTF_PATH}" STREQUAL "")
+ message(FATAL_ERROR "please define env variable SDL_TTF_PATH")
+elseif("$ENV{FREETYPE_PATH}" STREQUAL "")
+ message(FATAL_ERROR "please define env variable FREETYPE_PATH")
+elseif("$ENV{SDL_MIXER_PATH}" STREQUAL "")
+ message(FATAL_ERROR "please define env variable SDL_MIXER_PATH")
+endif()
+
+add_custom_command(OUTPUT ${cdroot}/${PROJECT_NAME}
+ COMMAND i386-mingw32-strip ${PROJECT_NAME} -o ${cdroot}/${PROJECT_NAME}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${PROJECT_NAME}
+ VERBATIM)
+add_custom_target(stripped-exe ALL DEPENDS ${cdroot}/${PROJECT_NAME})
+
+target_link_directories(${PROJECT_NAME} PRIVATE $ENV{SDL_PATH}/lib
+ $ENV{SDL_TTF_PATH}/lib $ENV{FREETYPE_PATH}/lib
+ $ENV{SDL_MIXER_PATH}/lib)
+include_directories($ENV{SDL_PATH}/include
+ $ENV{SDL_PATH}/include/SDL $ENV{SDL_TTF_PATH}/include
+ $ENV{FREETYPE_PATH}/include
+ $ENV{SDL_MIXER_PATH}/include)
+add_compile_options(-march=i386)
+link_libraries(gdi32 user32 winmm dxguid freetype)
+set(SDL1_2_BUILD 1)
+
+if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+ # i386-mingw32-gcc 3.4.5 does not support -Og.
+ set(cflags ${cflags} -O0)
+else()
+ set(cflags ${cflags} -O2)
+endif()
+
+add_subdirectory(libfixmath)