From d512addc7aa0911a443928ed6fd5ff0854b2bc56 Mon Sep 17 00:00:00 2001 From: Matthias Maier Date: Wed, 13 Jul 2016 09:41:16 -0500 Subject: [PATCH] CMake: Simplify CHECK_COMPILER_SETUP macro --- cmake/macros/macro_check_compiler_setup.cmake | 25 +++++++++---------- cmake/setup_compiler_flags.cmake | 11 ++++---- cmake/setup_finalize.cmake | 11 ++++---- 3 files changed, 22 insertions(+), 25 deletions(-) diff --git a/cmake/macros/macro_check_compiler_setup.cmake b/cmake/macros/macro_check_compiler_setup.cmake index 69f813613a..85e3b984f2 100644 --- a/cmake/macros/macro_check_compiler_setup.cmake +++ b/cmake/macros/macro_check_compiler_setup.cmake @@ -15,38 +15,37 @@ # # Usage: -# CHECK_COMPILER_SETUP( -# _compiler_flags_variable _linker_flags_variable _var +# CHECK_COMPILER_SETUP("compiler flag string" "linker flag string" _var # [libraries] # ) # # This macro tries to compile and link a simple "int main(){ return 0; } -# with the given set of compiler and flags provided in -# _compiler_flags_variable and _linker_flags_variable and an optional list -# of libraries to link against. If the test is succesful the variable -# ${_var} is set to true, otherwise to false. +# with the given set of provided compiler and linker flags and an optional +# list of libraries to link against. If the test is succesful the variable +# ${_var} is set to true, otherwise it is set to false. # -MACRO(CHECK_COMPILER_SETUP _compiler_flags_variable _linker_flags_variable _var) +MACRO(CHECK_COMPILER_SETUP _compiler_flags _linker_flags _var) # # Rerun this test if flags have changed: # - IF(NOT "${${_compiler_flags_variable}}" STREQUAL "${CACHED_${_var}_${_compiler_flags_variable}}" - OR NOT "${${_linker_flags_variable}}" STREQUAL "${CACHED_${_var}_${_linker_flags_variable}}" + IF(NOT "${_compiler_flags}" STREQUAL "${CACHED_${_var}_compiler_flags}" + OR NOT "${_linker_flags}" STREQUAL "${CACHED_${_var}_linker_flags}" OR NOT "${ARGN}" STREQUAL "${CACHED_${_var}_ARGN}") UNSET(${_var} CACHE) ENDIF() - SET(CACHED_${_var}_${_compiler_flags_variable} "${${_compiler_flags_variable}}" + SET(CACHED_${_var}_compiler_flags "${_compiler_flags}" CACHE INTERNAL "" FORCE ) - SET(CACHED_${_var}_${_linker_flags_variable} "${${_linker_flags_variable}}" + SET(CACHED_${_var}_linker_flags "${_linker_flags}" CACHE INTERNAL "" FORCE ) SET(CACHED_${_var}_ARGN "${ARGN}" CACHE INTERNAL "" FORCE) - SET(CMAKE_REQUIRED_FLAGS ${${_compiler_flags_variable}}) - SET(CMAKE_REQUIRED_LIBRARIES ${${_linker_flags_variable}} ${ARGN}) + SET(CMAKE_REQUIRED_FLAGS ${_compiler_flags}) + SET(CMAKE_REQUIRED_LIBRARIES ${_linker_flags} ${ARGN}) + CHECK_CXX_SOURCE_COMPILES("int main(){ return 0; }" ${_var}) RESET_CMAKE_REQUIRED() diff --git a/cmake/setup_compiler_flags.cmake b/cmake/setup_compiler_flags.cmake index 12c5a10c0e..dd0459cb7a 100644 --- a/cmake/setup_compiler_flags.cmake +++ b/cmake/setup_compiler_flags.cmake @@ -72,10 +72,9 @@ # FOREACH(build ${DEAL_II_BUILD_TYPES}) - SET(_cxx_flags_${build} "${DEAL_II_CXX_FLAGS_SAVED} ${DEAL_II_CXX_FLAGS_${build}_SAVED}") - SET(_linker_flags_${build} "${DEAL_II_CXX_FLAGS_SAVED} ${DEAL_II_CXX_FLAGS_${build}_SAVED}") - - CHECK_COMPILER_SETUP(_cxx_flags_${build} _linker_flags_${build} + CHECK_COMPILER_SETUP( + "${DEAL_II_CXX_FLAGS_SAVED} ${DEAL_II_CXX_FLAGS_${build}_SAVED}" + "${DEAL_II_LINKER_FLAGS_SAVED} ${DEAL_II_LINKER_FLAGS_${build}_SAVED}" DEAL_II_HAVE_USABLE_USER_FLAGS_${build} ${DEAL_II_LIBRARIES} ${DEAL_II_LIBRARIES_${build}} ) @@ -83,8 +82,8 @@ FOREACH(build ${DEAL_II_BUILD_TYPES}) IF(NOT DEAL_II_HAVE_USABLE_USER_FLAGS_${build}) MESSAGE(FATAL_ERROR " Configuration error: Cannot compile with the user supplied flags: - CXX flags (${build}): ${_cxx_flags_${build}} - LD flags (${build}): ${_linker_flags_${build}} + CXX flags (${build}): ${DEAL_II_CXX_FLAGS_SAVED} ${DEAL_II_CXX_FLAGS_${build}_SAVED} + LD flags (${build}): ${DEAL_II_LINKER_FLAGS_SAVED} ${DEAL_II_LINKER_FLAGS_${build}_SAVED} LIBRARIES (${build}): ${DEAL_II_LIBRARIES};${DEAL_II_LIBRARIES_${build}} Please check the CMake variables DEAL_II_CXX_FLAGS, DEAL_II_CXX_FLAGS_${build}, diff --git a/cmake/setup_finalize.cmake b/cmake/setup_finalize.cmake index 2b7d97703c..4363738e8d 100644 --- a/cmake/setup_finalize.cmake +++ b/cmake/setup_finalize.cmake @@ -84,10 +84,9 @@ ENDFOREACH() # FOREACH(build ${DEAL_II_BUILD_TYPES}) - SET(_cxx_flags_${build} "${DEAL_II_CXX_FLAGS} ${DEAL_II_CXX_FLAGS_${build}}") - SET(_linker_flags_${build} "${DEAL_II_CXX_FLAGS} ${DEAL_II_CXX_FLAGS_${build}}") - - CHECK_COMPILER_SETUP(_cxx_flags_${build} _linker_flags_${build} + CHECK_COMPILER_SETUP( + "${DEAL_II_CXX_FLAGS} ${DEAL_II_CXX_FLAGS_${build}}" + "${DEAL_II_LINKER_FLAGS} ${DEAL_II_LINKER_FLAGS_${build}}" DEAL_II_HAVE_USABLE_FLAGS_${build} ${DEAL_II_LIBRARIES} ${DEAL_II_LIBRARIES_${build}} ) @@ -96,8 +95,8 @@ FOREACH(build ${DEAL_II_BUILD_TYPES}) MESSAGE(FATAL_ERROR " Configuration error: Cannot compile a test program with the final set of compiler and linker flags: - CXX flags (${build}): ${_cxx_flags_${build}} - LD flags (${build}): ${_linker_flags_${build}} + CXX flags (${build}): ${DEAL_II_CXX_FLAGS} ${DEAL_II_CXX_FLAGS_${build}} + LD flags (${build}): ${DEAL_II_LINKER_FLAGS} ${DEAL_II_LINKER_FLAGS_${build}} LIBRARIES (${build}): ${DEAL_II_LIBRARIES};${DEAL_II_LIBRARIES_${build}} \n\n" ) -- 2.39.5