File: options.cmake

package info (click to toggle)
cppcheck 2.18.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 26,132 kB
  • sloc: cpp: 268,935; python: 20,890; ansic: 8,090; sh: 1,045; makefile: 1,008; xml: 1,005; cs: 291
file content (132 lines) | stat: -rw-r--r-- 7,033 bytes parent folder | download
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# Build type
#------------------------------------------------------
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo;MinSizeRel" CACHE STRING "Configs" FORCE)
if(DEFINED CMAKE_BUILD_TYPE)
  SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES})
endif()

if(NOT CMAKE_BUILD_TYPE)
  message(STATUS "No build type set - defaulting to Debug")
  set(CMAKE_BUILD_TYPE "Debug")
endif()

# ----------------------------------------------------------------------------
#   PROJECT CONFIGURATION
# ----------------------------------------------------------------------------
option(ANALYZE_MEMORY       "Build with MemorySanitizer to detect usage of uninitialized memory" OFF)
if(ANALYZE_MEMORY)
    message(STATUS "MemorySanitzer requires an instrumented libc++")
endif()
option(ANALYZE_ADDRESS      "Build with AddressSanitzer to detect memory error"             OFF)
option(ANALYZE_THREAD       "Build with ThreadSanitizer to detect data races"               OFF)
option(ANALYZE_UNDEFINED    "Build with UndefinedBehaviorSanitizer to detect undefined behavior" OFF)
option(ANALYZE_TYPE         "Build with TypeSanitizer to detect aliasing issues"            OFF)

option(WARNINGS_ARE_ERRORS  "Treat warnings as errors"                                      OFF)
if(WARNINGS_ARE_ERRORS)
    if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24")
        message(WARNING "WARNINGS_ARE_ERRORS is deprecated - please use CMAKE_COMPILE_WARNING_AS_ERROR instead")
    endif()
    set(CMAKE_COMPILE_WARNING_AS_ERROR On)
endif()
option(EXTERNALS_AS_SYSTEM  "Treat externals as system includes"                            OFF)

set(USE_MATCHCOMPILER "Auto" CACHE STRING "Usage of match compiler")
set_property(CACHE USE_MATCHCOMPILER PROPERTY STRINGS Auto Off On Verify)
if(USE_MATCHCOMPILER)
    if(USE_MATCHCOMPILER STREQUAL "Auto")
        if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
            message(STATUS "Non-debug build detected - enabling matchcompiler")
            set(USE_MATCHCOMPILER_OPT "On")
        else()
            message(STATUS "Debug build detected - disabling matchcompiler")
            set(USE_MATCHCOMPILER_OPT "Off")
        endif()
    elseif(USE_MATCHCOMPILER STREQUAL "Verify")
        set(USE_MATCHCOMPILER_OPT "Verify")
    else()
        set(USE_MATCHCOMPILER_OPT "On")
    endif()
else()
    set(USE_MATCHCOMPILER_OPT "Off")
endif()

option(BUILD_CORE_DLL       "Build lib as cppcheck-core.dll with Visual Studio"             OFF)
if(BUILD_CORE_DLL AND NOT MSVC)
    message(FATAL_ERROR "Building of lib as DLL is only supported with Visual Studio")
endif()
option(BUILD_TESTS          "Build tests"                                                   OFF)
option(REGISTER_TESTS       "Register tests in CTest"                                       ON)
option(ENABLE_CHECK_INTERNAL "Enable internal checks"                                       OFF)
option(DISABLE_DMAKE        "Disable run-dmake dependencies"                                OFF)
option(BUILD_MANPAGE        "Enable man target to build manpage"                            OFF)

option(BUILD_CLI            "Build the cli application"                                     ON)

option(BUILD_GUI            "Build the qt application"                                      OFF)
option(WITH_QCHART          "Enable QtCharts usage in the GUI"                              OFF)
option(USE_QT6              "Prefer Qt6 when available"                                     OFF)
option(REGISTER_GUI_TESTS   "Register GUI tests in CTest"                                   ON)
option(BUILD_ONLINE_HELP    "Build online help"                                             OFF)
option(BUILD_TRIAGE         "Build triage UI tool"                                          OFF)

if(NOT BUILD_GUI)
    if(BUILD_ONLINE_HELP)
        message(FATAL_ERROR "BUILD_ONLINE_HELP requires BUILD_GUI to be enabled")
    endif()
    if(BUILD_TRIAGE)
        message(FATAL_ERROR "BUILD_TRIAGE requires BUILD_GUI to be enabled")
    endif()
endif()

option(HAVE_RULES           "Usage of rules (needs PCRE library and headers)"               OFF)
option(USE_BUNDLED_TINYXML2 "Usage of bundled TinyXML2 library"                             ON)
if(BUILD_CORE_DLL AND NOT USE_BUNDLED_TINYXML2)
    message(FATAL_ERROR "Cannot use external TinyXML2 library when building lib as DLL")
endif()
option(CPPCHK_GLIBCXX_DEBUG "Usage of STL debug checks in Debug build"                      ON)
option(DISALLOW_THREAD_EXECUTOR "Disallow usage of ThreadExecutor for -j"                   OFF)
if(DISALLOW_THREAD_EXECUTOR AND WIN32)
    message(FATAL_ERROR "Cannot disable usage of ThreadExecutor on Windows as no other executor implementation is currently available")
endif()
option(USE_BOOST            "Force usage of Boost"                                          OFF)
option(USE_BOOST_INT128     "Usage of Boost.Multiprecision 128-bit integer for Mathlib"     OFF)
if (NOT USE_BOOST AND USE_BOOST_INT128)
    message(FATAL_ERROR "USE_BOOST_INT128 requires USE_BOOST to be enabled")
endif()
option(USE_LIBCXX           "Use libc++ instead of libstdc++"                               OFF)

option(DISABLE_CRTDBG_MAP_ALLOC "Disable usage of Visual Studio C++ memory leak detection in Debug build" OFF)
option(NO_UNIX_SIGNAL_HANDLING "Disable usage of Unix Signal Handling"                      OFF)
option(NO_UNIX_BACKTRACE_SUPPORT "Disable usage of Unix Backtrace support"                  OFF)
option(NO_WINDOWS_SEH       "Disable usage of Windows SEH"                                  OFF)

option(ENABLE_CSA_ALPHA     "Enable Clang Static Analyzer alpha checkers for run-clang-tidy-csa target"  OFF)

# TODO: disable by default like make build?
option(FILESDIR "Hard-coded directory for files to load from"                               OFF)

if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.16")
    set(CMAKE_DISABLE_PRECOMPILE_HEADERS Off CACHE BOOL "Disable precompiled headers")
    # need to disable the prologue or it will be treated like a system header and not emit any warnings
    # see https://gitlab.kitware.com/cmake/cmake/-/issues/21219
    set(CMAKE_PCH_PROLOGUE "")
else()
    set(CMAKE_DISABLE_PRECOMPILE_HEADERS On CACHE BOOL "Disable precompiled headers")
endif()

set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE ${CMAKE_INSTALL_PREFIX}/include      CACHE PATH "Output directory for headers")
set(CMAKE_LIB_DIRS_CONFIGCMAKE     ${CMAKE_INSTALL_PREFIX}/lib          CACHE PATH "Output directory for libraries")

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)

string(LENGTH "${FILESDIR}" _filesdir_len)
# override FILESDIR if it is set or empty
if(FILESDIR OR ${_filesdir_len} EQUAL 0)
# TODO: verify that it is an abolute path?
    set(FILESDIR_DEF                   ${FILESDIR})
else()
    set(FILESDIR_DEF                   ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME} CACHE STRING "Cppcheck files directory")
endif()