-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
95 lines (91 loc) · 4.4 KB
/
CMakeLists.txt
File metadata and controls
95 lines (91 loc) · 4.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
cmake_minimum_required(VERSION 3.10)
project(FileArb)
include(${CMAKE_SOURCE_DIR}/CMakeMacros.cmake)
if(UNIX)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "-std=c++2b --stdlib=libstdc++ \
-Weverything -Werror \
-Wno-alloca \
-Wno-c++98-compat \
-Wno-c++98-compat-pedantic \
-Wno-class-varargs \
-Wno-covered-switch-default \
-Wno-ctad-maybe-unsupported \
-Wno-deprecated-copy-with-dtor \
-Wno-deprecated-declarations \
-Wno-disabled-macro-expansion \
-Wno-exit-time-destructors \
-Wno-extra-semi-stmt \
-Wno-global-constructors \
-Wno-gnu-zero-variadic-macro-arguments \
-Wno-header-hygiene \
-Wno-missing-noreturn \
-Wno-missing-variable-declarations \
-Wno-padded \
-Wno-reserved-identifier \
-Wno-shadow-field-in-constructor \
-Wno-switch-enum \
-Wno-thread-safety-negative \
-Wno-unsafe-buffer-usage \
-Wno-unused-template \
-Wno-weak-vtables")
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 21.0.0)
append(CMAKE_CXX_FLAGS "-Wno-nrvo")
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "-std=c++2b \
-Wall -Wextra -pedantic -Werror \
-Wno-deprecated-declarations")
endif()
if(FastLinuxDebugBuildMode)
replace(CMAKE_CXX_FLAGS_DEBUG "-g" "")
message("FastLinuxDebugBuildMode enabled: -g removed")
endif()
if(FastLinuxReleaseBuildMode)
replace(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2" "")
message("FastLinuxReleaseBuildMode enabled: -O2 removed")
endif()
if(ClangTidyMode)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
include(ProcessorCount)
ProcessorCount(NumberOfCores)
add_custom_target(clang-tidy COMMAND
find -name "*.cpp" -not -path "*/CMakeFiles/*" -print0 | xargs -0 -n 1 -P ${NumberOfCores} -t clang-tidy -p ${CMAKE_BUILD_TYPE} -config-file=/code/CMakeUtils/clang-tidy-config.txt -extra-arg=-std=c++2b -extra-arg=-Wno-unknown-warning-option
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} VERBATIM USES_TERMINAL)
message("ClangTidyMode enabled: CMAKE_EXPORT_COMPILE_COMMANDS set to ON")
elseif(ClangUndefinedBehaviorSanitizerMode)
replace(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g" "")
replace(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2" "")
append(CMAKE_CXX_FLAGS "-fsanitize=undefined,float-divide-by-zero,unsigned-integer-overflow,implicit-conversion,local-bounds")
message("ClangUndefinedBehaviorSanitizerMode enabled: -fsanitize=address appended to CMAKE_CXX_FLAGS")
elseif(ClangAddressSanitizerMode)
append(CMAKE_CXX_FLAGS "-fsanitize=address")
message("ClangAddressSanitizerMode enabled: -fsanitize=address appended to CMAKE_CXX_FLAGS")
elseif(ClangThreadSanitizerMode)
append(CMAKE_CXX_FLAGS "-fsanitize=thread")
message("ClangThreadSanitizerMode enabled: -fsanitize=thread appended to CMAKE_CXX_FLAGS")
elseif(ClangCodeCoverageMode)
append(CMAKE_CXX_FLAGS "-fcoverage-mapping -fprofile-instr-generate=coverage.profraw")
message("ClangCodeCoverageMode enabled: -fcoverage-mapping -fprofile-instr-generate=coverage.profraw appended to CMAKE_CXX_FLAGS")
elseif(LCovCodeCoverageMode)
replace(CMAKE_CXX_FLAGS_RELEASE "-O3" "")
message("CMAKE_CXX_FLAGS_RELEASE: ${CMAKE_CXX_FLAGS_RELEASE}")
add_library(CodeCovLibraryInterface INTERFACE)
target_compile_options(CodeCovLibraryInterface INTERFACE -O0 -g --coverage)
target_link_libraries(CodeCovLibraryInterface INTERFACE --coverage)
elseif(IncludeWhatYouUseMode)
replace(CMAKE_CXX_FLAGS_DEBUG "-g" "")
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE "/usr/bin/include-what-you-use"
"-Xiwyu" "--keep=*pch.h"
"-Xiwyu" "--cxx17ns"
"-Xiwyu" "--error_always=0")
message("IncludeWhatYouUseMode enabled: CMAKE_CXX_INCLUDE_WHAT_YOU_USE set to /usr/bin/include-what-you-use with precompiled headers and unity builds disabled")
endif()
elseif(MSVC)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_CXX_FLAGS "/std:c++latest /EHsc /Zc:enumTypes /MP /Wall /WX /permissive-")
endif()
add_subdirectory(FileArb)
add_subdirectory(libFileArb)
add_subdirectory(libFileArbTests)
set(CMAKE_CONFIGURATION_TYPES "Debug;RelWithDebInfo")