diff --git a/CMakeLists.txt b/CMakeLists.txt index e4ea1fe41074ac341774310236994e19218c7e1b..2ae82d642f6b29cef155f878b6f84d66ff0489c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,9 @@ cmake_minimum_required(VERSION 3.12) cmake_policy(SET CMP0054 NEW) cmake_policy(SET CMP0071 NEW) cmake_policy(SET CMP0074 NEW) +if(${CMAKE_VERSION} VERSION_GREATER 3.14) + cmake_policy(SET CMP0092 NEW) +endif() if(MSVC AND NOT ${CMAKE_GENERATOR} STREQUAL Ninja) # Force 64-bit VS compiler @@ -63,6 +66,7 @@ option(OGS_USE_CVODE "Use the Sundials CVODE module?" OFF) # ---- CMake includes ---- include(PreFind) include(SubmoduleSetup) +add_subdirectory(ThirdParty) include(Versions) include(CheckTypeSizes) include(CheckArchitecture) @@ -334,7 +338,7 @@ if(OGS_INSITU) include("${PARAVIEW_USE_FILE}") add_definitions(-DUSE_INSITU) endif() -add_subdirectory(ThirdParty) + include_directories( SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty @@ -344,6 +348,12 @@ include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/json/include ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/exprtk) +# vtkdiff +if(EXISTS ${PROJECT_SOURCE_DIR}/ThirdParty/vtkdiff/CMakeLists.txt) + add_subdirectory(ThirdParty/vtkdiff) + install(PROGRAMS $<TARGET_FILE:vtkdiff> DESTINATION bin COMPONENT ogs_extras) +endif() + include(scripts/cmake/CheckHeaderCompilation.cmake) add_subdirectory(Applications) diff --git a/ThirdParty/CMakeLists.txt b/ThirdParty/CMakeLists.txt index 5694837ca890b1cddd7365a01808b6b0f43560bc..bac995488a20158695aade4927297eba8916b3c2 100644 --- a/ThirdParty/CMakeLists.txt +++ b/ThirdParty/CMakeLists.txt @@ -1,22 +1,5 @@ -# Disable all warnings -if(COMPILER_IS_CLANG OR COMPILER_IS_GCC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") -elseif(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W0") -endif() - -# Add logog subdirectory and group its targets in a Visual Studio folder add_subdirectory(logog) -if(BUILD_TESTING) - set_property(TARGET Continuous PROPERTY FOLDER "logog") -endif() -set_property(TARGET logog PROPERTY FOLDER "logog") -set_property(TARGET test-logog PROPERTY FOLDER "logog") -set_target_properties(test-logog PROPERTIES EXCLUDE_FROM_ALL TRUE) -target_compile_options(logog PRIVATE - $<$<CXX_COMPILER_ID:Clang>:-w> - $<$<CXX_COMPILER_ID:GNU>:-w> - $<$<CXX_COMPILER_ID:MSVC>:/W0>) +set(DISABLE_WARNINGS_TARGETS logog) set(gtest_force_shared_crt ON CACHE INTERNAL "") # Use dynamic MSVC runtime set(INSTALL_GTEST OFF CACHE INTERNAL "") @@ -25,12 +8,13 @@ add_subdirectory(googletest) # This is a workaround for Travis builds. option(OGS_USE_OPTIONAL_SUBMODULES "Option for enabling optional submodules" OFF) -#iphreeqc +# iphreeqc if (OGS_BUILD_PROCESS_ComponentTransport OR OGS_BUILD_PROCESS_RichardsComponentTransport OR OGS_BUILD_PROCESS_RichardsComponentTransport OR OGS_BUILD_PROCESS_HeatTransportBHE) add_subdirectory(iphreeqc) + list(APPEND DISABLE_WARNINGS_TARGETS iphreeqc) endif() # MFrontGenericInterfaceSupport @@ -40,6 +24,7 @@ if (OGS_USE_MFRONT) set(CMAKE_CXX_STANDARD 11) add_subdirectory(MGIS) set(CMAKE_CXX_STANDARD 17) + list(APPEND DISABLE_WARNINGS_TARGETS MFrontGenericInterface) endif() # VtkFbxConverter @@ -51,26 +36,13 @@ endif() # tetgen if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/tetgen/CMakeLists.txt) add_subdirectory(tetgen) + list(APPEND DISABLE_WARNINGS_TARGETS tet tetgen) install(PROGRAMS $<TARGET_FILE:tetgen> DESTINATION bin COMPONENT ogs_extras) - target_compile_options(tet PRIVATE - $<$<CXX_COMPILER_ID:Clang>:-w> - $<$<CXX_COMPILER_ID:GNU>:-w> - $<$<CXX_COMPILER_ID:MSVC>:/W0>) - target_compile_options(tetgen PRIVATE - $<$<CXX_COMPILER_ID:Clang>:-w> - $<$<CXX_COMPILER_ID:GNU>:-w> - $<$<CXX_COMPILER_ID:MSVC>:/W0>) -endif() - -# vtkdiff -if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/vtkdiff/CMakeLists.txt) - add_subdirectory(vtkdiff) - install (PROGRAMS $<TARGET_FILE:vtkdiff> DESTINATION bin COMPONENT ogs_extras) endif() if(OGS_BUILD_SWMM) add_subdirectory(SWMMInterface) - set_target_properties(SWMM SwmmInterface PROPERTIES COMPILE_FLAGS /W0) + list(APPEND DISABLE_WARNINGS_TARGETS SWMM SwmmInterface) endif() if(OGS_USE_PYTHON) @@ -113,4 +85,11 @@ endif() if(OGS_BUILD_UTILS) include(${PROJECT_SOURCE_DIR}/scripts/cmake/MetisSetup.cmake) + list(APPEND DISABLE_WARNINGS_TARGETS metis mpmetis) endif() + +foreach(TARGET ${DISABLE_WARNINGS_TARGETS}) + target_compile_options(${TARGET} PRIVATE + $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>>:-w> + $<$<CXX_COMPILER_ID:MSVC>:/W0>) +endforeach() diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake index f27da8092807262a8a2993a10de0f79eb7430a8c..6be8db4d9969c8f6bdcbff06d7bb6ce8888a5789 100644 --- a/scripts/cmake/Find.cmake +++ b/scripts/cmake/Find.cmake @@ -15,12 +15,6 @@ find_program(GPROF_PATH gprof DOC "GNU profiler gprof" QUIET) find_program(CPPCHECK_TOOL_PATH cppcheck) -if(OGS_USE_PYTHON) - find_package(Python3 COMPONENTS Interpreter Development REQUIRED) -else() - find_package(Python3 COMPONENTS Interpreter) -endif() - # Find bash itself ... find_program(BASH_TOOL_PATH bash HINTS ${GITHUB_BIN_DIR} DOC "The bash executable") diff --git a/scripts/cmake/PreFind.cmake b/scripts/cmake/PreFind.cmake index 2af46e8a8c2d3e75087c69bb9bd9f0621dfb6591..281aad29fe42c146e7e1f14b1d8dff7d61e371ce 100644 --- a/scripts/cmake/PreFind.cmake +++ b/scripts/cmake/PreFind.cmake @@ -18,3 +18,9 @@ if(IS_GIT_REPO GREATER 0) else() set(IS_GIT_REPO TRUE CACHE INTERNAL "") endif() + +if(OGS_USE_PYTHON) + find_package(Python3 COMPONENTS Interpreter Development REQUIRED) +else() + find_package(Python3 COMPONENTS Interpreter) +endif() \ No newline at end of file