From: maier Date: Sat, 22 Sep 2012 15:11:09 +0000 (+0000) Subject: Bugfix: Test the support of a linker flag by actually trying to link with X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be907c4171b248a3d90ecf483b8d31a208a38d4e;p=dealii-svn.git Bugfix: Test the support of a linker flag by actually trying to link with it... git-svn-id: https://svn.dealii.org/branches/branch_cmake@26632 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/cmake/macros/macro_enable_if_links.cmake b/deal.II/cmake/macros/macro_enable_if_links.cmake new file mode 100644 index 0000000000..79dba18725 --- /dev/null +++ b/deal.II/cmake/macros/macro_enable_if_links.cmake @@ -0,0 +1,23 @@ +# +# Tests whether it is possible to compile and link a dummy program with a +# given flag. +# If so, add it to variable. +# +# Usage: +# ENABLE_IF_LINKS(variable flag) +# + +MACRO(ENABLE_IF_LINKS variable flag) + ADD_FLAGS(CMAKE_REQUIRED_FLAGS "${flag}") + CHECK_CXX_SOURCE_COMPILES( + " + int main() { return 0; } + " + DEAL_II_HAVE_FLAG_${flag} + ) + STRIP_FLAG(CMAKE_REQUIRED_FLAGS "${flag}") + IF(DEAL_II_HAVE_FLAG_${flag}) + SET(${variable} "${${variable}} ${flag}") + ENDIF() +ENDMACRO() + diff --git a/deal.II/cmake/setup_compiler_flags_gnu.cmake b/deal.II/cmake/setup_compiler_flags_gnu.cmake index b768c14d47..d1c4150967 100644 --- a/deal.II/cmake/setup_compiler_flags_gnu.cmake +++ b/deal.II/cmake/setup_compiler_flags_gnu.cmake @@ -23,7 +23,7 @@ ENABLE_IF_SUPPORTED(CMAKE_CXX_FLAGS "-fpic") # Check whether the -as-needed flag is available. If so set it to link # the deal.II library with it. # -ENABLE_IF_SUPPORTED(CMAKE_SHARED_LINKER_FLAGS "-Wl,--as-needed") +ENABLE_IF_LINKS(CMAKE_SHARED_LINKER_FLAGS "-Wl,--as-needed") # @@ -93,8 +93,9 @@ IF(CMAKE_SYSTEM_NAME MATCHES "CYGWIN") # TODO: Check for correct name # you accidentally defined one symbol multiple times... # (added 2005/07/13, Ralf B. Schulz) # (modified 2005/12/20, Ralf B. Schulz) - ENABLE_IF_SUPPORTED(CMAKE_SHARED_LINKER_FLAGS - "-Xlinker --allow-multiple-definition") + ENABLE_IF_LINKS(CMAKE_SHARED_LINKER_FLAGS + "-Xlinker --allow-multiple-definition" + ) ENDIF()