aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoss Smith <rjsm@umich.edu>2014-12-12 12:45:21 -0500
committerRoss Smith <rjsm@umich.edu>2014-12-17 23:05:46 -0500
commit1c3d093c85dd021eabb87fb67fe942487869480e (patch)
tree23837f5a137f53b71b54b28d59e88334802d8e81
parent742ada086916212dd29c583b6f758612f9b1aa1d (diff)
downloadrneovim-1c3d093c85dd021eabb87fb67fe942487869480e.tar.gz
rneovim-1c3d093c85dd021eabb87fb67fe942487869480e.tar.bz2
rneovim-1c3d093c85dd021eabb87fb67fe942487869480e.zip
Detect and propagate _FORTIFY_SOURCE prefix
Get prefix to a -D_FORTIFY_SOURCE string if it is present in CFLAGS and apply the prefix to flags added to redefine _FORTIFY_SOURCE in CFLAGS and CPPFLAGS * fixes 1569
-rw-r--r--CMakeLists.txt10
1 files changed, 8 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 20d653a082..9f41f03241 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -86,10 +86,16 @@ main(void)
" _FORTIFY_SOURCE_ACCEPTABLE)
if(NOT _FORTIFY_SOURCE_ACCEPTABLE)
+ # Extract possible prefix to _FORTIFY_SOURCE (e.g. -Wp,-D_FORTIFY_SOURCE).
+ STRING(REGEX MATCH "[^\ ]+-D_FORTIFY_SOURCE" _FORTIFY_SOURCE_PREFIX "${CMAKE_C_FLAGS}")
+ STRING(REPLACE "-D_FORTIFY_SOURCE" "" _FORTIFY_SOURCE_PREFIX "${_FORTIFY_SOURCE_PREFIX}" )
+ if (NOT _FORTIFY_SOURCE_PREFIX STREQUAL "")
+ message(STATUS "Detected _FORTIFY_SOURCE Prefix=${_FORTIFY_SOURCE_PREFIX}")
+ endif()
# -U in add_definitions doesn't end up in the correct spot, so we add it to
# the flags variable instead.
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_FORTIFY_SOURCE_PREFIX}-U_FORTIFY_SOURCE ${_FORTIFY_SOURCE_PREFIX}-D_FORTIFY_SOURCE=1")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_FORTIFY_SOURCE_PREFIX}-U_FORTIFY_SOURCE ${_FORTIFY_SOURCE_PREFIX}-D_FORTIFY_SOURCE=1")
endif()
add_definitions(-Wall -Wextra -pedantic -Wno-unused-parameter