From: maier Date: Fri, 28 Sep 2012 09:34:56 +0000 (+0000) Subject: Cleanup: Use PUSH_TEST_FLAG() and POP_TEST_FLAG where appropriate X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b623a087a67214d8e976fdd4f3dcb04f87633f61;p=dealii-svn.git Cleanup: Use PUSH_TEST_FLAG() and POP_TEST_FLAG where appropriate git-svn-id: https://svn.dealii.org/branches/branch_cmake@26823 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/cmake/checks/check_for_compiler_bugs.cmake b/deal.II/cmake/checks/check_for_compiler_bugs.cmake index 7beb7b35f1..8d5118b7c3 100644 --- a/deal.II/cmake/checks/check_for_compiler_bugs.cmake +++ b/deal.II/cmake/checks/check_for_compiler_bugs.cmake @@ -54,14 +54,16 @@ CHECK_CXX_COMPILER_BUG( # # - maier, rewritten 2012 # -ADD_FLAGS(CMAKE_REQUIRED_FLAGS "-Wreturn-type -Werror") +PUSH_TEST_FLAG("-Wreturn-type") +PUSH_TEST_FLAG("-Werror") CHECK_CXX_COMPILER_BUG( " const double foo() { return 1.; } int main() { return 0; } " DEAL_II_WRETURN_TYPE_CONST_QUALIFIER_BUG) -STRIP_FLAG(CMAKE_REQUIRED_FLAGS "-Wreturn-type -Werror") +POP_TEST_FLAG() +POP_TEST_FLAG() IF(DEAL_II_WRETURN_TYPE_CONST_QUALIFIER_BUG) ENABLE_IF_SUPPORTED(CMAKE_CXX_FLAGS -Wno-return-type) @@ -104,14 +106,16 @@ ENDIF() CHECK_INCLUDE_FILE_CXX("mpi.h" HAVE_MPI_H) IF(HAVE_MPI_H) - ADD_FLAGS(CMAKE_REQUIRED_FLAGS "-Wunused-parameter -Werror") + PUSH_TEST_FLAG("-Wunused-parameter") + PUSH_TEST_FLAG("-Werror") CHECK_CXX_COMPILER_BUG( " #include int main() { return 0; } " DEAL_II_ADVANCE_WARNING_BUG) - STRIP_FLAG(CMAKE_REQUIRED_FLAGS "-Wunused-parameter -Werror") + POP_TEST_FLAG() + POP_TEST_FLAG() IF(DEAL_II_ADVANCE_WARNING_BUG) ENABLE_IF_SUPPORTED(CMAKE_CXX_FLAGS "-Wno-unused-parameter") diff --git a/deal.II/cmake/checks/check_for_compiler_features.cmake b/deal.II/cmake/checks/check_for_compiler_features.cmake index f112d030fd..33f115f318 100644 --- a/deal.II/cmake/checks/check_for_compiler_features.cmake +++ b/deal.II/cmake/checks/check_for_compiler_features.cmake @@ -427,7 +427,7 @@ CHECK_CXX_SOURCE_COMPILES( # ...and then verify whether it actually errors out if # -Werror is given -ADD_FLAGS(CMAKE_REQUIRED_FLAGS "-Werror") +PUSH_TEST_FLAG("-Werror") CHECK_CXX_SOURCE_COMPILES( " int old_fn () __attribute__((deprecated)); @@ -437,7 +437,7 @@ CHECK_CXX_SOURCE_COMPILES( int main () {} " DEAL_II_COMPILER_HAS_ATTRIBUTE_DEPRECATED_WARNING) -STRIP_FLAG(CMAKE_REQUIRED_FLAGS "-Werror") +POP_TEST_FLAG() IF(DEAL_II_COMPILER_HAS_ATTRIBUTE_DEPRECATED AND @@ -448,3 +448,4 @@ ELSE() MESSAGE(STATUS "Compiler does not support the deprecated attribute") SET(DEAL_II_DEPRECATED " ") ENDIF() + diff --git a/deal.II/cmake/checks/check_for_cxx_features.cmake b/deal.II/cmake/checks/check_for_cxx_features.cmake index 71c0689fb1..4d6245face 100644 --- a/deal.II/cmake/checks/check_for_cxx_features.cmake +++ b/deal.II/cmake/checks/check_for_cxx_features.cmake @@ -20,19 +20,27 @@ CHECK_CXX_SOURCE_COMPILES( # FOREACH(test_flag "-std=c++11" - "-std=c++-x" + "-std=c++0x" ) - SET(DEAL_II_CXX11_FLAG ${test_flag}) + CHECK_CXX_COMPILER_FLAG("${test_flag}" DEAL_II_HAVE_CXX11_FLAG) + IF(DEAL_II_HAVE_CXX11_FLAG) + # We have found a CXX11_FLAG that the compiler understands + SET(DEAL_II_CXX11_FLAG "${test_flag}") BREAK() + ELSE() + # Remove test result from cache and try the next flag in the list + UNSET(DEAL_II_HAVE_CXX11_FLAG CACHE) ENDIF() + ENDFOREACH() + IF(DEAL_II_HAVE_CXX11_FLAG) # Set CMAKE_REQUIRED_FLAGS for the unit tests - ADD_FLAGS(CMAKE_REQUIRED_FLAGS "${DEAL_II_CXX11_FLAG}") + PUSH_TEST_FLAG("${DEAL_II_CXX11_FLAG}") CHECK_CXX_SOURCE_COMPILES( " @@ -94,7 +102,7 @@ IF(DEAL_II_HAVE_CXX11_FLAG) # multithreading is requested, it will be added to CXXFLAGS # later on so there is no need to do this here. # - ADD_FLAGS(CMAKE_REQUIRED_FLAGS "-lpthread") + PUSH_TEST_FLAG("-lpthread") CHECK_CXX_SOURCE_RUNS( " #include @@ -102,7 +110,7 @@ IF(DEAL_II_HAVE_CXX11_FLAG) int main(){ std::thread t(f,1); t.join(); return 0; } " DEAL_II_HAVE_CXX11_THREAD_RUN_OK) - STRIP_FLAG(CMAKE_REQUIRED_FLAGS "-lpthread") + POP_TEST_FLAG() CHECK_CXX_SOURCE_COMPILES( " @@ -151,14 +159,18 @@ IF(DEAL_II_HAVE_CXX11_FLAG) ELSE() MESSAGE(STATUS "Insufficient C++11 support. Disabling ${DEAL_II_CXX11_FLAG}.") + ENDIF() + IF(DEAL_II_CAN_USE_CXX11) # # Also test for a couple of C++11 things that we don't use in the # library but that users may want to use in their applications and that # we might want to test in the testsuite # + # TODO: Actually we have to export the test results somehow. :-] + # CHECK_CXX_SOURCE_COMPILES( " @@ -186,7 +198,7 @@ IF(DEAL_II_HAVE_CXX11_FLAG) ENDIF() ENDIF() - STRIP_FLAG(CMAKE_REQUIRED_FLAGS "${DEAL_II_CXX11_FLAG}") + POP_TEST_FLAG() ELSE() MESSAGE(STATUS "Insufficient C++11 support. Disabling ${DEAL_II_CXX11_FLAG}.") diff --git a/deal.II/cmake/configure/configure_trilinos.cmake b/deal.II/cmake/configure/configure_trilinos.cmake index 05cc765475..51c9f3228b 100644 --- a/deal.II/cmake/configure/configure_trilinos.cmake +++ b/deal.II/cmake/configure/configure_trilinos.cmake @@ -103,7 +103,7 @@ MACRO(FEATURE_TRILINOS_FIND_EXTERNAL var) # Test whether that is indeed the case # LIST(APPEND CMAKE_REQUIRED_INCLUDES ${TRILINOS_INCLUDE_DIRS}) - ADD_FLAGS(CMAKE_REQUIRED_FLAGS "${DEAL_II_CXX11_FLAG}") + PUSH_TEST_FLAG("${DEAL_II_CXX11_FLAG}") CHECK_CXX_SOURCE_COMPILES( " #include @@ -115,14 +115,14 @@ MACRO(FEATURE_TRILINOS_FIND_EXTERNAL var) # # Try whether exporting HAS_C99_TR1_CMATH helps: # - ADD_FLAGS(CMAKE_REQUIRED_FLAGS "-DHAS_C99_TR1_CMATH") + PUSH_TEST_FLAG("-DHAS_C99_TR1_CMATH") CHECK_CXX_SOURCE_COMPILES( " #include int main(){ return 0; } " TRILINOS_HAS_C99_TR1_WORKAROUND) - STRIP_FLAG(CMAKE_REQUIRED_FLAGS "-DHAS_C99_TR1_CMATH") + POP_TEST_FLAG() IF(TRILINOS_HAS_C99_TR1_WORKAROUND) LIST(APPEND DEAL_II_DEFINITIONS "HAS_C99_TR1_CMATH") @@ -135,7 +135,7 @@ MACRO(FEATURE_TRILINOS_FIND_EXTERNAL var) SET(${var} FALSE) ENDIF() ENDIF() - STRIP_FLAG(CMAKE_REQUIRED_FLAGS "${DEAL_II_CXX11_FLAG") + POP_TEST_FLAG() LIST(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES ${TRILINOS_INCLUDE_DIRS}) # diff --git a/deal.II/cmake/macros/macro_pop_test_flag.cmake b/deal.II/cmake/macros/macro_pop_test_flag.cmake index 70e421d7a7..d187cda720 100644 --- a/deal.II/cmake/macros/macro_pop_test_flag.cmake +++ b/deal.II/cmake/macros/macro_pop_test_flag.cmake @@ -8,9 +8,9 @@ # POP_TEST_FLAG() # -MACRO(ADD_TEST_FLAG flag) +MACRO(POP_TEST_FLAG) SET(CMAKE_REQUIRED_FLAGS " ${CMAKE_REQUIRED_FLAGS}") - STRING(REGEX_REPLACE " -[^ ]+$" "" + STRING(REGEX REPLACE " -[^ ]+$" "" CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}" ) diff --git a/deal.II/cmake/macros/macro_push_test_flag.cmake b/deal.II/cmake/macros/macro_push_test_flag.cmake index c8aed8d322..267bcda8b5 100644 --- a/deal.II/cmake/macros/macro_push_test_flag.cmake +++ b/deal.II/cmake/macros/macro_push_test_flag.cmake @@ -6,8 +6,10 @@ # PUSH_TEST_FLAG("flag") # -MACRO(ADD_TEST_FLAG flag) +MACRO(PUSH_TEST_FLAG flag) + SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${flag}") STRING(STRIP "${CMAKE_REQUIRED_FLAGS}" CMAKE_REQUIRED_FLAGS) + ENDMACRO()