diff --git a/cmake/compileroptions/Clang.cmake b/cmake/compileroptions/Clang.cmake index f18ccfcf3bb34735fbf6b191a42939779ecdb147..1b59e426f30fc86807a79fd6c48d2d9fed04f90f 100644 --- a/cmake/compileroptions/Clang.cmake +++ b/cmake/compileroptions/Clang.cmake @@ -1,4 +1,15 @@ message(STATUS "Setting Clang specific compiler options") +if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11.0.0) + message(FATAL_ERROR "Clang version must be at least 11!") + endif() +else() + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7) + message(FATAL_ERROR "Clang version must be at least 7!") +endif() +endif() + + if( WALBERLA_OPTIMIZE_FOR_LOCALHOST ) if(( CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64" ) @@ -57,27 +68,27 @@ if ( WALBERLA_SANITIZE_UNDEFINED ) endif() if ( WALBERLA_BUILD_WITH_OPENMP ) - if( APPLE AND EXISTS /opt/local/lib/libomp AND EXISTS /opt/local/include/libomp ) # find libomp from MacPorts - set( CMAKE_FRAMEWORK_PATH /opt/local/lib/libomp ) - set( CMAKE_INCLUDE_PATH /opt/local/include/libomp ) - endif() - find_package( OpenMP ) - if (OpenMP_FOUND) - add_flag ( CMAKE_C_FLAGS "${OpenMP_C_FLAGS}" ) - add_flag ( CMAKE_CXX_FLAGS "${OpenMP_CXX_FLAGS}" ) - list ( APPEND SERVICE_LIBS ${OpenMP_CXX_LIBRARIES} ) - if( OpenMP_CXX_INCLUDE_DIRS ) - include_directories( ${OpenMP_CXX_INCLUDE_DIRS} ) - endif() - else() - message(FATAL_ERROR "Could NOT enable OpenMP") - endif() + if( APPLE AND EXISTS /opt/local/lib/libomp AND EXISTS /opt/local/include/libomp ) # find libomp from MacPorts + set( CMAKE_FRAMEWORK_PATH /opt/local/lib/libomp ) + set( CMAKE_INCLUDE_PATH /opt/local/include/libomp ) + endif() + find_package( OpenMP ) + if (OpenMP_FOUND) + add_flag ( CMAKE_C_FLAGS "${OpenMP_C_FLAGS}" ) + add_flag ( CMAKE_CXX_FLAGS "${OpenMP_CXX_FLAGS}" ) + list ( APPEND SERVICE_LIBS ${OpenMP_CXX_LIBRARIES} ) + if( OpenMP_CXX_INCLUDE_DIRS ) + include_directories( ${OpenMP_CXX_INCLUDE_DIRS} ) + endif() + else() + message(FATAL_ERROR "Could NOT enable OpenMP") + endif() - # check for bug in combination with OpenMP and sign conversion https://bugs.llvm.org/show_bug.cgi?id=48387 - try_compile( WALBERLA_CLANG_OPENMP_BUG "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestClangOpenMPBug.cpp" + # check for bug in combination with OpenMP and sign conversion https://bugs.llvm.org/show_bug.cgi?id=48387 + try_compile( WALBERLA_CLANG_OPENMP_BUG "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestClangOpenMPBug.cpp" COMPILE_DEFINITIONS -Werror ) - if( NOT ${WALBERLA_CLANG_OPENMP_BUG} ) - message( WARNING "Setting -Wno-sign-conversion due to a compiler bug in LLVM (https://bugs.llvm.org/show_bug.cgi?id=48387)" ) - add_flag( CMAKE_CXX_FLAGS "-Wno-sign-conversion" ) - endif() + if( NOT ${WALBERLA_CLANG_OPENMP_BUG} ) + message( WARNING "Setting -Wno-sign-conversion due to a compiler bug in LLVM (https://bugs.llvm.org/show_bug.cgi?id=48387)" ) + add_flag( CMAKE_CXX_FLAGS "-Wno-sign-conversion" ) + endif() endif() \ No newline at end of file diff --git a/cmake/compileroptions/GNU.cmake b/cmake/compileroptions/GNU.cmake index ff56c8826a095d2d5f0b219d086180ea687d4381..1cc6ef532d3d352a3390d0015be685d385597e5f 100644 --- a/cmake/compileroptions/GNU.cmake +++ b/cmake/compileroptions/GNU.cmake @@ -1,5 +1,9 @@ message(STATUS "Setting GNU specific compiler options") +if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8) + message(FATAL_ERROR "GCC version must be at least 8!") +endif() + # Profile guided optimization if ( WALBERLA_PROFILE_GENERATE ) add_flag( CMAKE_CXX_FLAGS "-fprofile-generate" ) diff --git a/cmake/compileroptions/IBM.cmake b/cmake/compileroptions/IBM.cmake index 1a1d1b64d54b2d4de9fb349dab6135e56633a11c..eb9e3bce5362bfb1939260b42b0506e3367dc01b 100644 --- a/cmake/compileroptions/IBM.cmake +++ b/cmake/compileroptions/IBM.cmake @@ -1,5 +1,9 @@ message(STATUS "Setting IBM specific compiler options") +if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 17.1.1) + message(FATAL_ERROR "IBM compiler version must be at least 17.1.1!") +endif() + # Fixes linker errors with IBM compiler if( WALBERLA_CXX_COMPILER_IS_IBM ) add_flag ( CMAKE_CXX_FLAGS "-qpic=large" ) diff --git a/cmake/compileroptions/MSVC.cmake b/cmake/compileroptions/MSVC.cmake index b6cdf4cab7fd86da397cd969a3ad292aef02c7a1..f904e8d1dad6d5569f05ab926e5cdfdba815b429 100644 --- a/cmake/compileroptions/MSVC.cmake +++ b/cmake/compileroptions/MSVC.cmake @@ -1,5 +1,9 @@ message(STATUS "Setting MSVC specific compiler options") +if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.11) + message(FATAL_ERROR "MSVC version must be at least 19.11!") +endif() + if ( WALBERLA_PROFILE_GENERATE ) add_flag ( CMAKE_CXX_FLAGS "/GL" ) add_flag ( CMAKE_MODULE_LINKER_FLAGS "/LTCG:PGINSTRUMENT" )