aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2010-04-28 18:01:15 +0200
committerAris Adamantiadis <aris@0xbadc0de.be>2010-04-28 18:01:15 +0200
commitcbd0a8f4b589f37f113c0b60fd9a9a8818cc3359 (patch)
tree57d66d527fa7f0b2b2d1ea111f13be38a478adff /cmake
parentecbe577be320a19ae3e3672c2f9072c55d53fa29 (diff)
downloadlibssh-cbd0a8f4b589f37f113c0b60fd9a9a8818cc3359.tar.gz
libssh-cbd0a8f4b589f37f113c0b60fd9a9a8818cc3359.tar.xz
libssh-cbd0a8f4b589f37f113c0b60fd9a9a8818cc3359.zip
Change the test file for stackprotector for clang
Now compiles with clang !
Diffstat (limited to 'cmake')
-rw-r--r--cmake/Modules/DefineCompilerFlags.cmake3
-rw-r--r--cmake/Modules/MacroCheckCCompilerFlagSSP.cmake25
2 files changed, 27 insertions, 1 deletions
diff --git a/cmake/Modules/DefineCompilerFlags.cmake b/cmake/Modules/DefineCompilerFlags.cmake
index 7cf8d8a..39964d7 100644
--- a/cmake/Modules/DefineCompilerFlags.cmake
+++ b/cmake/Modules/DefineCompilerFlags.cmake
@@ -1,6 +1,7 @@
# define system dependent compiler flags
include(CheckCCompilerFlag)
+include(MacroCheckCCompilerFlagSSP)
if (UNIX AND NOT WIN32)
if (${CMAKE_C_COMPILER_ID} MATCHES GNU)
@@ -13,7 +14,7 @@ if (UNIX AND NOT WIN32)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
endif (WITH_FPIC)
- check_c_compiler_flag("-fstack-protector" WITH_STACK_PROTECTOR)
+ check_c_compiler_flag_ssp("-fstack-protector" WITH_STACK_PROTECTOR)
if (WITH_STACK_PROTECTOR)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
endif (WITH_STACK_PROTECTOR)
diff --git a/cmake/Modules/MacroCheckCCompilerFlagSSP.cmake b/cmake/Modules/MacroCheckCCompilerFlagSSP.cmake
new file mode 100644
index 0000000..6e83a8b
--- /dev/null
+++ b/cmake/Modules/MacroCheckCCompilerFlagSSP.cmake
@@ -0,0 +1,25 @@
+# - Check whether the C compiler supports a given flag.
+# CHECK_C_COMPILER_FLAG(FLAG VARIABLE)
+#
+# FLAG - the compiler flag
+# VARIABLE - variable to store the result
+#
+# This actually calls the check_c_source_compiles macro.
+# See help for CheckCSourceCompiles for a listing of variables
+# that can modify the build.
+
+# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# 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)
+