Files
dofs/CMakeLists.txt

41 lines
1.5 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(dofs LANGUAGES CXX)
# Global C++ settings
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Export compile_commands.json")
# Dev toggle: convenient but less deterministic than listing files explicitly
option(DOFS_GLOB_SOURCES "Dev: auto-add *.cc files via GLOB (not ideal for CI)" OFF)
# Interface target to export common config (include dirs, features)
add_library(dofs_config INTERFACE)
target_compile_features(dofs_config INTERFACE cxx_std_20)
target_compile_options(dofs_config INTERFACE -Wall -Wextra -Wpedantic)
# Let everyone include headers like: #include "core/error.h"
target_include_directories(dofs_config INTERFACE "${PROJECT_SOURCE_DIR}/src")
# yaml-cpp submodule (static)
if(EXISTS "${PROJECT_SOURCE_DIR}/third_party/yaml-cpp/CMakeLists.txt")
# Use yaml-cpp's options; force them at configure-time
set(YAML_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(YAML_CPP_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(YAML_CPP_BUILD_TOOLS OFF CACHE BOOL "" FORCE)
set(YAML_CPP_BUILD_CONTRIB ON CACHE BOOL "" FORCE)
set(YAML_ENABLE_PIC ON CACHE BOOL "" FORCE)
set(YAML_CPP_INSTALL OFF CACHE BOOL "" FORCE)
add_subdirectory(third_party/yaml-cpp EXCLUDE_FROM_ALL)
else()
message(WARNING "yaml-cpp submodule missing at third_party/yaml-cpp")
endif()
# add_subdirectory(src)
add_subdirectory(src/core)
add_subdirectory(src/network)
add_subdirectory(src/hosts)