diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2013-04-09 14:11:59 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2013-04-09 14:11:59 +0200 |
commit | 8449202e6ad57c1a86097c5cd3d3d26ec5046d68 (patch) | |
tree | 2d5ea490546f82507b3ca22fa29fee4f561fc992 /cmake/Modules | |
parent | cfa9fc619267fd14999949bb3d8a83d4273f43af (diff) | |
download | cmocka-8449202e6ad57c1a86097c5cd3d3d26ec5046d68.tar.gz cmocka-8449202e6ad57c1a86097c5cd3d3d26ec5046d68.tar.bz2 cmocka-8449202e6ad57c1a86097c5cd3d3d26ec5046d68.zip |
cmake: Fix check for fortify source.
Diffstat (limited to 'cmake/Modules')
-rw-r--r-- | cmake/Modules/CheckCCompilerFlagSSP.cmake (renamed from cmake/Modules/MacroCheckCCompilerFlagSSP.cmake) | 20 | ||||
-rw-r--r-- | cmake/Modules/DefineCompilerFlags.cmake | 22 |
2 files changed, 24 insertions, 18 deletions
diff --git a/cmake/Modules/MacroCheckCCompilerFlagSSP.cmake b/cmake/Modules/CheckCCompilerFlagSSP.cmake index b64fb45..2fe4395 100644 --- a/cmake/Modules/MacroCheckCCompilerFlagSSP.cmake +++ b/cmake/Modules/CheckCCompilerFlagSSP.cmake @@ -1,11 +1,12 @@ # - Check whether the C compiler supports a given flag in the # context of a stack checking compiler option. + # CHECK_C_COMPILER_FLAG_SSP(FLAG VARIABLE) # # FLAG - the compiler flag # VARIABLE - variable to store the result -# -# This actually calls the check_c_source_compiles macro. +# +# This actually calls check_c_source_compiles. # See help for CheckCSourceCompiles for a listing of variables # that can modify the build. @@ -15,12 +16,11 @@ # For details see the accompanying COPYING-CMAKE-SCRIPTS file. -INCLUDE(CheckCSourceCompiles) - -MACRO (CHECK_C_COMPILER_FLAG_SSP _FLAG _RESULT) - SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") - SET(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}") - CHECK_C_SOURCE_COMPILES("int main(int argc, char **argv) { char buffer[256]; return buffer[argc]=0;}" ${_RESULT}) - SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}") -ENDMACRO (CHECK_C_COMPILER_FLAG_SSP) +include(CheckCSourceCompiles) +function(CHECK_C_COMPILER_FLAG_SSP _FLAG _RESULT) + set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") + set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}") + check_c_source_compiles("int main(int argc, char **argv) { char buffer[256]; return buffer[argc]=0;}" ${_RESULT}) + set(CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}") +endfunction(CHECK_C_COMPILER_FLAG_SSP) diff --git a/cmake/Modules/DefineCompilerFlags.cmake b/cmake/Modules/DefineCompilerFlags.cmake index 239ddeb..aea8128 100644 --- a/cmake/Modules/DefineCompilerFlags.cmake +++ b/cmake/Modules/DefineCompilerFlags.cmake @@ -1,15 +1,16 @@ # define system dependent compiler flags include(CheckCCompilerFlag) -include(MacroCheckCCompilerFlagSSP) +include(CheckCCompilerFlagSSP) if (UNIX AND NOT WIN32) # # Define GNUCC compiler flags # - if (${CMAKE_C_COMPILER_ID} MATCHES GNU) + if (${CMAKE_C_COMPILER_ID} MATCHES "(GNU|Clang)") + # add -Wconversion ? - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -pedantic") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -pedantic -pedantic-errors") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wshadow -Wmissing-prototypes -Wdeclaration-after-statement") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused -Wfloat-equal -Wpointer-arith -Wwrite-strings -Wformat-security") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-format-attribute") @@ -25,16 +26,21 @@ if (UNIX AND NOT WIN32) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector") endif (WITH_STACK_PROTECTOR) - check_c_compiler_flag("-D_FORTIFY_SOURCE=2" WITH_FORTIFY_SOURCE) - if (WITH_FORTIFY_SOURCE) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2") - endif (WITH_FORTIFY_SOURCE) + if (CMAKE_BUILD_TYPE) + string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER) + if (NOT CMAKE_BUILD_TYPE_LOWER MATCHES debug) + check_c_compiler_flag("-D_FORTIFY_SOURCE=2" WITH_FORTIFY_SOURCE) + if (WITH_FORTIFY_SOURCE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2") + endif (WITH_FORTIFY_SOURCE) + endif() + endif() check_c_compiler_flag("-D_GNU_SOURCE" WITH_GNU_SOURCE) if (WITH_GNU_SOURCE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE") endif (WITH_GNU_SOURCE) - endif (${CMAKE_C_COMPILER_ID} MATCHES GNU) + endif (${CMAKE_C_COMPILER_ID} MATCHES "(GNU|Clang)") # # Check for large filesystem support |