diff options
author | John Szakmeister <john@szakmeister.net> | 2014-12-16 06:02:42 -0500 |
---|---|---|
committer | John Szakmeister <john@szakmeister.net> | 2014-12-16 06:02:42 -0500 |
commit | 0a5dad8a10da7988f2c21fa26bb61aa6ce53205d (patch) | |
tree | 7b731259d5299fce806a6b763312635247b6080b | |
parent | 6a193a0e2e22ae31dd04957174b1c958d1b792ec (diff) | |
download | rneovim-0a5dad8a10da7988f2c21fa26bb61aa6ce53205d.tar.gz rneovim-0a5dad8a10da7988f2c21fa26bb61aa6ce53205d.tar.bz2 rneovim-0a5dad8a10da7988f2c21fa26bb61aa6ce53205d.zip |
build: include the flags for the build type in the _FORTIFY_SOURCE check
It turns out the check was being performed without optimizations enabled
even when the CMAKE_BUILD_TYPE was set to a release build. This led to
_FORTIFY_SOURCE's level not being correctly determined, and us failing
to apply the correct workaround.
To counter this, we'll take the default flags for the build type and
apply them. Also, if options are passed via CFLAGS, they are
automatically passed on to the underlying build. So this should cover
all the necessary ground.
This fixes #1647.
-rw-r--r-- | CMakeLists.txt | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 20d653a082..e1cf1459e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,6 +74,17 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wconversion") # does not work with Neovim due to some uses of dynamically-sized structures. # See https://github.com/neovim/neovim/issues/223 for details. include(CheckCSourceCompiles) + +# Include the build type's default flags in the check for _FORTIFY_SOURCE, +# otherwise we may incorrectly identify the level as acceptable and find out +# later that it was not when optimizations were enabled. CFLAGS is applied +# even though you don't see it in CMAKE_REQUIRED_FLAGS. +set(INIT_FLAGS_NAME CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}) +string(TOUPPER ${INIT_FLAGS_NAME} INIT_FLAGS_NAME) +if(${INIT_FLAGS_NAME}) + set(CMAKE_REQUIRED_FLAGS "${${INIT_FLAGS_NAME}}") +endif() + check_c_source_compiles(" #if defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE > 1 #error \"_FORTIFY_SOURCE > 1\" |