-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
68 lines (64 loc) · 3.3 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.10)
project(FileArb)
include(${CMAKE_SOURCE_DIR}/CMakeMacros.cmake)
if(UNIX)
set(CMAKE_CXX_FLAGS "-std=c++2b -Wall -Wextra -pedantic -Werror -Wno-deprecated-copy")
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
append(CMAKE_CXX_FLAGS "-Wno-gnu-zero-variadic-macro-arguments")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
append(CMAKE_CXX_FLAGS "-no-pie -fopenmp")
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)
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 /MP /Wall /WX /permissive- /sdl")
endif()
add_subdirectory(FileArb)
add_subdirectory(libFileArb)
add_subdirectory(libFileArbTests)
set(CMAKE_CONFIGURATION_TYPES "Debug;RelWithDebInfo")
if(UNIX)
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}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} VERBATIM USES_TERMINAL)
endif()