summaryrefslogtreecommitdiffstats
path: root/build_settings.cmake
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-10-22 16:18:29 +0200
committerTor Egge <Tor.Egge@online.no>2022-10-22 16:18:29 +0200
commit90273908a48447367ed5d2ea8e56e41dfefe64ab (patch)
tree1999e050c31fac798d53deab4d696761e650ec14 /build_settings.cmake
parent2069eae150e087ff297d3c2142a7eac7fbacb374 (diff)
Add cmake flags for testing compilation with lto and hardening.
Diffstat (limited to 'build_settings.cmake')
-rw-r--r--build_settings.cmake12
1 files changed, 11 insertions, 1 deletions
diff --git a/build_settings.cmake b/build_settings.cmake
index 0d5b51cc26f..819388a081a 100644
--- a/build_settings.cmake
+++ b/build_settings.cmake
@@ -26,7 +26,7 @@ set(AUTORUN_UNIT_TESTS FALSE CACHE BOOL "If TRUE, tests will be run immediately
# Warnings
set(C_WARN_OPTS "-Wuninitialized -Werror -Wall -W -Wchar-subscripts -Wcomment -Wformat -Wparentheses -Wreturn-type -Wswitch -Wtrigraphs -Wunused -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings")
-if (VESPA_USE_SANITIZER)
+if (VESPA_USE_SANITIZER OR VESPA_DISABLE_INLINE_WARNINGS)
# Instrumenting code changes binary size, which triggers inlining warnings that
# don't happen during normal, non-instrumented compilation.
else()
@@ -71,6 +71,11 @@ else()
set(VESPA_XXHASH_DEFINE "-DXXH_INLINE_ALL")
endif()
+if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND VESPA_USE_LTO)
+ # Enable lto
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto=auto -ffat-lto-objects")
+endif()
+
# C and C++ compiler flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O3 -fno-omit-frame-pointer ${C_WARN_OPTS} -fPIC ${VESPA_CXX_ABI_FLAGS} ${VESPA_XXHASH_DEFINE} -DBOOST_DISABLE_ASSERTS ${VESPA_CPU_ARCH_FLAGS} ${EXTRA_C_FLAGS}")
# AddressSanitizer/ThreadSanitizer work for both GCC and Clang
@@ -93,6 +98,11 @@ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
endif()
endif()
+# Hardening
+if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND VESPA_USE_HARDENING)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection")
+endif()
+
# Linker flags
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")