Initial commit
This commit is contained in:
52
CMakeLists.txt
Normal file
52
CMakeLists.txt
Normal file
@@ -0,0 +1,52 @@
|
||||
cmake_minimum_required(VERSION 3.30)
|
||||
|
||||
# Opt into experimental C++ modules dyndep + `import std;` support.
|
||||
# Required until CMake declares these stable; see CMake docs for the current UUID.
|
||||
set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)
|
||||
set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "d0edc3af-4c50-42ea-a356-e2862fe7a444")
|
||||
set(CMAKE_CXX_MODULE_STD ON)
|
||||
|
||||
project(cargoxx LANGUAGES CXX VERSION 0.1.0)
|
||||
|
||||
# Phase 0: hand-written CMakeLists.txt. Replaced by generated build/CMakeLists.txt
|
||||
# at milestone M3 once cargoxx can build itself. See TECH_SPEC.md §15.
|
||||
|
||||
set(CMAKE_CXX_STANDARD 23)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
set(CMAKE_CXX_SCAN_FOR_MODULES ON)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Build type" FORCE)
|
||||
endif()
|
||||
|
||||
# TECH_SPEC.md §17: -Wall -Wextra -Wpedantic -Wconversion, -Werror in CI.
|
||||
add_compile_options(-Wall -Wextra -Wpedantic -Wconversion)
|
||||
|
||||
option(CARGOXX_WERROR "Treat warnings as errors" OFF)
|
||||
if(CARGOXX_WERROR)
|
||||
add_compile_options(-Werror)
|
||||
endif()
|
||||
|
||||
# ----- cargoxx library: all module units -----
|
||||
add_library(cargoxx STATIC)
|
||||
target_sources(cargoxx
|
||||
PUBLIC
|
||||
FILE_SET CXX_MODULES FILES
|
||||
src/lib.cppm
|
||||
src/util/util.cppm
|
||||
src/exec/exec.cppm
|
||||
src/manifest/manifest.cppm
|
||||
src/lockfile/lockfile.cppm
|
||||
src/layout/layout.cppm
|
||||
src/linkdb/linkdb.cppm
|
||||
src/resolver/resolver.cppm
|
||||
src/codegen/codegen.cppm
|
||||
src/cli/cli.cppm
|
||||
)
|
||||
|
||||
# ----- cargoxx binary -----
|
||||
add_executable(cargoxx_bin src/main.cpp)
|
||||
set_target_properties(cargoxx_bin PROPERTIES OUTPUT_NAME cargoxx)
|
||||
target_link_libraries(cargoxx_bin PRIVATE cargoxx)
|
||||
Reference in New Issue
Block a user