From: maier Date: Thu, 20 Sep 2012 09:06:17 +0000 (+0000) Subject: A very big bugfix... X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9ba85de54a6a787c4b1158a3366f8b21e5557f15;p=dealii-svn.git A very big bugfix... git-svn-id: https://svn.dealii.org/branches/branch_cmake@26550 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/contrib/cmake/check/check_for_compiler_bugs.cmake b/deal.II/contrib/cmake/check/check_for_compiler_bugs.cmake index 68bfbc4b90..3ec5d882f7 100644 --- a/deal.II/contrib/cmake/check/check_for_compiler_bugs.cmake +++ b/deal.II/contrib/cmake/check/check_for_compiler_bugs.cmake @@ -95,14 +95,14 @@ CHECK_CXX_COMPILER_BUG( # # - maier, rewritten 2012 # -LIST(APPEND CMAKE_REQUIRED_FLAGS "-Wreturn-type -Werror") +ADD_FLAGS(CMAKE_REQUIRED_FLAGS "-Wreturn-type -Werror") CHECK_CXX_COMPILER_BUG( " const double foo() { return 1.; } int main() { return 0; } " DEAL_II_WRETURN_TYPE_CONST_QUALIFIER_BUG) -LIST(REMOVE_ITEM CMAKE_REQUIRED_FLAGS "-Wreturn-type -Werror") +STRIP_FLAG(CMAKE_REQUIRED_FLAGS "-Wreturn-type -Werror") IF(DEAL_II_WRETURN_TYPE_CONST_QUALIFIER_BUG) ENABLE_IF_SUPPORTED(CMAKE_CXX_FLAGS -Wno-return-type) @@ -145,14 +145,14 @@ ENDIF() CHECK_INCLUDE_FILE_CXX("mpi.h" HAVE_MPI_H) IF(HAVE_MPI_H) - LIST(APPEND CMAKE_REQUIRED_FLAGS "-Wunused-parameter -Werror") + ADD_FLAGS(CMAKE_REQUIRED_FLAGS "-Wunused-parameter -Werror") CHECK_CXX_COMPILER_BUG( " #include int main() { return 0; } " DEAL_II_ADVANCE_WARNING_BUG) - LIST(REMOVE_ITEM CMAKE_REQUIRED_FLAGS "-Wunused-parameter -Werror") + STRIP_FLAG(CMAKE_REQUIRED_FLAGS "-Wunused-parameter -Werror") IF(DEAL_II_ADVANCE_WARNING_BUG) ENABLE_IF_SUPPORTED(CMAKE_CXX_FLAGS "-Wno-unused-parameter") diff --git a/deal.II/contrib/cmake/check/check_for_cxx_features.cmake b/deal.II/contrib/cmake/check/check_for_cxx_features.cmake index f73e05d0d5..9b89bfdf2f 100644 --- a/deal.II/contrib/cmake/check/check_for_cxx_features.cmake +++ b/deal.II/contrib/cmake/check/check_for_cxx_features.cmake @@ -30,7 +30,7 @@ CHECK_CXX_COMPILER_FLAG( IF(DEAL_II_HAVE_CXX11_FLAG) # Set CMAKE_REQUIRED_FLAGS for the unit tests - LIST(APPEND CMAKE_REQUIRED_FLAGS "-std=c++0x") + ADD_FLAGS(CMAKE_REQUIRED_FLAGS "-std=c++0x") CHECK_CXX_SOURCE_COMPILES( " @@ -76,8 +76,6 @@ IF(DEAL_II_HAVE_CXX11_FLAG) " DEAL_II_HAVE_CXX11_SHARED_PTR) - LIST(APPEND CMAKE_REQUIRED_FLAGS "-lpthreads") - CHECK_CXX_SOURCE_COMPILES( " #include @@ -87,13 +85,14 @@ IF(DEAL_II_HAVE_CXX11_FLAG) DEAL_II_HAVE_CXX11_THREAD) # - #On some systems with gcc 4.5.0, we can compile the code - #above but it will throw an exception when run. So test - #that as well. The test will only be successful if we have - #libpthread available, so link it in for this test. If - #multithreading is requested, it will be added to CXXFLAGS - #later on so there is no need to do this here. + # On some systems with gcc 4.5.0, we can compile the code + # above but it will throw an exception when run. So test + # that as well. The test will only be successful if we have + # libpthread available, so link it in for this test. If + # 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") CHECK_CXX_SOURCE_RUNS( " #include @@ -101,8 +100,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) - - LIST(REMOVE_ITEM CMAKE_REQUIRED_FLAGS "-lpthreads") + STRIP_FLAG(CMAKE_REQUIRED_FLAGS "-lpthread") CHECK_CXX_SOURCE_COMPILES( " @@ -186,7 +184,7 @@ IF(DEAL_II_HAVE_CXX11_FLAG) ENDIF() ENDIF() - LIST(REMOVE_ITEM CMAKE_REQUIRED_FLAGS "-std=c++0x") + STRIP_FLAG(CMAKE_REQUIRED_FLAGS "-std=c++0x") ELSE() MESSAGE(STATUS "Insufficient C++11 support. Disabling -std=c++0x.") diff --git a/deal.II/contrib/cmake/configure/configure_1_tbb.cmake b/deal.II/contrib/cmake/configure/configure_1_tbb.cmake index 7887bd771b..0f8c80f89a 100644 --- a/deal.II/contrib/cmake/configure/configure_1_tbb.cmake +++ b/deal.II/contrib/cmake/configure/configure_1_tbb.cmake @@ -28,7 +28,7 @@ MACRO(SETUP_THREADING var) # # Check whether posix thread barriers are available: # - LIST(APPEND CMAKE_REQUIRED_FLAGS "${CMAKE_THREAD_LIBS_INIT}") + ADD_FLAGS(CMAKE_REQUIRED_FLAGS "${CMAKE_THREAD_LIBS_INIT}") CHECK_CXX_SOURCE_COMPILES( " #include @@ -42,7 +42,7 @@ MACRO(SETUP_THREADING var) } " DEAL_II_HAVE_MT_POSIX_BARRIERS) - LIST(REMOVE_ITEM CMAKE_REQUIRED_FLAGS "${CMAKE_THREAD_LIBS_INIT}") + STRIP_FLAG(CMAKE_REQUIRED_FLAGS "${CMAKE_THREAD_LIBS_INIT}") IF(NOT DEAL_II_HAVE_MT_POSIX_BARRIERS) SET(DEAL_II_USE_MT_POSIX_NO_BARRIERS TRUE) @@ -55,7 +55,7 @@ MACRO(SETUP_THREADING var) # switches on some preprocessor flags. If this is not the case, # then define them explicitely. # - LIST(APPEND CMAKE_REQUIRED_FLAGS "${CMAKE_THREAD_LIBS_INIT}") + ADD_FLAGS(CMAKE_REQUIRED_FLAGS "${CMAKE_THREAD_LIBS_INIT}") CHECK_CXX_SOURCE_COMPILES( " #if !defined (_REENTRANT) && !defined (_THREAD_SAFE) @@ -65,7 +65,7 @@ MACRO(SETUP_THREADING var) int main(){ return 0; } " DEAL_II_HAVE_SANE_MT_DEFINITIONS) - LIST(REMOVE_ITEM CMAKE_REQUIRED_FLAGS "${CMAKE_THREAD_LIBS_INIT}") + STRIP_FLAG(CMAKE_REQUIRED_FLAGS "${CMAKE_THREAD_LIBS_INIT}") IF(NOT DEAL_II_HAVE_SANE_MT_DEFINITIONS) ADD_DEFINITIONS("-D_REENTRANT" "-D_THREAD_SAFE") diff --git a/deal.II/contrib/cmake/configure/configure_lapack.cmake b/deal.II/contrib/cmake/configure/configure_lapack.cmake index 1bed7ff8c3..10e8c00616 100644 --- a/deal.II/contrib/cmake/configure/configure_lapack.cmake +++ b/deal.II/contrib/cmake/configure/configure_lapack.cmake @@ -24,7 +24,7 @@ MACRO(FEATURE_LAPACK_CONFIGURE_EXTERNAL var) # TODO: Reduce to the really necessary parts. # LIST(APPEND CMAKE_REQUIRED_LIBRARIES "${LAPACK_LIBRARIES}") - LIST(APPEND CMAKE_REQUIRED_FLAGS "${LAPACK_LINKER_FLAGS}") + ADD_FLAGS(CMAKE_REQUIRED_FLAGS "${LAPACK_LINKER_FLAGS}") CHECK_FUNCTION_EXISTS(daxpy_ HAVE_DAXPY_) CHECK_FUNCTION_EXISTS(dgeevx_ HAVE_DGEEVX_) CHECK_FUNCTION_EXISTS(dgeev_ AVE_DGEEV_) @@ -61,7 +61,7 @@ MACRO(FEATURE_LAPACK_CONFIGURE_EXTERNAL var) CHECK_FUNCTION_EXISTS(ssygvx_ HAVE_SSYGVX_) CHECK_FUNCTION_EXISTS(strtrs_ HAVE_STRTRS_) LIST(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "${LAPACK_LIBRARIES}") - LIST(REMOVE_ITEM CMAKE_REQUIRED_FLAGS "${LAPACK_LINKER_FLAGS}") + STRIP_FLAG(CMAKE_REQUIRED_FLAGS "${LAPACK_LINKER_FLAGS}") SET(HAVE_LIBLAPACK TRUE) diff --git a/deal.II/contrib/cmake/configure/configure_trilinos.cmake b/deal.II/contrib/cmake/configure/configure_trilinos.cmake index af8e8c6542..9776c4a0fa 100644 --- a/deal.II/contrib/cmake/configure/configure_trilinos.cmake +++ b/deal.II/contrib/cmake/configure/configure_trilinos.cmake @@ -103,14 +103,14 @@ MACRO(FEATURE_TRILINOS_FIND_EXTERNAL var) # Test whether that is indeed the case # LIST(APPEND CMAKE_REQUIRED_INCLUDES ${TRILINOS_INCLUDE_DIR}) - LIST(APPEND CMAKE_REQUIRED_FLAGS "-std=c++0x") + ADD_FLAGS(CMAKE_REQUIRED_FLAGS "-std=c++0x") CHECK_CXX_SOURCE_COMPILES( " #include int main(){ return 0; } " TRILINOS_SUPPORTS_CPP11) - LIST(REMOVE_ITEM CMAKE_REQUIRED_FLAGS "-std=c++0x") + STRIP_FLAG(CMAKE_REQUIRED_FLAGS "-std=c++0x") LIST(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES ${TRILINOS_INCLUDE_DIR}) IF(DEAL_II_CAN_USE_CXX11 AND NOT TRILINOS_SUPPORTS_CPP11) diff --git a/deal.II/contrib/cmake/macros/macro_add_flags.cmake b/deal.II/contrib/cmake/macros/macro_add_flags.cmake index 3e4728de9c..2a84224afe 100644 --- a/deal.II/contrib/cmake/macros/macro_add_flags.cmake +++ b/deal.II/contrib/cmake/macros/macro_add_flags.cmake @@ -1,11 +1,12 @@ # -# A small macro used for (string-)appending flags to a variable +# A small macro used for (string-)appending a string flags to a +# string variable # # Usage: -# ADD_FLAGS(variable flag) +# ADD_FLAGS(variable flags) # -MACRO(ADD_FLAGS variable flag) - SET(${variable} "${${variable}} ${flag}") +MACRO(ADD_FLAGS variable flags) + SET(${variable} "${${variable}} ${flags}") ENDMACRO() diff --git a/deal.II/contrib/cmake/macros/macro_strip_flag.cmake b/deal.II/contrib/cmake/macros/macro_strip_flag.cmake index d5d046c555..bbf571e48b 100644 --- a/deal.II/contrib/cmake/macros/macro_strip_flag.cmake +++ b/deal.II/contrib/cmake/macros/macro_strip_flag.cmake @@ -1,5 +1,5 @@ # -# Remove the first occurence of flag in the string variable. +# Remove all occurences of "${flag}" in the string variable. # # Usage: # STRIP_FLAG(variable flag) @@ -7,7 +7,11 @@ MACRO(STRIP_FLAG variable flag) IF(NOT "${variable}" STREQUAL "") - STRING(REGEX REPLACE " ${flag}" "" ${variable} ${${variable}}) + SET(${variable} " ${${variable}}") + STRING(REPLACE " ${flag}" "" ${variable} ${${variable}}) + IF(NOT "${variable}" STREQUAL "") + STRING(STRIP ${${variable}} ${variable}) + ENDIF() ENDIF() ENDMACRO()