aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi92@disroot.org>2025-07-07 13:22:53 +0200
committerXavier Del Campo Romero <xavi92@disroot.org>2025-11-11 00:08:15 +0100
commit7861a52adf92a083bb2aed4c35f98d8035dce032 (patch)
tree28cd3c40e4c878f730f5df3c1d93bdf91af490c3 /CMakeLists.txt
parent7fc48e9216ff809da5f8055a50b0be17628ef1df (diff)
Setup project skeleton
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt29
1 files changed, 18 insertions, 11 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9820c84..bb3c826 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-# wanix, a Unix-like operating system for WebAssembly
+# wnix, a Unix-like operating system for WebAssembly applications.
# Copyright (C) 2025 Xavier Del Campo Romero
#
# This program is free software: you can redistribute it and/or modify
@@ -21,16 +21,20 @@ set(TOOLS_PREFIX ${CMAKE_BINARY_DIR}/tools)
include(ExternalProject)
ExternalProject_Add(tools
SOURCE_DIR ${CMAKE_SOURCE_DIR}/tools
+ BUILD_ALWAYS ON
CMAKE_ARGS
+ -D CMAKE_EXPORT_COMPILE_COMMANDS=ON
-D CMAKE_INSTALL_PREFIX=${TOOLS_PREFIX})
-project(wanix C)
+project(wnix C ASM)
+option(WNIX_BUILD_PROGRAMS "Build userspace programs" ON)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
-add_compile_options(-mno-gpopt)
+add_compile_options(-mno-gpopt -ffunction-sections -fdata-sections)
if(CMAKE_TOOLCHAIN_FILE MATCHES "ps1")
set(PS1_BUILD 1)
+ option(WNIX_VIRT_CD "Virtualise CD driver through SIO")
elseif(CMAKE_TOOLCHAIN_FILE MATCHES "win9x")
set(WIN9X_BUILD 1)
set(SDL1_2_BUILD 1)
@@ -40,7 +44,7 @@ else()
set(SDL1_2_BUILD 1)
endif()
-add_executable(${PROJECT_NAME} ${exec_flags} "src/main.c")
+add_executable(${PROJECT_NAME} ${exec_flags} src/main.c)
if(SDL1_2_BUILD)
find_package(SDL 1.2 REQUIRED)
@@ -58,16 +62,19 @@ if(NOT PS1_BUILD)
find_package(ENET 1.3 REQUIRED)
endif()
-set(cdroot ${CMAKE_BINARY_DIR}/cdimg)
-file(MAKE_DIRECTORY ${cdroot})
+set(cdroot ${CMAKE_BINARY_DIR})
if(PS1_BUILD)
- include("cmake/ps1.cmake")
+ include(cmake/ps1.cmake)
elseif(WIN9X_BUILD)
- include("cmake/win9x.cmake")
+ include(cmake/win9x.cmake)
elseif(HOST_BUILD)
- include("cmake/host.cmake")
+ include(cmake/host.cmake)
endif()
-add_subdirectory("res")
-add_subdirectory("src")
+add_subdirectory(res)
+add_subdirectory(src)
+
+if(WNIX_BUILD_PROGRAMS)
+ add_subdirectory(programs)
+endif()