From cbd0a8f4b589f37f113c0b60fd9a9a8818cc3359 Mon Sep 17 00:00:00 2001 From: Aris Adamantiadis Date: Wed, 28 Apr 2010 18:01:15 +0200 Subject: Change the test file for stackprotector for clang Now compiles with clang ! --- cmake/Modules/DefineCompilerFlags.cmake | 3 ++- cmake/Modules/MacroCheckCCompilerFlagSSP.cmake | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 cmake/Modules/MacroCheckCCompilerFlagSSP.cmake (limited to 'cmake/Modules') diff --git a/cmake/Modules/DefineCompilerFlags.cmake b/cmake/Modules/DefineCompilerFlags.cmake index 7cf8d8a2..39964d76 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 00000000..6e83a8b4 --- /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, +# +# 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) + -- cgit v1.2.3