diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..55a7007 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,71 @@ +# wanix, a Unix-like operating system for WebAssembly +# Copyright (C) 2025 Xavier Del Campo Romero +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +# SDL::SDL was defined on 3.20. +cmake_minimum_required(VERSION 3.20) + +set(TOOLS_PREFIX ${CMAKE_BINARY_DIR}/tools) +include(ExternalProject) +ExternalProject_Add(tools + SOURCE_DIR ${CMAKE_SOURCE_DIR}/tools + CMAKE_ARGS + -D CMAKE_INSTALL_PREFIX=${TOOLS_PREFIX}) + +project(wanix C) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) + +if(CMAKE_TOOLCHAIN_FILE MATCHES "ps1") + set(PS1_BUILD 1) +elseif(CMAKE_TOOLCHAIN_FILE MATCHES "win9x") + set(WIN9X_BUILD 1) + set(SDL1_2_BUILD 1) + set(exec_flags WIN32) +else() + set(HOST_BUILD 1) + set(SDL1_2_BUILD 1) +endif() + +add_executable(${PROJECT_NAME} ${exec_flags} "src/main.c") + +if(SDL1_2_BUILD) + find_package(SDL 1.2 REQUIRED) + find_package(SDL_gfx 2.0 REQUIRED) + find_package(SDL_mixer 1.2 REQUIRED) + # FindSDL_mixer.cmake does not export any target, so do it here instead. + add_library(SDL::SDL_mixer STATIC IMPORTED) + set_property(TARGET SDL::SDL_mixer PROPERTY + IMPORTED_LOCATION ${SDL_MIXER_LIBRARIES}) + target_include_directories(SDL::SDL_mixer INTERFACE ${SDL_MIXER_INCLUDE_DIRS}) + target_link_libraries(SDL::SDL_mixer INTERFACE SDL::SDL) +endif() + +if(NOT PS1_BUILD) + find_package(ENET 1.3 REQUIRED) +endif() + +set(cdroot ${CMAKE_BINARY_DIR}/cdimg) +file(MAKE_DIRECTORY ${cdroot}) + +if(PS1_BUILD) + include("cmake/ps1.cmake") +elseif(WIN9X_BUILD) + include("cmake/win9x.cmake") +elseif(HOST_BUILD) + include("cmake/host.cmake") +endif() + +add_subdirectory("res") +add_subdirectory("src") |
