add_definitions("-D_GNU_SOURCE")
endif()
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing -fsigned-char")
+add_compile_options(
+ -Wall
+ -fno-strict-aliasing
+ -fsigned-char)
if(NOT MSVC)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wtype-limits -Wignored-qualifiers")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Werror=format-security")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Winit-self -Wno-unknown-pragmas")
-
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-ignored-qualifiers")
+ add_compile_options(
+ -Wtype-limits
+ -Wignored-qualifiers
+ -Wpointer-arith
+ -Werror=format-security
+ -Winit-self
+ -Wno-unknown-pragmas)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wnon-virtual-dtor>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wno-ignored-qualifiers>)
endif()
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth-1024")
+add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-ftemplate-depth-1024>)
CHECK_CXX_COMPILER_FLAG("-Wpessimizing-move" COMPILER_SUPPORTS_PESSIMIZING_MOVE)
if(COMPILER_SUPPORTS_PESSIMIZING_MOVE)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpessimizing-move")
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wpessimizing-move>)
endif()
CHECK_CXX_COMPILER_FLAG("-Wredundant-move" COMPILER_SUPPORTS_REDUNDANT_MOVE)
if(COMPILER_SUPPORTS_REDUNDANT_MOVE)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wredundant-move")
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wredundant-move>)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
if(MINGW)
# The MINGW headers are missing some "const" qualifiers.
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpermissive")
+ add_compile_options($<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>:-fpermissive>)
else()
string(APPEND CMAKE_EXE_LINKER_FLAGS " -rdynamic")
endif()
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wstrict-null-sentinel -Woverloaded-virtual")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-new-ttp-matching")
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wstrict-null-sentinel>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Woverloaded-virtual>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-new-ttp-matching>)
# cmake does not add '-pie' for executables even if
# CMAKE_POSITION_INDEPENDENT_CODE is TRUE.
if(EXE_LINKER_USE_PIE)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_EXPORTS_C_FLAG}")
string(APPEND CMAKE_LINKER_FLAGS " -rdynamic -export-dynamic ${CMAKE_EXE_EXPORTS_C_FLAG}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-inconsistent-missing-override -Wno-mismatched-tags")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-private-field")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-address-of-packed-member")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-local-typedef")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-varargs")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-gnu-designator")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces -Wno-parentheses -Wno-deprecated-register")
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wno-inconsistent-missing-override>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wno-mismatched-tags>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wno-unused-private-field>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wno-address-of-packed-member>)
+ add_compile_options(
+ -Wno-unused-function
+ -Wno-unused-local-typedef
+ -Wno-varargs
+ -Wno-gnu-designator
+ -Wno-missing-braces
+ -Wno-parentheses
+ -Wno-deprecated-register)
if(FREEBSD)
# Need to use the GNU binutils linker to get versioning right.
string(APPEND CMAKE_EXE_LINKER_FLAGS " -fuse-ld=/usr/local/bin/ld -Wno-unused-command-line-argument")
string(APPEND CMAKE_SHARED_LINKER_FLAGS " -undefined dynamic_lookup")
endif()
endif(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
-set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}")
if(NOT CMAKE_BUILD_TYPE)
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
endif()
if(WITH_CEPH_DEBUG_MUTEX OR CMAKE_BUILD_TYPE STREQUAL Debug)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCEPH_DEBUG_MUTEX")
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-DCEPH_DEBUG_MUTEX>)
endif()
include(CheckCCompilerFlag)
endif()
CHECK_C_COMPILER_FLAG(-fstack-protector-strong HAS_STACK_PROTECT)
if (HAS_STACK_PROTECT)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-strong")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong")
+ add_compile_options(-fstack-protector-strong)
endif()
endif(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
CHECK_C_COMPILER_FLAG("-D_GLIBCXX_ASSERTIONS" HAS_GLIBCXX_ASSERTIONS)
if(HAS_GLIBCXX_ASSERTIONS AND CMAKE_BUILD_TYPE STREQUAL Debug)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_ASSERTIONS")
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-D_GLIBCXX_ASSERTIONS>)
endif()
include(SIMDExt)
CACHE STRING "Used if the C/C++ compiler supports the -fdiagnostics-color option. May have one of three values -- 'auto' (default), 'always', or 'never'. If set to 'always' and the compiler supports the option, 'make [...] | less -R' will make visible diagnostics colorization of compiler output.")
if(COMPILER_SUPPORTS_DIAGNOSTICS_COLOR)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=${DIAGNOSTICS_COLOR}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=${DIAGNOSTICS_COLOR}")
+ add_compile_options(-fdiagnostics-color=${DIAGNOSTICS_COLOR})
endif()
set(EXTRALIBS ${CMAKE_DL_LIBS})
find_program(HAVE_GCOV gcov)
if(NOT HAVE_GCOV)
message(FATAL_ERROR "Coverage Enabled but gcov Not Found")
- endif(NOT HAVE_GCOV)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage -O0")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
+ endif()
+ add_compile_options(
+ -fprofile-arcs
+ -ftest-coverage
+ -O0)
list(APPEND EXTRALIBS gcov)
endif(${ENABLE_COVERAGE})
# sort out which allocator to use
if(ALLOCATOR STREQUAL "tcmalloc")
set(ALLOC_LIBS gperftools::tcmalloc)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free")
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-malloc>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-calloc>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-realloc>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-free>)
elseif(ALLOCATOR STREQUAL "tcmalloc_minimal")
set(ALLOC_LIBS gperftools::tcmalloc_minimal)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free")
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-malloc>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-calloc>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-realloc>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-free>)
elseif(ALLOCATOR STREQUAL "jemalloc")
set(ALLOC_LIBS JeMalloc::JeMalloc)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free")
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-malloc>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-calloc>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-realloc>)
+ add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-builtin-free>)
endif()
if (WITH_BLKIN)