summaryrefslogtreecommitdiff
path: root/cmake/Modules
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2013-04-09 14:11:59 +0200
committerAndreas Schneider <asn@cryptomilk.org>2013-04-09 14:11:59 +0200
commit8449202e6ad57c1a86097c5cd3d3d26ec5046d68 (patch)
tree2d5ea490546f82507b3ca22fa29fee4f561fc992 /cmake/Modules
parentcfa9fc619267fd14999949bb3d8a83d4273f43af (diff)
downloadcmocka-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.cmake22
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