Only set _FORTIFY_SOURCE when a higher level of this flag has not been set
authorClaudio Cambra <claudio.cambra@gmail.com>
Tue, 5 Jul 2022 11:03:55 +0000 (13:03 +0200)
committerCamila <hello@camila.codes>
Tue, 12 Jul 2022 18:23:35 +0000 (20:23 +0200)
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
cmake/modules/DefineCompilerFlags.cmake
src/CMakeLists.txt

index b38c85569c811be51e7ac72a89fd3793662df48b..5463bfb247f80a4b04317e52e3d3f286fea9ab74 100644 (file)
@@ -47,7 +47,7 @@ if (${CMAKE_C_COMPILER_ID} MATCHES "(GNU|Clang)")
 
     if (CMAKE_BUILD_TYPE)
         string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
-        if (CMAKE_BUILD_TYPE_LOWER MATCHES "(release|relwithdebinfo|minsizerel)")
+        if (CMAKE_BUILD_TYPE_LOWER MATCHES "(release|relwithdebinfo|minsizerel)" AND (NOT ${CMAKE_C_FLAGS} MATCHES "FORTIFY_SOURCE=[3-9]"))
             check_c_compiler_flag("-Wp,-D_FORTIFY_SOURCE=2" WITH_FORTIFY_SOURCE)
             if (WITH_FORTIFY_SOURCE)
                 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wp,-D_FORTIFY_SOURCE=2")
index 0c051c9a46d01f674b971aad1967ed8b20084860..cd3805799eea542189392eb5d94c56c8dbf50723 100644 (file)
@@ -31,7 +31,7 @@ if(NOT MSVC)
   endif()
 
   string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
-  if(CMAKE_BUILD_TYPE_LOWER MATCHES "(release|relwithdebinfo|minsizerel)")
+  if(CMAKE_BUILD_TYPE_LOWER MATCHES "(release|relwithdebinfo|minsizerel)" AND ((NOT ${CMAKE_C_FLAGS} MATCHES "FORTIFY_SOURCE=[3-9]") AND (NOT ${CMAKE_CXX_FLAGS} MATCHES "FORTIFY_SOURCE=[3-9]")))
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2")
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORTIFY_SOURCE=2")
   endif()