94 lines
2.6 KiB
CMake
94 lines
2.6 KiB
CMake
cmake_minimum_required(VERSION 3.28)
|
|
project(bedrock VERSION 0.1 LANGUAGES CXX)
|
|
|
|
find_program(
|
|
CLANG_TIDY_COMMAND
|
|
NAMES
|
|
clang-tidy
|
|
HINTS
|
|
/opt/homebrew/opt/llvm/bin/
|
|
NO_CACHE
|
|
REQUIRED
|
|
)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED YES)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
add_compile_options(
|
|
-Weverything
|
|
-Werror
|
|
-Wno-c++98-compat
|
|
-Wno-c++98-compat-pedantic
|
|
-Wno-poison-system-directories
|
|
-Wno-explicit-specialization-storage-class
|
|
-Wno-unsafe-buffer-usage
|
|
-Wno-padded
|
|
-Wno-global-constructors
|
|
-Wno-exit-time-destructors
|
|
-fno-exceptions
|
|
-fcheck-new
|
|
)
|
|
|
|
file(GLOB_RECURSE BEDROCK_NUMBERS "src/numbers.cppm")
|
|
file(GLOB_RECURSE BEDROCK_FOUNDATION "src/foundation/*.cppm" "src/foundation.cppm")
|
|
file(GLOB_RECURSE BEDROCK_SEMANTICS "src/semantics/*.cppm" "src/semantics.cppm")
|
|
file(GLOB_RECURSE BEDROCK_COLLECTIONS "src/collections/*.cppm" "src/collections.cppm")
|
|
file(GLOB_RECURSE BEDROCK_IO "src/io/*.cppm" "src/io.cppm")
|
|
file(GLOB_RECURSE BEDROCK_CLI "src/cli/*.cppm" "src/cli.cppm")
|
|
file(GLOB_RECURSE BEDROCK_TEST "src/test/*.cppm" "src/test.cppm")
|
|
add_library(bedrock)
|
|
target_sources(bedrock
|
|
PUBLIC
|
|
FILE_SET CXX_MODULES FILES
|
|
${BEDROCK_NUMBERS}
|
|
${BEDROCK_SEMANTICS}
|
|
${BEDROCK_FOUNDATION}
|
|
${BEDROCK_COLLECTIONS}
|
|
${BEDROCK_IO}
|
|
${BEDROCK_CLI}
|
|
${BEDROCK_TEST}
|
|
src/bedrock.cppm
|
|
)
|
|
set_target_properties(bedrock PROPERTIES
|
|
VERSION ${PROJECT_VERSION}
|
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
|
CXX_CLANG_TIDY "${CLANG_TIDY_COMMAND}"
|
|
)
|
|
|
|
file(GLOB_RECURSE BEDROCK_TEST_SRCS "src/*.test.cpp")
|
|
add_executable(bedrock-tests ${BEDROCK_TEST_SRCS})
|
|
target_link_libraries(bedrock-tests PUBLIC bedrock)
|
|
|
|
#include(FetchContent)
|
|
#
|
|
#fetchcontent_declare(
|
|
# Catch2
|
|
# GIT_REPOSITORY https://github.com/catchorg/Catch2.git
|
|
# GIT_TAG v3.4.0
|
|
# SYSTEM
|
|
#)
|
|
#fetchcontent_makeavailable(Catch2)
|
|
#list(APPEND CMAKE_MODULE_PATH ${catch2_SOURCE_DIR}/extras)
|
|
#
|
|
#include(CTest)
|
|
#include(Catch)
|
|
#
|
|
#file(GLOB_RECURSE BEDROCK_TESTS "src/*.test.cpp")
|
|
#add_executable(bedrock-tests
|
|
# ${BEDROCK_TESTS}
|
|
#)
|
|
#target_compile_options(bedrock-tests PUBLIC
|
|
# -Weverything
|
|
# -Werror
|
|
# -Wno-c++98-compat
|
|
# -Wno-c++98-compat-pedantic
|
|
# -Wno-poison-system-directories
|
|
# -Wno-unused-member-function
|
|
# -Wno-explicit-specialization-storage-class
|
|
#)
|
|
#target_link_libraries(bedrock-tests
|
|
# PUBLIC bedrock
|
|
# PRIVATE Catch2::Catch2WithMain
|
|
#)
|
|
#catch_discover_tests(bedrock-tests)
|