aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt71
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")