diff --git a/.cmake-format.yaml b/.cmake-format.yaml index fb5a054abb7b594535793ccf668d9ac1324d34b8..57aa032e4b22cecd65068e0f6da24a50185beb89 100644 --- a/.cmake-format.yaml +++ b/.cmake-format.yaml @@ -3,6 +3,7 @@ format: max_subgroups_hwrap: 3 dangle_parens: true command_case: "unchanged" + line_width: 80 lint: disabled_codes: - "C0301" @@ -10,7 +11,14 @@ lint: - "C0113" # Missing COMMAND for optional dependencies. parse: + vartags: + - !!python/tuple + - set_property + - - cmdline additional_commands: + ogs_add_library: + pargs: + nargs: 2+ addtest: pargs: nargs: '*' diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4fe13c3021404cdbc58145a891bfc6aad346414e..29c07442a129db55574dfd1e16294afd96e1064f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,7 +10,7 @@ repos: - id: check-merge-conflict - id: check-xml - id: check-yaml - exclude: '^scripts/ci/.*' + exclude: '^scripts/ci/.*|.cmake-format.yaml' - id: check-toml - repo: local hooks: @@ -26,12 +26,6 @@ repos: language: system files: '.*\.cpp' stages: [commit, manual] - - id: cmake-format - name: Format CMake files - entry: scripts/hooks/pre-commit-cmake-format.sh - language: system - files: 'CMakeLists.txt' - stages: [commit, manual] - repo: https://github.com/ambv/black rev: stable hooks: @@ -47,7 +41,7 @@ repos: hooks: - id: cmake-format additional_dependencies: ["cmakelang[YAML]"] - exclude: '.*' # Disabled for now + exclude: 'scripts/cmake/jedbrown/.*|PackagingMacros.cmake|conan.cmake|CPM.cmake|FindFilesystem.cmake|ConanSetup.cmake|Tests.cmake' - id: cmake-lint additional_dependencies: ["cmakelang[YAML]"] exclude: 'scripts/cmake/jedbrown/.*|PackagingMacros.cmake|conan.cmake|CPM.cmake|FindFilesystem.cmake|ConanSetup.cmake' diff --git a/Applications/CLI/CMakeLists.txt b/Applications/CLI/CMakeLists.txt index b1031501bf240ba5c0f317c79ef574f88165af99..44ad553443c5b9c243fbe8f53bcb88fe8eb8c866 100644 --- a/Applications/CLI/CMakeLists.txt +++ b/Applications/CLI/CMakeLists.txt @@ -32,40 +32,41 @@ if(OGS_USE_PYTHON) # provides the minimal set of parameters to ensure that the code using # pybind11 compiles, but it does not pass these extra compiler flags (i.e. # this is up to you). TODO: Enable further compiler/linker flags. - target_link_libraries(ogs_embedded_python - PUBLIC pybind11::embed + target_link_libraries( + ogs_embedded_python PUBLIC pybind11::embed PRIVATE ProcessLibBoundaryConditionPythonModule ProcessLibSourceTermPythonModule ) - target_compile_definitions(ogs_embedded_python + target_compile_definitions( + ogs_embedded_python PUBLIC OGS_USE_PYTHON - # Add macro definition, because static libs make special handling - # necessary s.t. the embedded OpenGeoSys Python module won't be removed - # by the linker. - $<$<BOOL:${BUILD_SHARED_LIBS}>:PRIVATE OGS_BUILD_SHARED_LIBS> + # Add macro definition, because static libs make special handling + # necessary s.t. the embedded OpenGeoSys Python module won't be + # removed by the linker. + $<$<BOOL:${BUILD_SHARED_LIBS}>:PRIVATE + OGS_BUILD_SHARED_LIBS> ) endif() add_executable(ogs ogs.cpp) -target_link_libraries(ogs - PRIVATE - ApplicationsLib - BaseLib - CMakeInfoLib - GitInfoLib - MeshLib - ProcessLib - $<$<TARGET_EXISTS:ogs_embedded_python>:ogs_embedded_python> - $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX> - $<$<TARGET_EXISTS:InSituLib>:InSituLib> - tclap +target_link_libraries( + ogs + PRIVATE ApplicationsLib + BaseLib + CMakeInfoLib + GitInfoLib + MeshLib + ProcessLib + $<$<TARGET_EXISTS:ogs_embedded_python>:ogs_embedded_python> + $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX> + $<$<TARGET_EXISTS:InSituLib>:InSituLib> + tclap ) -target_compile_definitions(ogs - PRIVATE - $<$<BOOL:${USE_INSITU}>:USE_INSITU> - $<$<BOOL:${OGS_USE_PETSC}>:USE_PETSC> +target_compile_definitions( + ogs PRIVATE $<$<BOOL:${USE_INSITU}>:USE_INSITU> + $<$<BOOL:${OGS_USE_PETSC}>:USE_PETSC> ) # ---- Tests ---- @@ -76,11 +77,11 @@ set_tests_properties(ogs_no_args PROPERTIES WILL_FAIL TRUE) install(TARGETS ogs RUNTIME DESTINATION bin) set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "ogs" - "OGS Simulator") -cpack_add_component(ogs_cli - DISPLAY_NAME - "OGS THMC Simulator" - DESCRIPTION - "The command line interface for OpenGeoSys." - GROUP - Applications) + "OGS Simulator" +) +cpack_add_component( + ogs_cli + DISPLAY_NAME "OGS THMC Simulator" + DESCRIPTION "The command line interface for OpenGeoSys." + GROUP Applications +) diff --git a/Applications/DataExplorer/Base/CMakeLists.txt b/Applications/DataExplorer/Base/CMakeLists.txt index 6a0843fb91f4b4f8e7f7f11e95a347027704b657..e11204cb5fc29ca43863d5244fe2e55c2f12d9bb 100644 --- a/Applications/DataExplorer/Base/CMakeLists.txt +++ b/Applications/DataExplorer/Base/CMakeLists.txt @@ -8,7 +8,8 @@ set(SOURCES ColorPickerPushButton.cpp TreeModelIterator.cpp CheckboxDelegate.cpp - QValueTooltipSlider.cpp) + QValueTooltipSlider.cpp +) # Header files set(HEADERS @@ -22,7 +23,8 @@ set(HEADERS TreeModel.h ColorPickerPushButton.h CheckboxDelegate.h - QValueTooltipSlider.h) + QValueTooltipSlider.h +) # Put moc files in a project folder source_group("UI Files" REGULAR_EXPRESSION "\\w*\\.ui") diff --git a/Applications/DataExplorer/DataExplorer.cmake b/Applications/DataExplorer/DataExplorer.cmake index be297d6e5b3853b3e29af98b19b45cf7365295b6..d5c5b2bde3541ab64e2e125fb5ded0b006cacea3 100644 --- a/Applications/DataExplorer/DataExplorer.cmake +++ b/Applications/DataExplorer/DataExplorer.cmake @@ -1,8 +1,6 @@ # Source files -set(SOURCES - mainwindow.cpp - mainwindow.h - ${CMAKE_CURRENT_SOURCE_DIR}/Img/icons.qrc +set(SOURCES mainwindow.cpp mainwindow.h + ${CMAKE_CURRENT_SOURCE_DIR}/Img/icons.qrc ) set(SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../..) @@ -23,15 +21,10 @@ source_group("UI Files" FILES ${UIS}) set(APP_ICON ${SOURCE_DIR_REL}/scripts/packaging/ogs-de-icon.icns) # Create the executable -add_executable(DataExplorer - main.cpp - ${SOURCES} - ${UIS} - ${APP_ICON} - exe-icon.rc -) +add_executable(DataExplorer main.cpp ${SOURCES} ${UIS} ${APP_ICON} exe-icon.rc) -target_link_libraries(DataExplorer +target_link_libraries( + DataExplorer BaseLib GeoLib GitInfoLib @@ -64,12 +57,14 @@ if(OGS_USE_CONAN AND WIN32) endif() if(GEOTIFF_FOUND) - target_link_libraries(DataExplorer ${GEOTIFF_LIBRARIES} ) + target_link_libraries(DataExplorer ${GEOTIFF_LIBRARIES}) endif() if(MSVC) # Set linker flags - set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:MSVCRT /IGNORE:4099") + set(CMAKE_EXE_LINKER_FLAGS_DEBUG + "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:MSVCRT /IGNORE:4099" + ) target_link_libraries(DataExplorer winmm) endif() @@ -78,11 +73,15 @@ set_property(TARGET DataExplorer PROPERTY FOLDER "DataExplorer") # ---- Installation ---- install(TARGETS DataExplorer RUNTIME DESTINATION bin) -cpack_add_component(ogs_gui +cpack_add_component( + ogs_gui DISPLAY_NAME "OGS Data Explorer" DESCRIPTION "The graphical user interface for OpenGeoSys." GROUP Applications ) -set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "DataExplorer" "OGS Data Explorer" PARENT_SCOPE) -set(CPACK_NSIS_MENU_LINKS ${CPACK_NSIS_MENU_LINKS} "bin/DataExplorer.exe" "Data Explorer" PARENT_SCOPE) - +set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "DataExplorer" + "OGS Data Explorer" PARENT_SCOPE +) +set(CPACK_NSIS_MENU_LINKS ${CPACK_NSIS_MENU_LINKS} "bin/DataExplorer.exe" + "Data Explorer" PARENT_SCOPE +) diff --git a/Applications/DataExplorer/DataView/CMakeLists.txt b/Applications/DataExplorer/DataView/CMakeLists.txt index 865dfed0a037377963f7990ae3ca5f06929bad2d..0d528722995faa9c84ff048d6cde5f8d1f8f84bd 100644 --- a/Applications/DataExplorer/DataView/CMakeLists.txt +++ b/Applications/DataExplorer/DataView/CMakeLists.txt @@ -42,7 +42,8 @@ set(SOURCES StationTabWidget.cpp StationTreeModel.cpp StationTreeView.cpp - SurfaceExtractionDialog.cpp) + SurfaceExtractionDialog.cpp +) set(HEADERS AddLayerToMeshDialog.h @@ -93,31 +94,38 @@ set(HEADERS StationTabWidget.h StationTreeModel.h StationTreeView.h - SurfaceExtractionDialog.h) + SurfaceExtractionDialog.h +) # Visual Studio folder source_group("Dialog Header Files" REGULAR_EXPRESSION "[.]*Dialog.h") source_group("Dialog Source Files" REGULAR_EXPRESSION "[.]*Dialog.cpp") -source_group("Data Model Header Files" REGULAR_EXPRESSION - "[.]*Item.h|[.]*Model.h|[.]*View.h") -source_group("Data Model Source Files" REGULAR_EXPRESSION - "[.]*Item.cpp|[.]*Model.cpp|[.]*View.cpp") +source_group( + "Data Model Header Files" + REGULAR_EXPRESSION "[.]*Item.h|[.]*Model.h|[.]*View.h" +) +source_group( + "Data Model Source Files" + REGULAR_EXPRESSION "[.]*Item.cpp|[.]*Model.cpp|[.]*View.cpp" +) file(GLOB UIS CONFIGURE_DEPENDS *.ui) source_group("UI Files" FILES ${UIS}) set(SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../../..) set(GUI_SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/..) -include_directories(${SOURCE_DIR_REL}/Applications/FileIO - ${SOURCE_DIR_REL}/BaseLib - ${SOURCE_DIR_REL}/MathLib - ${SOURCE_DIR_REL}/GeoLib - ${SOURCE_DIR_REL}/MeshGeoToolsLib - ${SOURCE_DIR_REL}/MeshLib - ${GUI_SOURCE_DIR_REL}/Base - ${GUI_SOURCE_DIR_REL}/VtkVis - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/DiagramView - ${CMAKE_CURRENT_SOURCE_DIR}/StratView) +include_directories( + ${SOURCE_DIR_REL}/Applications/FileIO + ${SOURCE_DIR_REL}/BaseLib + ${SOURCE_DIR_REL}/MathLib + ${SOURCE_DIR_REL}/GeoLib + ${SOURCE_DIR_REL}/MeshGeoToolsLib + ${SOURCE_DIR_REL}/MeshLib + ${GUI_SOURCE_DIR_REL}/Base + ${GUI_SOURCE_DIR_REL}/VtkVis + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/DiagramView + ${CMAKE_CURRENT_SOURCE_DIR}/StratView +) if(GEOTIFF_FOUND) include_directories(${GEOTIFF_INCLUDE_DIRS}) @@ -125,21 +133,19 @@ endif() # GEOTIFF_FOUND ogs_add_library(QtDataView STATIC ${SOURCES} ${HEADERS} ${UIS}) -target_link_libraries(QtDataView - PUBLIC GeoLib - MeshGeoToolsLib - MeshLib - QtBase - VtkVis - PRIVATE BaseLib - MathLib - ApplicationsFileIO - QtDiagramView - QtStratView - DataHolderLib - spdlog::spdlog - Qt5::Core - Qt5::Gui) +target_link_libraries( + QtDataView + PUBLIC GeoLib MeshGeoToolsLib MeshLib QtBase VtkVis + PRIVATE BaseLib + MathLib + ApplicationsFileIO + QtDiagramView + QtStratView + DataHolderLib + spdlog::spdlog + Qt5::Core + Qt5::Gui +) if(GEOTIFF_FOUND) target_compile_definitions(QtDataView PRIVATE GEOTIFF_FOUND) diff --git a/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt b/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt index 7264261894395b2a491efc67f073a3bfec1a5476..00f0cb959c4bc70934b36d321b91c7f6f8d4fa35 100644 --- a/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt +++ b/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt @@ -5,7 +5,8 @@ set(SOURCES DiagramScene.cpp DiagramView.cpp QArrow.cpp - QGraphicsGrid.cpp) + QGraphicsGrid.cpp +) set(HEADERS DiagramList.h @@ -15,29 +16,26 @@ set(HEADERS DiagramScene.h DetailWindow.h DiagramPrefsDialog.h - DiagramView.h) + DiagramView.h +) set(SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../../../..) set(GUI_SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../..) -include_directories(${SOURCE_DIR_REL}/BaseLib - ${SOURCE_DIR_REL}/GeoLib - ${SOURCE_DIR_REL}/MathLib - ${CMAKE_CURRENT_SOURCE_DIR} - ${GUI_SOURCE_DIR_REL}/Base - ${GUI_SOURCE_DIR_REL}/DataView) +include_directories( + ${SOURCE_DIR_REL}/BaseLib ${SOURCE_DIR_REL}/GeoLib + ${SOURCE_DIR_REL}/MathLib ${CMAKE_CURRENT_SOURCE_DIR} + ${GUI_SOURCE_DIR_REL}/Base ${GUI_SOURCE_DIR_REL}/DataView +) file(GLOB_RECURSE UIS CONFIGURE_DEPENDS *.ui) source_group("UI Files" FILES ${UIS}) ogs_add_library(QtDiagramView ${SOURCES} ${HEADERS} ${UIS}) -target_link_libraries(QtDiagramView - PRIVATE BaseLib - GeoLib - QtBase - DataHolderLib - Qt5::Gui - spdlog::spdlog) +target_link_libraries( + QtDiagramView PRIVATE BaseLib GeoLib QtBase DataHolderLib Qt5::Gui + spdlog::spdlog +) add_autogen_include(QtDiagramView) diff --git a/Applications/DataExplorer/DataView/StratView/CMakeLists.txt b/Applications/DataExplorer/DataView/StratView/CMakeLists.txt index 348af52b269827fc2accf914733d4ae43364cdc4..e7543b2cefb9187df8f48e6109372851bd85c15c 100644 --- a/Applications/DataExplorer/DataView/StratView/CMakeLists.txt +++ b/Applications/DataExplorer/DataView/StratView/CMakeLists.txt @@ -4,23 +4,20 @@ set(HEADERS StratBar.h StratScene.h StratView.h StratWindow.h) set(SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../../../..) set(GUI_SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../..) -include_directories(${CMAKE_CURRENT_SOURCE_DIR} - ${SOURCE_DIR_REL}/BaseLib - ${SOURCE_DIR_REL}/GeoLib - ${SOURCE_DIR_REL}/MathLib - ${GUI_SOURCE_DIR_REL}/Base) +include_directories( + ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCE_DIR_REL}/BaseLib + ${SOURCE_DIR_REL}/GeoLib ${SOURCE_DIR_REL}/MathLib + ${GUI_SOURCE_DIR_REL}/Base +) file(GLOB_RECURSE UI_FILES CONFIGURE_DEPENDS *.ui) source_group("UI Files" FILES ${UI_FILES}) ogs_add_library(QtStratView ${SOURCES} ${HEADERS} ${UIS}) -target_link_libraries(QtStratView - PRIVATE BaseLib - GeoLib - DataHolderLib - QtBase - Qt5::Gui) +target_link_libraries( + QtStratView PRIVATE BaseLib GeoLib DataHolderLib QtBase Qt5::Gui +) add_autogen_include(QtStratView) set_property(TARGET QtStratView PROPERTY FOLDER "DataExplorer") diff --git a/Applications/DataExplorer/VtkVis/CMakeLists.txt b/Applications/DataExplorer/VtkVis/CMakeLists.txt index 7d7d42ad4d5da697faee33107f01057b2274d9e1..5fe7c6cd2abd55f10ec10f0fc1b206cdd447c929 100644 --- a/Applications/DataExplorer/VtkVis/CMakeLists.txt +++ b/Applications/DataExplorer/VtkVis/CMakeLists.txt @@ -46,7 +46,8 @@ set(SOURCES VtkVisPipelineItem.cpp VtkVisPipelineView.cpp VtkVisPointSetItem.cpp - VtkVisTabWidget.cpp) + VtkVisTabWidget.cpp +) set(HEADERS MeshFromRasterDialog.h @@ -96,11 +97,12 @@ set(HEADERS VtkVisPipelineItem.h VtkVisPipelineView.h VtkVisPointSetItem.h - VtkVisTabWidget.h) + VtkVisTabWidget.h +) -set(UIS - MeshFromRaster.ui VisPrefs.ui VisualizationWidgetBase.ui - VtkAddFilterDialogBase.ui VtkVisTabWidgetBase.ui) +set(UIS MeshFromRaster.ui VisPrefs.ui VisualizationWidgetBase.ui + VtkAddFilterDialogBase.ui VtkVisTabWidgetBase.ui +) if(OGS_USE_NETCDF) set(SOURCES ${SOURCES} NetCdfConfigureDialog.h NetCdfConfigureDialog.cpp) @@ -117,16 +119,18 @@ source_group("UI Files" FILES ${UIS}) set(SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../../..) set(GUI_SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/..) -include_directories(${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ${SOURCE_DIR_REL}/Applications/FileIO - ${SOURCE_DIR_REL}/BaseLib - ${SOURCE_DIR_REL}/GeoLib - ${SOURCE_DIR_REL}/MathLib - ${SOURCE_DIR_REL}/MeshLib - ${GUI_SOURCE_DIR_REL}/Base - ${GUI_SOURCE_DIR_REL}/DataView - ${GUI_SOURCE_DIR_REL}/VtkModules/Qt) +include_directories( + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ${SOURCE_DIR_REL}/Applications/FileIO + ${SOURCE_DIR_REL}/BaseLib + ${SOURCE_DIR_REL}/GeoLib + ${SOURCE_DIR_REL}/MathLib + ${SOURCE_DIR_REL}/MeshLib + ${GUI_SOURCE_DIR_REL}/Base + ${GUI_SOURCE_DIR_REL}/DataView + ${GUI_SOURCE_DIR_REL}/VtkModules/Qt +) ogs_add_library(VtkVis STATIC ${SOURCES} ${HEADERS} ${UIS}) @@ -137,24 +141,23 @@ if(GEOTIFF_FOUND) endif() # GEOTIFF_FOUND target_link_libraries( - VtkVis - PUBLIC BaseLib GeoLib MeshLib DataHolderLib QtBase - PRIVATE MathLib ApplicationsFileIO Qt5::Gui spdlog::spdlog) + VtkVis PUBLIC BaseLib GeoLib MeshLib DataHolderLib QtBase + PRIVATE MathLib ApplicationsFileIO Qt5::Gui spdlog::spdlog +) if(OGS_USE_NETCDF) - target_link_libraries(VtkVis - PUBLIC ${NETCDF_LIBRARIES_CXX} - ${NETCDF_LIBRARIES_C} - ${HDF5_HL_LIBRARIES} - ${HDF5_LIBRARIES}) + target_link_libraries( + VtkVis PUBLIC ${NETCDF_LIBRARIES_CXX} ${NETCDF_LIBRARIES_C} + ${HDF5_HL_LIBRARIES} ${HDF5_LIBRARIES} + ) if(OGS_USE_CONAN AND MSVC) target_link_libraries(VtkVis PUBLIC ${CONAN_LIBS}) endif() # Workaround for system installed VTK (tested on arch) if(NOT OGS_USE_CONAN) - target_include_directories(VtkVis SYSTEM - PUBLIC ${NETCDF_INCLUDES_C} - ${NETCDF_INCLUDES_CXX}) + target_include_directories( + VtkVis SYSTEM PUBLIC ${NETCDF_INCLUDES_C} ${NETCDF_INCLUDES_CXX} + ) endif() endif() diff --git a/Applications/DataHolderLib/CMakeLists.txt b/Applications/DataHolderLib/CMakeLists.txt index 89f3f0303f63d74b60bce1bda38d8a7e0f899ea3..a902c9c8d350cca1dd51e562abda58cca9e3b27c 100644 --- a/Applications/DataHolderLib/CMakeLists.txt +++ b/Applications/DataHolderLib/CMakeLists.txt @@ -5,6 +5,5 @@ get_source_files(SOURCES_DataHolderLib) ogs_add_library(DataHolderLib ${SOURCES_DataHolderLib}) target_link_libraries( - DataHolderLib - PUBLIC GeoLib MeshLib - PRIVATE BaseLib MathLib spdlog::spdlog) + DataHolderLib PUBLIC GeoLib MeshLib PRIVATE BaseLib MathLib spdlog::spdlog +) diff --git a/Applications/FileIO/CMakeLists.txt b/Applications/FileIO/CMakeLists.txt index 4372417514158dab7ba8419e650384254d2669db..1c1b53a79274a7b2563633dc5641672e0a60401a 100644 --- a/Applications/FileIO/CMakeLists.txt +++ b/Applications/FileIO/CMakeLists.txt @@ -22,24 +22,31 @@ endif() # Create the library ogs_add_library(ApplicationsFileIO ${SOURCES}) -target_link_libraries(ApplicationsFileIO - PUBLIC BaseLib - DataHolderLib - GeoLib - MathLib - # Needed for the XmlPrjInterface, which links the DE/Base/OGSError.h. - $<$<BOOL:${OGS_BUILD_GUI}>:QtBase> - $<$<TARGET_EXISTS:shp>:shp> - $<$<TARGET_EXISTS:SwmmInterface>:SwmmInterface> - PRIVATE MeshLib GitInfoLib std::filesystem spdlog::spdlog +target_link_libraries( + ApplicationsFileIO + PUBLIC BaseLib + DataHolderLib + GeoLib + MathLib + # Needed for the XmlPrjInterface, which links the DE/Base/OGSError.h. + $<$<BOOL:${OGS_BUILD_GUI}>:QtBase> + $<$<TARGET_EXISTS:shp>:shp> + $<$<TARGET_EXISTS:SwmmInterface>:SwmmInterface> + PRIVATE MeshLib GitInfoLib std::filesystem spdlog::spdlog ) -configure_file(XmlIO/OpenGeoSysCND.xsd - ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysCND.xsd COPYONLY) -configure_file(XmlIO/OpenGeoSysNum.xsd - ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysNum.xsd COPYONLY) -configure_file(XmlIO/OpenGeoSysProject.xsd - ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysProject.xsd COPYONLY) +configure_file( + XmlIO/OpenGeoSysCND.xsd ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysCND.xsd + COPYONLY +) +configure_file( + XmlIO/OpenGeoSysNum.xsd ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysNum.xsd + COPYONLY +) +configure_file( + XmlIO/OpenGeoSysProject.xsd + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysProject.xsd COPYONLY +) install(FILES XmlIO/OpenGeoSysCND.xsd XmlIO/OpenGeoSysNum.xsd - XmlIO/OpenGeoSysProject.xsd - DESTINATION bin) + XmlIO/OpenGeoSysProject.xsd DESTINATION bin +) diff --git a/Applications/FileIO/GocadIO/CMakeLists.txt b/Applications/FileIO/GocadIO/CMakeLists.txt index a5d9d3df2e5ab3244a727ad11138e441c49f6ecb..82f8dd1bce426741eba253a52eccec1f4156c4d9 100644 --- a/Applications/FileIO/GocadIO/CMakeLists.txt +++ b/Applications/FileIO/GocadIO/CMakeLists.txt @@ -1,2 +1,4 @@ -include_directories(${CMAKE_SOURCE_DIR}/BaseLib ${CMAKE_SOURCE_DIR}/FileIO - ${CMAKE_SOURCE_DIR}/GeoLib ${CMAKE_SOURCE_DIR}/MeshLib) +include_directories( + ${CMAKE_SOURCE_DIR}/BaseLib ${CMAKE_SOURCE_DIR}/FileIO + ${CMAKE_SOURCE_DIR}/GeoLib ${CMAKE_SOURCE_DIR}/MeshLib +) diff --git a/Applications/InSituLib/CMakeLists.txt b/Applications/InSituLib/CMakeLists.txt index e42084487e225ae00c98364ba8f994f31ae05641..788fb02ddd913e31bf0fa70d303355708654984d 100644 --- a/Applications/InSituLib/CMakeLists.txt +++ b/Applications/InSituLib/CMakeLists.txt @@ -7,12 +7,9 @@ if(BUILD_SHARED_LIBS) install(TARGETS InSituLib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() -target_link_libraries(InSituLib - PUBLIC - BaseLib - INTERFACE - VTK::PythonUsed - PRIVATE - MeshLib - ParaView::PythonCatalyst - VTK::CommonDataModel) +target_link_libraries( + InSituLib + PUBLIC BaseLib + INTERFACE VTK::PythonUsed + PRIVATE MeshLib ParaView::PythonCatalyst VTK::CommonDataModel +) diff --git a/Applications/Utils/MeshEdit/CMakeLists.txt b/Applications/Utils/MeshEdit/CMakeLists.txt index ae507cab6c9e33971212e7df4c2390793fc374c3..3f5fb9247450a9c30ff8eb0fb15edc60a4ce8b87 100644 --- a/Applications/Utils/MeshEdit/CMakeLists.txt +++ b/Applications/Utils/MeshEdit/CMakeLists.txt @@ -22,14 +22,18 @@ set(TOOLS ResetPropertiesInPolygonalRegion reviseMesh swapNodeCoordinateAxes - Vtu2Grid) + Vtu2Grid +) if(OGS_BUILD_GUI) - add_executable(RemoveGhostData + add_executable( + RemoveGhostData RemoveGhostData.cpp - ${PROJECT_SOURCE_DIR}/ThirdParty/paraview/vtkCleanUnstructuredGrid.cpp) - target_include_directories(RemoveGhostData - PRIVATE ${PROJECT_SOURCE_DIR}/ThirdParty/paraview) + ${PROJECT_SOURCE_DIR}/ThirdParty/paraview/vtkCleanUnstructuredGrid.cpp + ) + target_include_directories( + RemoveGhostData PRIVATE ${PROJECT_SOURCE_DIR}/ThirdParty/paraview + ) target_link_libraries(RemoveGhostData GitInfoLib MeshLib tclap) set_target_properties(RemoveGhostData PROPERTIES FOLDER Utilities) install(TARGETS RemoveGhostData RUNTIME DESTINATION bin) @@ -42,10 +46,12 @@ endforeach() set_target_properties(${TOOLS} PROPERTIES FOLDER Utilities) install(TARGETS ${TOOLS} RUNTIME DESTINATION bin) -target_link_libraries(appendLinesAlongPolyline MeshGeoToolsLib - ApplicationsFileIO) -target_link_libraries(CreateBoundaryConditionsAlongPolylines MeshGeoToolsLib - ApplicationsFileIO) +target_link_libraries( + appendLinesAlongPolyline MeshGeoToolsLib ApplicationsFileIO +) +target_link_libraries( + CreateBoundaryConditionsAlongPolylines MeshGeoToolsLib ApplicationsFileIO +) target_link_libraries(createLayeredMeshFromRasters ApplicationsFileIO) target_link_libraries(MapGeometryToMeshSurface MeshGeoToolsLib) target_link_libraries(ResetPropertiesInPolygonalRegion ApplicationsFileIO) diff --git a/Applications/Utils/OGSFileConverter/CMakeLists.txt b/Applications/Utils/OGSFileConverter/CMakeLists.txt index 20eac9d48b046344ab0c3146a2da6d935a6adf4e..f1ab01bbc1e0faa4d6f4d17df6592eb79088ea51 100644 --- a/Applications/Utils/OGSFileConverter/CMakeLists.txt +++ b/Applications/Utils/OGSFileConverter/CMakeLists.txt @@ -1,19 +1,25 @@ -ogs_add_library(OGSFileConverterLib FileListDialog.h OGSFileConverter.h - FileListDialog.cpp OGSFileConverter.cpp) -target_link_libraries(OGSFileConverterLib - PUBLIC ApplicationsFileIO MathLib QtBase ${VTK_LIBRARIES} - INTERFACE MeshLib) +ogs_add_library( + OGSFileConverterLib FileListDialog.h OGSFileConverter.h FileListDialog.cpp + OGSFileConverter.cpp +) +target_link_libraries( + OGSFileConverterLib PUBLIC ApplicationsFileIO MathLib QtBase + ${VTK_LIBRARIES} INTERFACE MeshLib +) set_target_properties(OGSFileConverterLib PROPERTIES AUTOMOC TRUE AUTOUIC TRUE) add_executable(OGSFileConverter main.cpp) -target_link_libraries(OGSFileConverter - PUBLIC ApplicationsFileIO GitInfoLib OGSFileConverterLib tclap) +target_link_libraries( + OGSFileConverter PUBLIC ApplicationsFileIO GitInfoLib OGSFileConverterLib + tclap +) add_autogen_include(OGSFileConverterLib) -set_target_properties(OGSFileConverter OGSFileConverterLib - PROPERTIES FOLDER "Utilities") +set_target_properties( + OGSFileConverter OGSFileConverterLib PROPERTIES FOLDER "Utilities" +) install(TARGETS OGSFileConverter RUNTIME DESTINATION bin) diff --git a/Applications/Utils/PostProcessing/CMakeLists.txt b/Applications/Utils/PostProcessing/CMakeLists.txt index c3bd2f990e0789585ca9577940db24f24a6a7b0c..0a10a65b9c8780186b6c57ed8f16b377dea61a8d 100644 --- a/Applications/Utils/PostProcessing/CMakeLists.txt +++ b/Applications/Utils/PostProcessing/CMakeLists.txt @@ -7,7 +7,16 @@ endif() if(OGS_BUILD_GUI) add_executable(Raster2PointCloud Raster2PointCloud.cpp) - target_link_libraries(Raster2PointCloud GitInfoLib ApplicationsFileIO BaseLib GeoLib VtkVis QtDataView tclap) + target_link_libraries( + Raster2PointCloud + GitInfoLib + ApplicationsFileIO + BaseLib + GeoLib + VtkVis + QtDataView + tclap + ) set_target_properties(Raster2PointCloud PROPERTIES FOLDER Utilities) install(TARGETS Raster2PointCloud RUNTIME DESTINATION bin) endif() diff --git a/Applications/Utils/SWMMConverter/CMakeLists.txt b/Applications/Utils/SWMMConverter/CMakeLists.txt index 1d03b716ace2c5cc10b99412a7d79d64b03191c7..ebdc03094130b81cebe06d14e946279e2ffe8a6c 100644 --- a/Applications/Utils/SWMMConverter/CMakeLists.txt +++ b/Applications/Utils/SWMMConverter/CMakeLists.txt @@ -1,11 +1,12 @@ add_executable(SWMMConverter SWMMConverter.cpp) -target_link_libraries(SWMMConverter - ApplicationsFileIO - GeoLib - GitInfoLib - MeshLib - SwmmInterface - tclap +target_link_libraries( + SWMMConverter + ApplicationsFileIO + GeoLib + GitInfoLib + MeshLib + SwmmInterface + tclap ) include_directories(${PROJECT_SOURCE_DIR}/Applications/FileIO) set_target_properties(SWMMConverter PROPERTIES FOLDER Utilities) diff --git a/BaseLib/CMakeLists.txt b/BaseLib/CMakeLists.txt index 80ce0aaf2c619114c97bb34e1f627edff5b8451b..6eb7030eebe3020e43cc5513c42ac07f91c9a534 100644 --- a/BaseLib/CMakeLists.txt +++ b/BaseLib/CMakeLists.txt @@ -8,15 +8,17 @@ endif() # Create the library ogs_add_library(BaseLib ${SOURCES}) -target_link_libraries(BaseLib PUBLIC Boost::boost - spdlog::spdlog - std::filesystem - $<$<BOOL:${MSVC}>:WinMM> # needed for timeGetTime - $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::Xml> - $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::XmlPatterns> +target_link_libraries( + BaseLib + PUBLIC Boost::boost + spdlog::spdlog + std::filesystem + $<$<BOOL:${MSVC}>:WinMM> # needed for timeGetTime + $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::Xml> + $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::XmlPatterns> ) -target_compile_definitions(BaseLib - PUBLIC $<$<BOOL:${OGS_FATAL_ABORT}>:OGS_FATAL_ABORT> +target_compile_definitions( + BaseLib PUBLIC $<$<BOOL:${OGS_FATAL_ABORT}>:OGS_FATAL_ABORT> PRIVATE $<$<BOOL:${OGS_USE_PETSC}>:USE_PETSC> ) diff --git a/CMakeLists.txt b/CMakeLists.txt index eef1d1417227bbf8fa7754977521c3384ce25251..f2326ba1e0a09d9e28e8fdd239fb3eb9c48e2194 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,26 +21,32 @@ include(CTest) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) option(BUILD_SHARED_LIBS "Create shared libraries?" OFF) option(OGS_BUILD_CLI "Should the OGS simulator be built?" ON) -set(CMAKE_LIBRARY_SEARCH_PATH - "" +set(CMAKE_LIBRARY_SEARCH_PATH "" CACHE PATH - "Additional library installation path, e.g. /opt/local or C:/libs") + "Additional library installation path, e.g. /opt/local or C:/libs" +) set(OGS_CPU_ARCHITECTURE "native" CACHE STRING "Processor architecture, \ - defaults to native (*nix) / blend (MSVC).") + defaults to native (*nix) / blend (MSVC)." +) option(OGS_ENABLE_AVX2 "Enable the use of AVX2 instructions" OFF) option(OGS_USE_CONAN "Should Conan package manager be used?" ON) set(OGS_CONAN_BUILD "missing" CACHE STRING "Possible values: all, missing, \ - never or list of libs to build") + never or list of libs to build" +) if(WIN32) option(OGS_DISABLE_CLCACHE "Disables clcache compiler cache." OFF) else() option(OGS_DISABLE_CCACHE "Disables ccache compiler cache." OFF) endif() if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.16) - option(OGS_USE_UNITY_BUILDS "Enables Unity builds for faster compilation." ON) + option(OGS_USE_UNITY_BUILDS "Enables Unity builds for faster compilation." + ON + ) endif() option(OGS_USE_PYTHON "Interface with Python" ON) -option(OGS_USE_POETRY "Enables automatic Python virtual environment handling with poetry." ON) +option(OGS_USE_POETRY + "Enables automatic Python virtual environment handling with poetry." ON +) if(WIN32) option(OGS_BUILD_SWMM "Should the SWMM interface be built?" ON) endif() @@ -50,9 +56,9 @@ endif() # Third-party libraries, names come from Conan package names foreach(lib vtk qt petsc tfel) - set(OGS_LIB_${lib} - "Default" - CACHE STRING "Which ${LIB} library should be used?") + set(OGS_LIB_${lib} "Default" CACHE STRING + "Which ${LIB} library should be used?" + ) set_property(CACHE OGS_LIB_${lib} PROPERTY STRINGS "Default" "System") endforeach() @@ -88,7 +94,8 @@ include(CppCheck) # Profiling if((CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC) AND GPROF_PATH) option(OGS_PROFILE - "Enables compiling with flags set for profiling with gprof." OFF) + "Enables compiling with flags set for profiling with gprof." OFF + ) endif() # GCC AND GPROF_PATH option(OGS_BUILD_GUI "Should the Data Explorer be built?" OFF) @@ -111,22 +118,26 @@ option(EIGEN_NO_DEBUG "Disables Eigen's assertions" OFF) # to take a look at https://github.com/ufz/ogs/issues/1881. option(EIGEN_DONT_VECTORIZE "Disables explicit vectorization when defined." ON) -set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES - "Default" - CACHE STRING "Use dynamically allocated shape matrices") -set_property(CACHE OGS_EIGEN_DYNAMIC_SHAPE_MATRICES - PROPERTY STRINGS "Default" "ON" "OFF") +set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES "Default" + CACHE STRING "Use dynamically allocated shape matrices" +) +set_property( + CACHE OGS_EIGEN_DYNAMIC_SHAPE_MATRICES PROPERTY STRINGS "Default" "ON" + "OFF" +) if(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES STREQUAL "Default") - if(CMAKE_BUILD_TYPE STREQUAL "Release" - OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL + "RelWithDebInfo" + ) set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES_INTERNAL OFF) else() set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES_INTERNAL ON) endif() else() set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES_INTERNAL - ${OGS_EIGEN_DYNAMIC_SHAPE_MATRICES}) + ${OGS_EIGEN_DYNAMIC_SHAPE_MATRICES} + ) endif() # Eigen End @@ -149,31 +160,37 @@ endif() option(OGS_COVERAGE "Enables code coverage measurements with gcov/lcov." OFF) # Options controlling which FEM elements will be compiled -set(OGS_MAX_ELEMENT_DIM - 3 - CACHE STRING "Maximum dimension of FEM elements to be built.") -set(OGS_MAX_ELEMENT_ORDER - 2 - CACHE STRING "Maximum order of FEM elements to be built.") +set(OGS_MAX_ELEMENT_DIM 3 + CACHE STRING "Maximum dimension of FEM elements to be built." +) +set(OGS_MAX_ELEMENT_ORDER 2 CACHE STRING + "Maximum order of FEM elements to be built." +) option(OGS_ENABLE_ELEMENT_SIMPLEX - "Build FEM elements for simplices (triangles, tetrahedra)." ON) + "Build FEM elements for simplices (triangles, tetrahedra)." ON +) option(OGS_ENABLE_ELEMENT_CUBOID - "Build FEM elements for cuboids (quads, hexahedra)." ON) + "Build FEM elements for cuboids (quads, hexahedra)." ON +) option(OGS_ENABLE_ELEMENT_PRISM "Build FEM elements for prisms." ON) option(OGS_ENABLE_ELEMENT_PYRAMID "Build FEM elements for pyramids." ON) if(NOT OGS_MAX_ELEMENT_DIM MATCHES "^[0-3]$") - message(FATAL_ERROR "OGS_MAX_ELEMENT_DIM must be an integer between 0 and 3.") + message( + FATAL_ERROR "OGS_MAX_ELEMENT_DIM must be an integer between 0 and 3." + ) endif() if(NOT OGS_MAX_ELEMENT_ORDER MATCHES "^[0-9]$") message(FATAL_ERROR "OGS_MAX_ELEMENT_ORDER must be an integer.") endif() option(OGS_CHECK_HEADER_COMPILATION "Check header for standalone compilation." - OFF) + OFF +) option(OGS_USE_MFRONT "Enable solid material models by MFront (https://tfel.sourceforge.net)" - OFF) + OFF +) # ---- Definitions ---- if(OGS_USE_LIS) include_directories(SYSTEM ${LIS_INCLUDE_DIR}) @@ -225,7 +242,8 @@ add_subdirectory(MeshGeoToolsLib) add_subdirectory(NumLib) if(OGS_BUILD_PROCESS_ComponentTransport - OR OGS_BUILD_PROCESS_RichardsComponentTransport) + OR OGS_BUILD_PROCESS_RichardsComponentTransport +) add_subdirectory(ChemistryLib) endif() diff --git a/ChemistryLib/CMakeLists.txt b/ChemistryLib/CMakeLists.txt index 6036f447944b655176364c2fa26220e51ce244f3..1cfb5a3464e0bff0851b6f54209d981b9efbd789 100644 --- a/ChemistryLib/CMakeLists.txt +++ b/ChemistryLib/CMakeLists.txt @@ -7,10 +7,12 @@ append_source_files(SOURCES Common) # Create the library ogs_add_library(ChemistryLib ${SOURCES}) -target_link_libraries(ChemistryLib PUBLIC iphreeqc PRIVATE NumLib spdlog::spdlog) +target_link_libraries( + ChemistryLib PUBLIC iphreeqc PRIVATE NumLib spdlog::spdlog +) # See https://github.com/ufz/ogs/pull/2982#issuecomment-641086788 -set_source_files_properties(PhreeqcIO.cpp - CreateChemicalSolverInterface.cpp - PhreeqcKernel.cpp - PROPERTIES SKIP_UNITY_BUILD_INCLUSION TRUE) +set_source_files_properties( + PhreeqcIO.cpp CreateChemicalSolverInterface.cpp PhreeqcKernel.cpp + PROPERTIES SKIP_UNITY_BUILD_INCLUSION TRUE +) diff --git a/GeoLib/CMakeLists.txt b/GeoLib/CMakeLists.txt index 7aff86e825b8a82f427391b8e2e1e6310d18362a..a86f60bcc7d1d09425ea9d278f55c97d2d306ad6 100644 --- a/GeoLib/CMakeLists.txt +++ b/GeoLib/CMakeLists.txt @@ -12,21 +12,22 @@ endif() # Create the library ogs_add_library(GeoLib ${SOURCES}) -target_link_libraries(GeoLib - PUBLIC - BaseLib - MathLib - $<$<BOOL:${OGS_BUILD_GUI}>:rapidxml> - $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::Xml> - $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::XmlPatterns> - PRIVATE - tet - spdlog::spdlog +target_link_libraries( + GeoLib + PUBLIC BaseLib MathLib $<$<BOOL:${OGS_BUILD_GUI}>:rapidxml> + $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::Xml> + $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::XmlPatterns> + PRIVATE tet spdlog::spdlog ) -configure_file(IO/XmlIO/OpenGeoSysGLI.xsd - ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysGLI.xsd COPYONLY) -configure_file(IO/XmlIO/OpenGeoSysSTN.xsd - ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysSTN.xsd COPYONLY) +configure_file( + IO/XmlIO/OpenGeoSysGLI.xsd + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysGLI.xsd COPYONLY +) +configure_file( + IO/XmlIO/OpenGeoSysSTN.xsd + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysSTN.xsd COPYONLY +) install(FILES IO/XmlIO/OpenGeoSysGLI.xsd IO/XmlIO/OpenGeoSysSTN.xsd - DESTINATION bin) + DESTINATION bin +) diff --git a/InfoLib/CMakeLists.txt b/InfoLib/CMakeLists.txt index 8930756290fccaf263375b09c6e70f970509bd15..c969ed7358d5c4a5a0815b8b78c95ced28a66535 100644 --- a/InfoLib/CMakeLists.txt +++ b/InfoLib/CMakeLists.txt @@ -1,9 +1,12 @@ foreach(lib Git CMake Test) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${lib}Info.cpp.in - ${CMAKE_CURRENT_BINARY_DIR}/${lib}Info.cpp @ONLY) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/${lib}Info.cpp.in + ${CMAKE_CURRENT_BINARY_DIR}/${lib}Info.cpp @ONLY + ) - ogs_add_library(${lib}InfoLib ${CMAKE_CURRENT_BINARY_DIR}/${lib}Info.cpp - ${lib}Info.h) + ogs_add_library( + ${lib}InfoLib ${CMAKE_CURRENT_BINARY_DIR}/${lib}Info.cpp ${lib}Info.h + ) target_include_directories(${lib}InfoLib PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) endforeach(lib) diff --git a/MaterialLib/CMakeLists.txt b/MaterialLib/CMakeLists.txt index 60180ea3c90322685508e2370683fa9e2a117386..bffc14abff53cf1ca90a4991dfb6e681552ba720 100644 --- a/MaterialLib/CMakeLists.txt +++ b/MaterialLib/CMakeLists.txt @@ -29,8 +29,9 @@ append_source_files(SOURCES PorousMedium/Porosity) append_source_files(SOURCES PorousMedium/Storage) append_source_files(SOURCES PorousMedium/Permeability) append_source_files(SOURCES PorousMedium/UnsaturatedProperty/CapillaryPressure) -append_source_files(SOURCES - PorousMedium/UnsaturatedProperty/RelativePermeability) +append_source_files( + SOURCES PorousMedium/UnsaturatedProperty/RelativePermeability +) append_source_files(SOURCES TwoPhaseModels) if(OGS_USE_MFRONT) @@ -42,12 +43,9 @@ ogs_add_library(MaterialLib ${SOURCES}) if(OGS_USE_MFRONT) target_compile_definitions(MaterialLib PUBLIC OGS_USE_MFRONT) endif() -target_link_libraries(MaterialLib +target_link_libraries( + MaterialLib PUBLIC $<$<TARGET_EXISTS:MaterialLib_SolidModels_MFront>:MaterialLib_SolidModels_MFront> - PRIVATE - MathLib - MeshLib - ParameterLib - spdlog::spdlog + PRIVATE MathLib MeshLib ParameterLib spdlog::spdlog ) diff --git a/MaterialLib/SolidModels/MFront/CMakeLists.txt b/MaterialLib/SolidModels/MFront/CMakeLists.txt index 2b71aa32cecb930a5fc6c29cd42fe3f3d2d4b89f..f17d63d48ff947b5ec010d472eda170319973f9e 100644 --- a/MaterialLib/SolidModels/MFront/CMakeLists.txt +++ b/MaterialLib/SolidModels/MFront/CMakeLists.txt @@ -18,25 +18,30 @@ mfront_behaviours_check_library( MohrCoulombAbboSloanUBI MohrCoulombAbboSloanUBIOrtho StandardElasticityBrick - StandardElasticityBrickOrtho) + StandardElasticityBrickOrtho +) target_link_libraries( - MaterialLib_SolidModels_MFront - PUBLIC BaseLib NumLib OgsMFrontBehaviour - PRIVATE MathLib MeshLib spdlog::spdlog) + MaterialLib_SolidModels_MFront PUBLIC BaseLib NumLib OgsMFrontBehaviour + PRIVATE MathLib MeshLib spdlog::spdlog +) # Disable warnings for generated OgsMFrontBehaviour target_compile_options( OgsMFrontBehaviour PRIVATE $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>>:-w> - $<$<CXX_COMPILER_ID:MSVC>:/W0>) + $<$<CXX_COMPILER_ID:MSVC>:/W0> +) -target_include_directories(MaterialLib_SolidModels_MFront - PUBLIC ThirdParty/MGIS/include) -target_link_libraries(MaterialLib_SolidModels_MFront - PUBLIC MFrontGenericInterface) -target_compile_definitions(MaterialLib_SolidModels_MFront - PRIVATE OGS_USE_MFRONT) +target_include_directories( + MaterialLib_SolidModels_MFront PUBLIC ThirdParty/MGIS/include +) +target_link_libraries( + MaterialLib_SolidModels_MFront PUBLIC MFrontGenericInterface +) +target_compile_definitions( + MaterialLib_SolidModels_MFront PRIVATE OGS_USE_MFRONT +) install(TARGETS MFrontGenericInterface OgsMFrontBehaviour) diff --git a/MathLib/CMakeLists.txt b/MathLib/CMakeLists.txt index 2882065524b34c6325ec0fb1150f7426e38d3f5e..bcfdca3cfc83e077ac69010928cff8a9f9750974 100644 --- a/MathLib/CMakeLists.txt +++ b/MathLib/CMakeLists.txt @@ -22,24 +22,22 @@ endif() # Create the library ogs_add_library(MathLib ${SOURCES}) -target_include_directories(MathLib - PUBLIC - ${CMAKE_CURRENT_BINARY_DIR} - $<$<BOOL:${OGS_USE_PETSC}>:${PETSC_INCLUDE_DIRS}> +target_include_directories( + MathLib PUBLIC ${CMAKE_CURRENT_BINARY_DIR} + $<$<BOOL:${OGS_USE_PETSC}>:${PETSC_INCLUDE_DIRS}> ) set_target_properties(MathLib PROPERTIES LINKER_LANGUAGE CXX) -target_link_libraries(MathLib - PUBLIC - BaseLib - ${OpenMP_CXX_LIBRARIES} - $<$<TARGET_EXISTS:LAPACK::LAPACK>:LAPACK::LAPACK> - $<$<BOOL:${OGS_USE_LIS}>:${LIS_LIBRARIES}> - $<$<BOOL:${OGS_USE_CVODE}>:CVODE::CVODE> - Eigen3::Eigen - PRIVATE - spdlog::spdlog +target_link_libraries( + MathLib + PUBLIC BaseLib + ${OpenMP_CXX_LIBRARIES} + $<$<TARGET_EXISTS:LAPACK::LAPACK>:LAPACK::LAPACK> + $<$<BOOL:${OGS_USE_LIS}>:${LIS_LIBRARIES}> + $<$<BOOL:${OGS_USE_CVODE}>:CVODE::CVODE> + Eigen3::Eigen + PRIVATE spdlog::spdlog ) if(OGS_USE_PETSC) @@ -49,11 +47,9 @@ if(OGS_USE_MKL) target_link_libraries(MathLib PUBLIC ${MKL_LIBRARIES}) endif() -target_compile_definitions(MathLib - PUBLIC - $<$<BOOL:${USE_LIS}>:USE_LIS> - $<$<BOOL:${OGS_USE_PETSC}>:USE_PETSC> - $<$<BOOL:${OGS_USE_CVODE}>:CVODE_FOUND> - PRIVATE - $<$<BOOL:${OGS_USE_MKL}>:USE_MKL> +target_compile_definitions( + MathLib + PUBLIC $<$<BOOL:${USE_LIS}>:USE_LIS> $<$<BOOL:${OGS_USE_PETSC}>:USE_PETSC> + $<$<BOOL:${OGS_USE_CVODE}>:CVODE_FOUND> + PRIVATE $<$<BOOL:${OGS_USE_MKL}>:USE_MKL> ) diff --git a/MeshGeoToolsLib/CMakeLists.txt b/MeshGeoToolsLib/CMakeLists.txt index fa25cf3497c3787ce28193edac7e272614cb3217..f6455befa13a47995ae6923b6ba9cf293e4f766c 100644 --- a/MeshGeoToolsLib/CMakeLists.txt +++ b/MeshGeoToolsLib/CMakeLists.txt @@ -4,6 +4,7 @@ get_source_files(SOURCES) # Create the library ogs_add_library(MeshGeoToolsLib ${SOURCES}) -target_link_libraries(MeshGeoToolsLib - PUBLIC GeoLib MathLib - PRIVATE BaseLib MeshLib spdlog::spdlog) +target_link_libraries( + MeshGeoToolsLib PUBLIC GeoLib MathLib PRIVATE BaseLib MeshLib + spdlog::spdlog +) diff --git a/MeshLib/CMakeLists.txt b/MeshLib/CMakeLists.txt index 5ff7a1b1d3b622ca531b666d0cb979e8e95ecf19..dd5edbc21fb4af089c2e79af93951f61e9dadd69 100644 --- a/MeshLib/CMakeLists.txt +++ b/MeshLib/CMakeLists.txt @@ -33,20 +33,22 @@ ogs_add_library(MeshLib ${SOURCES}) target_link_libraries( MeshLib - PUBLIC - BaseLib GeoLib GitInfoLib MathLib ${VTK_LIBRARIES} - $<$<TARGET_EXISTS:OgsXdmf>:OgsXdmf> - $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX> - PRIVATE - spdlog::spdlog + PUBLIC BaseLib + GeoLib + GitInfoLib + MathLib + ${VTK_LIBRARIES} + $<$<TARGET_EXISTS:OgsXdmf>:OgsXdmf> + $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX> + PRIVATE spdlog::spdlog ) target_include_directories(MeshLib PUBLIC ${VTK_INCLUDE_DIRS}) -target_compile_definitions(MeshLib +target_compile_definitions( + MeshLib PUBLIC - $<$<BOOL:${OGS_USE_PETSC}>:USE_PETSC> - $<$<AND:$<BOOL:$ENV{VTK_USE_64BIT_IDS}>,$<NOT:$<BOOL:VTK_ADDED>>>:VTK_USE_64BIT_IDS> - PRIVATE - $<$<BOOL:${OGS_USE_XDMF}>:OGS_USE_XDMF> + $<$<BOOL:${OGS_USE_PETSC}>:USE_PETSC> + $<$<AND:$<BOOL:$ENV{VTK_USE_64BIT_IDS}>,$<NOT:$<BOOL:VTK_ADDED>>>:VTK_USE_64BIT_IDS> + PRIVATE $<$<BOOL:${OGS_USE_XDMF}>:OGS_USE_XDMF> ) diff --git a/NumLib/CMakeLists.txt b/NumLib/CMakeLists.txt index b0bcac198dc69fdc4e08eea5491c6e423033de53..0e3586107755bef08b6de12691477974ed77c7c7 100644 --- a/NumLib/CMakeLists.txt +++ b/NumLib/CMakeLists.txt @@ -22,6 +22,6 @@ endif() set_target_properties(NumLib PROPERTIES LINKER_LANGUAGE CXX) target_link_libraries( - NumLib - PUBLIC BaseLib GeoLib MathLib MeshLib - PRIVATE MeshGeoToolsLib spdlog::spdlog) + NumLib PUBLIC BaseLib GeoLib MathLib MeshLib PRIVATE MeshGeoToolsLib + spdlog::spdlog +) diff --git a/ParameterLib/CMakeLists.txt b/ParameterLib/CMakeLists.txt index 41840f991fce39b8cff8f3630648779237389f56..82aedf62e39a0c1cf76298fc578ae097c738ae6b 100644 --- a/ParameterLib/CMakeLists.txt +++ b/ParameterLib/CMakeLists.txt @@ -1,7 +1,6 @@ get_source_files(SOURCES) ogs_add_library(ParameterLib ${SOURCES}) -target_link_libraries(ParameterLib - PUBLIC MathLib - PRIVATE BaseLib exprtk MeshLib spdlog::spdlog +target_link_libraries( + ParameterLib PUBLIC MathLib PRIVATE BaseLib exprtk MeshLib spdlog::spdlog ) diff --git a/ProcessLib/BoundaryCondition/Python/CMakeLists.txt b/ProcessLib/BoundaryCondition/Python/CMakeLists.txt index 76659c100a78ff1cf0550f3fab5cdcf790f35e92..78e34ba1c5662f0bd5da6a8067a79e9416ccfe63 100644 --- a/ProcessLib/BoundaryCondition/Python/CMakeLists.txt +++ b/ProcessLib/BoundaryCondition/Python/CMakeLists.txt @@ -1,34 +1,39 @@ -ogs_add_library(ProcessLibBoundaryConditionPython - PythonBoundaryCondition.cpp - PythonBoundaryCondition.h - PythonBoundaryConditionLocalAssembler.h - PythonBoundaryConditionPythonSideInterface.h - BHEInflowPythonBoundaryCondition.h - BHEInflowPythonBoundaryConditionPythonSideInterface.h) +ogs_add_library( + ProcessLibBoundaryConditionPython + PythonBoundaryCondition.cpp + PythonBoundaryCondition.h + PythonBoundaryConditionLocalAssembler.h + PythonBoundaryConditionPythonSideInterface.h + BHEInflowPythonBoundaryCondition.h + BHEInflowPythonBoundaryConditionPythonSideInterface.h +) -target_compile_definitions(ProcessLibBoundaryConditionPython - PUBLIC - OGS_USE_PYTHON - # Enabled elements - OGS_MAX_ELEMENT_DIM=${OGS_MAX_ELEMENT_DIM} - OGS_MAX_ELEMENT_ORDER=${OGS_MAX_ELEMENT_ORDER} - $<$<BOOL:${OGS_ENABLE_ELEMENT_SIMPLEX}>:OGS_ENABLE_ELEMENT_SIMPLEX> - $<$<BOOL:${OGS_ENABLE_ELEMENT_CUBOID}>:OGS_ENABLE_ELEMENT_CUBOID> - $<$<BOOL:${OGS_ENABLE_ELEMENT_PRISM}>:OGS_ENABLE_ELEMENT_PRISM> - $<$<BOOL:${OGS_ENABLE_ELEMENT_PYRAMID}>:OGS_ENABLE_ELEMENT_PYRAMID> +target_compile_definitions( + ProcessLibBoundaryConditionPython + PUBLIC OGS_USE_PYTHON + # Enabled elements + OGS_MAX_ELEMENT_DIM=${OGS_MAX_ELEMENT_DIM} + OGS_MAX_ELEMENT_ORDER=${OGS_MAX_ELEMENT_ORDER} + $<$<BOOL:${OGS_ENABLE_ELEMENT_SIMPLEX}>:OGS_ENABLE_ELEMENT_SIMPLEX> + $<$<BOOL:${OGS_ENABLE_ELEMENT_CUBOID}>:OGS_ENABLE_ELEMENT_CUBOID> + $<$<BOOL:${OGS_ENABLE_ELEMENT_PRISM}>:OGS_ENABLE_ELEMENT_PRISM> + $<$<BOOL:${OGS_ENABLE_ELEMENT_PYRAMID}>:OGS_ENABLE_ELEMENT_PYRAMID> ) target_link_libraries( - ProcessLibBoundaryConditionPython - PUBLIC BaseLib MathLib MeshLib NumLib ${Python3_LIBRARIES} - PRIVATE pybind11::pybind11 spdlog::spdlog) + ProcessLibBoundaryConditionPython PUBLIC BaseLib MathLib MeshLib NumLib + ${Python3_LIBRARIES} + PRIVATE pybind11::pybind11 spdlog::spdlog +) # For the embedded Python module -ogs_add_library(ProcessLibBoundaryConditionPythonModule - PythonBoundaryConditionModule.cpp PythonBoundaryConditionModule.h - BHEInflowPythonBoundaryConditionModule.cpp - BHEInflowPythonBoundaryConditionModule.h) +ogs_add_library( + ProcessLibBoundaryConditionPythonModule PythonBoundaryConditionModule.cpp + PythonBoundaryConditionModule.h BHEInflowPythonBoundaryConditionModule.cpp + BHEInflowPythonBoundaryConditionModule.h +) -target_link_libraries(ProcessLibBoundaryConditionPythonModule - PUBLIC ProcessLibBoundaryConditionPython - pybind11::pybind11) +target_link_libraries( + ProcessLibBoundaryConditionPythonModule + PUBLIC ProcessLibBoundaryConditionPython pybind11::pybind11 +) diff --git a/ProcessLib/HeatTransportBHE/CMakeLists.txt b/ProcessLib/HeatTransportBHE/CMakeLists.txt index 746f01dcec3a2daae66ef55df2f620d7fb81b209..461b06769d4a1774c01abe6105cd372198d4eb8d 100644 --- a/ProcessLib/HeatTransportBHE/CMakeLists.txt +++ b/ProcessLib/HeatTransportBHE/CMakeLists.txt @@ -5,12 +5,10 @@ append_source_files(SOURCES LocalAssemblers) ogs_add_library(HeatTransportBHE ${SOURCES}) -target_link_libraries(HeatTransportBHE - PUBLIC - ProcessLib - PRIVATE - ParameterLib - $<$<TARGET_EXISTS:pybind11::pybind11>:pybind11::pybind11> +target_link_libraries( + HeatTransportBHE PUBLIC ProcessLib + PRIVATE ParameterLib + $<$<TARGET_EXISTS:pybind11::pybind11>:pybind11::pybind11> ) if(OGS_BUILD_TESTING) diff --git a/ProcessLib/RichardsComponentTransport/CMakeLists.txt b/ProcessLib/RichardsComponentTransport/CMakeLists.txt index 39a464cd941d1b8057a0f332270ddd292916e009..857f268bee056821e17dd5c650ad655b29ab6e6c 100644 --- a/ProcessLib/RichardsComponentTransport/CMakeLists.txt +++ b/ProcessLib/RichardsComponentTransport/CMakeLists.txt @@ -1,9 +1,9 @@ get_source_files(SOURCES) ogs_add_library(RichardsComponentTransport ${SOURCES}) -target_link_libraries(RichardsComponentTransport - PUBLIC ProcessLib - PRIVATE ParameterLib) +target_link_libraries( + RichardsComponentTransport PUBLIC ProcessLib PRIVATE ParameterLib +) if(OGS_BUILD_TESTING) include(Tests.cmake) diff --git a/ProcessLib/SmallDeformationNonlocal/CMakeLists.txt b/ProcessLib/SmallDeformationNonlocal/CMakeLists.txt index a889eb32405f7460e97ba414583cdeecc67eaf20..0c050a6d3d764c680c3d95827998945c605e4923 100644 --- a/ProcessLib/SmallDeformationNonlocal/CMakeLists.txt +++ b/ProcessLib/SmallDeformationNonlocal/CMakeLists.txt @@ -1,9 +1,9 @@ get_source_files(SOURCES) ogs_add_library(SmallDeformationNonlocal ${SOURCES}) -target_link_libraries(SmallDeformationNonlocal - PUBLIC ProcessLib - PRIVATE ParameterLib) +target_link_libraries( + SmallDeformationNonlocal PUBLIC ProcessLib PRIVATE ParameterLib +) if(OGS_BUILD_TESTING) include(Tests.cmake) diff --git a/ProcessLib/SourceTerms/Python/CMakeLists.txt b/ProcessLib/SourceTerms/Python/CMakeLists.txt index d09465db096f63bcee18d66e0a0674b809fc5612..578db2c25552480b5fbd613a5be446874ac0f1e5 100644 --- a/ProcessLib/SourceTerms/Python/CMakeLists.txt +++ b/ProcessLib/SourceTerms/Python/CMakeLists.txt @@ -1,31 +1,38 @@ -ogs_add_library(ProcessLibSourceTermPython - CreatePythonSourceTerm.cpp - CreatePythonSourceTerm.h - PythonSourceTerm.cpp - PythonSourceTerm.h - PythonSourceTermLocalAssembler.h - PythonSourceTermPythonSideInterface.h) +ogs_add_library( + ProcessLibSourceTermPython + CreatePythonSourceTerm.cpp + CreatePythonSourceTerm.h + PythonSourceTerm.cpp + PythonSourceTerm.h + PythonSourceTermLocalAssembler.h + PythonSourceTermPythonSideInterface.h +) -target_compile_definitions(ProcessLibSourceTermPython - PUBLIC - OGS_USE_PYTHON - # Enabled elements - OGS_MAX_ELEMENT_DIM=${OGS_MAX_ELEMENT_DIM} - OGS_MAX_ELEMENT_ORDER=${OGS_MAX_ELEMENT_ORDER} - $<$<BOOL:${OGS_ENABLE_ELEMENT_SIMPLEX}>:OGS_ENABLE_ELEMENT_SIMPLEX> - $<$<BOOL:${OGS_ENABLE_ELEMENT_CUBOID}>:OGS_ENABLE_ELEMENT_CUBOID> - $<$<BOOL:${OGS_ENABLE_ELEMENT_PRISM}>:OGS_ENABLE_ELEMENT_PRISM> - $<$<BOOL:${OGS_ENABLE_ELEMENT_PYRAMID}>:OGS_ENABLE_ELEMENT_PYRAMID> +target_compile_definitions( + ProcessLibSourceTermPython + PUBLIC OGS_USE_PYTHON + # Enabled elements + OGS_MAX_ELEMENT_DIM=${OGS_MAX_ELEMENT_DIM} + OGS_MAX_ELEMENT_ORDER=${OGS_MAX_ELEMENT_ORDER} + $<$<BOOL:${OGS_ENABLE_ELEMENT_SIMPLEX}>:OGS_ENABLE_ELEMENT_SIMPLEX> + $<$<BOOL:${OGS_ENABLE_ELEMENT_CUBOID}>:OGS_ENABLE_ELEMENT_CUBOID> + $<$<BOOL:${OGS_ENABLE_ELEMENT_PRISM}>:OGS_ENABLE_ELEMENT_PRISM> + $<$<BOOL:${OGS_ENABLE_ELEMENT_PYRAMID}>:OGS_ENABLE_ELEMENT_PYRAMID> ) target_link_libraries( - ProcessLibSourceTermPython - PUBLIC BaseLib MathLib MeshLib NumLib ${Python3_LIBRARIES} - PRIVATE pybind11::pybind11 spdlog::spdlog) + ProcessLibSourceTermPython PUBLIC BaseLib MathLib MeshLib NumLib + ${Python3_LIBRARIES} + PRIVATE pybind11::pybind11 spdlog::spdlog +) # For the embedded Python module -ogs_add_library(ProcessLibSourceTermPythonModule PythonSourceTermModule.cpp - PythonSourceTermModule.h) +ogs_add_library( + ProcessLibSourceTermPythonModule PythonSourceTermModule.cpp + PythonSourceTermModule.h +) -target_link_libraries(ProcessLibSourceTermPythonModule - PUBLIC ProcessLibSourceTermPython pybind11::pybind11) +target_link_libraries( + ProcessLibSourceTermPythonModule PUBLIC ProcessLibSourceTermPython + pybind11::pybind11 +) diff --git a/ProcessLib/SteadyStateDiffusion/CMakeLists.txt b/ProcessLib/SteadyStateDiffusion/CMakeLists.txt index ffc5d1f7af91eee1737f03b1a4769ed85254499d..8f18f82215a21c166e58f736342e14e220a2822b 100644 --- a/ProcessLib/SteadyStateDiffusion/CMakeLists.txt +++ b/ProcessLib/SteadyStateDiffusion/CMakeLists.txt @@ -2,7 +2,8 @@ get_source_files(SOURCES) ogs_add_library(SteadyStateDiffusion ${SOURCES}) -target_link_libraries(SteadyStateDiffusion PUBLIC ProcessLib - PRIVATE ParameterLib) +target_link_libraries( + SteadyStateDiffusion PUBLIC ProcessLib PRIVATE ParameterLib +) include(Tests.cmake) diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/CMakeLists.txt b/ProcessLib/ThermalTwoPhaseFlowWithPP/CMakeLists.txt index 1ce81cf428bddc5e2be27976739af6063eed6228..7e8bdb371836f02e10a4d178cfa736430006bd80 100644 --- a/ProcessLib/ThermalTwoPhaseFlowWithPP/CMakeLists.txt +++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/CMakeLists.txt @@ -3,11 +3,12 @@ get_source_files(SOURCES) ogs_add_library(ThermalTwoPhaseFlowWithPP ${SOURCES}) if(BUILD_SHARED_LIBS) install(TARGETS ThermalTwoPhaseFlowWithPP - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) endif() -target_link_libraries(ThermalTwoPhaseFlowWithPP - PUBLIC ProcessLib - PRIVATE ParameterLib) +target_link_libraries( + ThermalTwoPhaseFlowWithPP PUBLIC ProcessLib PRIVATE ParameterLib +) if(OGS_BUILD_TESTING) include(Tests.cmake) diff --git a/ProcessLib/ThermoHydroMechanics/CMakeLists.txt b/ProcessLib/ThermoHydroMechanics/CMakeLists.txt index e17771bb65ea3f12020d237d5ffea2a1656baa9a..26927b1d69dac20d31f6c1286284cffe5f9c3de4 100644 --- a/ProcessLib/ThermoHydroMechanics/CMakeLists.txt +++ b/ProcessLib/ThermoHydroMechanics/CMakeLists.txt @@ -1,9 +1,9 @@ get_source_files(SOURCES) ogs_add_library(ThermoHydroMechanics ${SOURCES}) -target_link_libraries(ThermoHydroMechanics - PUBLIC ProcessLib - PRIVATE ParameterLib) +target_link_libraries( + ThermoHydroMechanics PUBLIC ProcessLib PRIVATE ParameterLib +) if(OGS_BUILD_TESTING) include(Tests.cmake) diff --git a/ProcessLib/ThermoMechanicalPhaseField/CMakeLists.txt b/ProcessLib/ThermoMechanicalPhaseField/CMakeLists.txt index 18d54925590afa7eed354f820f0d319e6ff98781..8df5f201cfaa5641ef9cda283c7e44e3afcdae84 100644 --- a/ProcessLib/ThermoMechanicalPhaseField/CMakeLists.txt +++ b/ProcessLib/ThermoMechanicalPhaseField/CMakeLists.txt @@ -1,9 +1,9 @@ get_source_files(SOURCES) ogs_add_library(ThermoMechanicalPhaseField ${SOURCES}) -target_link_libraries(ThermoMechanicalPhaseField - PUBLIC ProcessLib - PRIVATE ParameterLib) +target_link_libraries( + ThermoMechanicalPhaseField PUBLIC ProcessLib PRIVATE ParameterLib +) if(OGS_BUILD_TESTING) include(Tests.cmake) diff --git a/ProcessLib/ThermoRichardsMechanics/CMakeLists.txt b/ProcessLib/ThermoRichardsMechanics/CMakeLists.txt index a43e38bd48e53a8c9841fc145e9854fb95a3b97d..5f0052d87b849c72d0771f50aaf7f98321df7cc1 100644 --- a/ProcessLib/ThermoRichardsMechanics/CMakeLists.txt +++ b/ProcessLib/ThermoRichardsMechanics/CMakeLists.txt @@ -1,7 +1,9 @@ get_source_files(SOURCES) ogs_add_library(ThermoRichardsMechanics ${SOURCES}) -target_link_libraries(ThermoRichardsMechanics PUBLIC ProcessLib PRIVATE ParameterLib) +target_link_libraries( + ThermoRichardsMechanics PUBLIC ProcessLib PRIVATE ParameterLib +) if(OGS_BUILD_TESTING) include(Tests.cmake) diff --git a/ProcessLib/TwoPhaseFlowWithPrho/CMakeLists.txt b/ProcessLib/TwoPhaseFlowWithPrho/CMakeLists.txt index 211da79bcff66b2d5568a7abec863e12aacb153c..81ed6e94b342fa76dbe9594f999b19d139f5d219 100644 --- a/ProcessLib/TwoPhaseFlowWithPrho/CMakeLists.txt +++ b/ProcessLib/TwoPhaseFlowWithPrho/CMakeLists.txt @@ -1,9 +1,9 @@ get_source_files(SOURCES) ogs_add_library(TwoPhaseFlowWithPrho ${SOURCES}) -target_link_libraries(TwoPhaseFlowWithPrho - PUBLIC ProcessLib - PRIVATE ParameterLib) +target_link_libraries( + TwoPhaseFlowWithPrho PUBLIC ProcessLib PRIVATE ParameterLib +) if(OGS_BUILD_TESTING) include(Tests.cmake) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 7dc25988a37f49b87dd816629382a8682108e3e5..1c44f20cf5c2daaf3ea1d53d3dbd1b6cb8881d22 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1,4 +1,4 @@ -### ctest dependencies +# ctest dependencies foreach(tool vtkdiff xdmfdiff) if(TARGET ${tool}) list(APPEND test_dependencies ${tool}) @@ -7,7 +7,7 @@ endforeach() add_dependencies(ctest ${test_dependencies}) add_dependencies(ctest-large ${test_dependencies}) -### testrunner ### +# testrunner ### # VS2012 doesn't support correctly the tuples yet See # http://code.google.com/p/googletest/issues/detail?id=412 @@ -26,7 +26,9 @@ append_source_files(TEST_SOURCES MeshLib) append_source_files(TEST_SOURCES MeshGeoToolsLib) append_source_files(TEST_SOURCES_NUMLIB NumLib) # Disable Unity build for NumLib tests -set_source_files_properties(${TEST_SOURCES_NUMLIB} PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON) +set_source_files_properties( + ${TEST_SOURCES_NUMLIB} PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON +) # Keep order of source files, otherwise PETSc non-MPI tests fail set(TEST_SOURCES ${TEST_SOURCES} ${TEST_SOURCES_NUMLIB}) append_source_files(TEST_SOURCES ParameterLib) @@ -54,26 +56,26 @@ endif() add_executable(testrunner ${TEST_SOURCES}) set_target_properties(testrunner PROPERTIES FOLDER Testing) -target_link_libraries(testrunner - PRIVATE - ApplicationsFileIO - autocheck - gtest - MeshGeoToolsLib - MaterialLib - MathLib - MeshLib - NumLib - ParameterLib - ProcessLib - Processes - TestInfoLib - Threads::Threads - ${VTK_LIBRARIES} - $<$<TARGET_EXISTS:LIE>:LIE> - $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX> - $<$<TARGET_EXISTS:SwmmInterface>:SwmmInterface> - $<$<TARGET_EXISTS:InSituLib>:InSituLib> +target_link_libraries( + testrunner + PRIVATE ApplicationsFileIO + autocheck + gtest + MeshGeoToolsLib + MaterialLib + MathLib + MeshLib + NumLib + ParameterLib + ProcessLib + Processes + TestInfoLib + Threads::Threads + ${VTK_LIBRARIES} + $<$<TARGET_EXISTS:LIE>:LIE> + $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX> + $<$<TARGET_EXISTS:SwmmInterface>:SwmmInterface> + $<$<TARGET_EXISTS:InSituLib>:InSituLib> ) if(OGS_USE_PETSC) @@ -82,15 +84,15 @@ endif() if(OGS_BUILD_GUI) target_compile_definitions(testrunner PUBLIC OGS_BUILD_GUI) - target_link_libraries(testrunner - PRIVATE - GitInfoLib - Qt5::Core - Qt5::Gui - Qt5::Xml - Qt5::Network - VtkVis - QtDataView + target_link_libraries( + testrunner + PRIVATE GitInfoLib + Qt5::Core + Qt5::Gui + Qt5::Xml + Qt5::Network + VtkVis + QtDataView ) if(GEOTIFF_FOUND) target_link_libraries(testrunner PRIVATE ${GEOTIFF_LIBRARIES}) diff --git a/scripts/cmake/CCacheSetup.cmake b/scripts/cmake/CCacheSetup.cmake index 5aa3157af03f181214823f0f3216ae15155d1ca6..5dee6d01a87c52d49d786a03e8113e5b0f9cf959 100644 --- a/scripts/cmake/CCacheSetup.cmake +++ b/scripts/cmake/CCacheSetup.cmake @@ -4,14 +4,15 @@ endif() # Check ccache version set(CCACHE_VERSION_REQUIRED 3.2.0) -execute_process(COMMAND ${CCACHE_TOOL_PATH} --version - OUTPUT_VARIABLE CCACHE_VERSION +execute_process( + COMMAND ${CCACHE_TOOL_PATH} --version OUTPUT_VARIABLE CCACHE_VERSION ) set(CCACHE_VERSION_GREATER_EQUAL_3_2_5 ON) if("${CCACHE_VERSION}" MATCHES "ccache version ([0-9]\\.[0-9]\\.[0-9])") if(${CMAKE_MATCH_1} VERSION_LESS ${CCACHE_VERSION_REQUIRED}) message(STATUS "CCache outdated. Installed: ${CMAKE_MATCH_1}, \ - required: ${CCACHE_VERSION_REQUIRED}. Caching disabled.") + required: ${CCACHE_VERSION_REQUIRED}. Caching disabled." + ) return() endif() if(${CMAKE_MATCH_1} VERSION_LESS 3.2.5) @@ -28,27 +29,33 @@ if(COMPILER_IS_CLANG) endif() # Check ccache pre-compiled headers config -execute_process(COMMAND ${CCACHE_TOOL_PATH} -p +execute_process( + COMMAND ${CCACHE_TOOL_PATH} -p OUTPUT_VARIABLE CCACHE_CONFIG ERROR_VARIABLE CCACHE_CONFIG - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_STRIP_TRAILING_WHITESPACE + OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE ) -string(REGEX MATCH ".*time_macros.*" - COTIRE_CCACHE_CONFIG_TIME_MACROS ${CCACHE_CONFIG} +string(REGEX MATCH ".*time_macros.*" COTIRE_CCACHE_CONFIG_TIME_MACROS + ${CCACHE_CONFIG} ) -string(REGEX MATCH ".*pch_defines.*" - COTIRE_CCACHE_CONFIG_PCH_DEFINES ${CCACHE_CONFIG} +string(REGEX MATCH ".*pch_defines.*" COTIRE_CCACHE_CONFIG_PCH_DEFINES + ${CCACHE_CONFIG} ) # Regex should be "sloppiness.*time_macros.*pch_defines.*" but due to bug fixed # in https://ccache.samba.org/releasenotes.html#_ccache_3_2_5 we have to leave -# out pch_defines if ccache version is older than 3.2.5. -# Ubuntu 16.04 comes with ccache 3.2.4 ... -if(NOT COTIRE_CCACHE_CONFIG_TIME_MACROS OR (CCACHE_VERSION_GREATER_EQUAL_3_2_5 AND NOT COTIRE_CCACHE_CONFIG_PCH_DEFINES)) - message(FATAL_ERROR "CCache configuration does not set sloppiness to pch_defines,time_macros. \ +# out pch_defines if ccache version is older than 3.2.5. Ubuntu 16.04 comes with +# ccache 3.2.4 ... +if(NOT COTIRE_CCACHE_CONFIG_TIME_MACROS + OR (CCACHE_VERSION_GREATER_EQUAL_3_2_5 AND NOT + COTIRE_CCACHE_CONFIG_PCH_DEFINES) +) + message( + FATAL_ERROR + "CCache configuration does not set sloppiness to pch_defines,time_macros. \ Current options are: '${CCACHE_CONFIG}'. \ - See https://docs.opengeosys.org/docs/devguide/advanced/using-ccache") + See https://docs.opengeosys.org/docs/devguide/advanced/using-ccache" + ) endif() diff --git a/scripts/cmake/CMakeSetup.cmake b/scripts/cmake/CMakeSetup.cmake index e84f88e1fc463e56b6a344245319443ac2529e7e..71d429607221cd6720ba570131738604a0327540 100644 --- a/scripts/cmake/CMakeSetup.cmake +++ b/scripts/cmake/CMakeSetup.cmake @@ -1,9 +1,12 @@ # Disallow in-source builds as the git project cluttered with generated files # probably confuses people. source/build* is still allowed! if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}") - message(FATAL_ERROR "In-source builds are not allowed!\n" - "Make sure to remove CMakeCache.txt and CMakeFiles/ " - "from the source directory!") + message( + FATAL_ERROR + "In-source builds are not allowed!\n" + "Make sure to remove CMakeCache.txt and CMakeFiles/ " + "from the source directory!" + ) endif() # Set additional CMake modules path @@ -13,17 +16,21 @@ CPMAddPackage( GIT_TAG cdc041689061fbb2df086b059fe71ac868cf626d DOWNLOAD_ONLY YES ) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} - "${PROJECT_SOURCE_DIR}/scripts/cmake" - "${PROJECT_SOURCE_DIR}/scripts/cmake/jedbrown" - "${PROJECT_SOURCE_DIR}/scripts/cmake/vector-of-bool" - "${cmake-modules_SOURCE_DIR}" +set(CMAKE_MODULE_PATH + ${CMAKE_MODULE_PATH} + "${PROJECT_SOURCE_DIR}/scripts/cmake" + "${PROJECT_SOURCE_DIR}/scripts/cmake/jedbrown" + "${PROJECT_SOURCE_DIR}/scripts/cmake/vector-of-bool" + "${cmake-modules_SOURCE_DIR}" ) -list(APPEND CMAKE_PREFIX_PATH - $ENV{HOMEBREW_ROOT} # Homebrew package manager on Mac OS - $ENV{CMAKE_LIBRARY_SEARCH_PATH} # Environment variable, Windows - ${CMAKE_LIBRARY_SEARCH_PATH}) # CMake option, Windows +list( + APPEND + CMAKE_PREFIX_PATH + $ENV{HOMEBREW_ROOT} # Homebrew package manager on Mac OS + $ENV{CMAKE_LIBRARY_SEARCH_PATH} # Environment variable, Windows + ${CMAKE_LIBRARY_SEARCH_PATH} +) # CMake option, Windows # Load additional modules include(GNUInstallDirs) @@ -38,11 +45,14 @@ if(NOT PROJECT_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) endif() if((NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - OR (NOT CMAKE_BUILD_TYPE AND MSVC AND OGS_USE_CONAN)) + OR (NOT CMAKE_BUILD_TYPE AND MSVC AND OGS_USE_CONAN) +) message(STATUS "Setting build type to 'Debug' as none was specified.") set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Release" "MinSizeRel" "RelWithDebInfo") + set_property( + CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" + "RelWithDebInfo" + ) endif() # Get the hostname diff --git a/scripts/cmake/CheckHeaderCompilation.cmake b/scripts/cmake/CheckHeaderCompilation.cmake index b02df131ac3b57734aaff0c3a839beb7f3637c11..bcaa48a3998794757cc9dc9452d4b7ce6181a205 100644 --- a/scripts/cmake/CheckHeaderCompilation.cmake +++ b/scripts/cmake/CheckHeaderCompilation.cmake @@ -2,12 +2,15 @@ get_directory_property(INCLUDE_DIRS INCLUDE_DIRECTORIES) set(CMAKE_REQUIRED_FLAGS "-c") -add_custom_target(check-header +add_custom_target( + check-header COMMAND ${CMAKE_COMMAND} -E remove -f CMakeFiles/CMakeError.log COMMAND ${CMAKE_COMMAND} . -DOGS_CHECK_HEADER_COMPILATION=ON COMMAND ${CMAKE_COMMAND} . -DOGS_CHECK_HEADER_COMPILATION=OFF || true - COMMAND if [ -f CMakeFiles/CMakeError.log ]\; then cat CMakeFiles/CMakeError.log\; return 1\; else return 0\; fi\; - WORKING_DIRECTOY ${PROJECT_BINARY_DIR} + COMMAND + if [ -f CMakeFiles/CMakeError.log ]\; then cat + CMakeFiles/CMakeError.log\; return 1\; else return 0\; fi\; + WORKING_DIRECTOY ${PROJECT_BINARY_DIR} COMMENT "Checking header files" USES_TERMINAL ) @@ -56,10 +59,9 @@ function(_check_header_compilation target) set(CMAKE_REQUIRED_INCLUDES ${INCLUDE_DIRS} ${SOURCE_DIR}) # HACK, maybe add Gui Widgets Xml XmlPatterns as well if(OGS_BUILD_GUI) - set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} - ${Qt5Core_INCLUDE_DIRS} - ${Qt5Gui_INCLUDE_DIRS} - ${Qt5Widgets_INCLUDE_DIRS} + set(CMAKE_REQUIRED_INCLUDES + ${CMAKE_REQUIRED_INCLUDES} ${Qt5Core_INCLUDE_DIRS} + ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ) endif() set(CMAKE_REQUIRED_DEFINITIONS ${DEFS_CLEANED}) @@ -135,6 +137,9 @@ function(check_header_compilation) endif() if(_HEADER_COMPILE_ERROR) - message(FATAL_ERROR "... header compilation check failed, see CMakeFiles/CMakeError.log for details!") + message( + FATAL_ERROR + "... header compilation check failed, see CMakeFiles/CMakeError.log for details!" + ) endif() endfunction() diff --git a/scripts/cmake/ClangSanitizer.cmake b/scripts/cmake/ClangSanitizer.cmake index 1ac0b05182e8353c54c0e15a8611ca561196ee7f..e7128e752ae209e36d1551548048b8b99de02256 100644 --- a/scripts/cmake/ClangSanitizer.cmake +++ b/scripts/cmake/ClangSanitizer.cmake @@ -3,7 +3,9 @@ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.6") endif() option(OGS_ADDRESS_SANITIZER OFF "Use Clangs AddressSanitizer") -option(OGS_UNDEFINED_BEHAVIOR_SANITIZER OFF "Use Clangs UndefinedBehaviorSanitizer") +option(OGS_UNDEFINED_BEHAVIOR_SANITIZER OFF + "Use Clangs UndefinedBehaviorSanitizer" +) if(OGS_ADDRESS_SANITIZER) set(SANITIZE_FLAG_VALUE "address") @@ -11,7 +13,9 @@ if(OGS_ADDRESS_SANITIZER) endif() if(OGS_UNDEFINED_BEHAVIOR_SANITIZER) - set(SANITIZE_FLAG_VALUE "${SANITIZE_FLAG_VALUE},undefined,integer;-fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/scripts/test/clang_sanitizer_blacklist.txt") + set(SANITIZE_FLAG_VALUE + "${SANITIZE_FLAG_VALUE},undefined,integer;-fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/scripts/test/clang_sanitizer_blacklist.txt" + ) endif() if(DEFINED SANITIZE_FLAG_VALUE) diff --git a/scripts/cmake/CompilerSetup.cmake b/scripts/cmake/CompilerSetup.cmake index b9ded4b27f5839749287b013e1e3a27400ddbdd8..98c4f85f8f1592ce0ab8c116c4d1212824a65a00 100644 --- a/scripts/cmake/CompilerSetup.cmake +++ b/scripts/cmake/CompilerSetup.cmake @@ -3,7 +3,9 @@ set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -if(${CMAKE_CXX_COMPILER} MATCHES "clcache" AND CMAKE_BUILD_TYPE STREQUAL "Debug") +if(${CMAKE_CXX_COMPILER} MATCHES "clcache" AND CMAKE_BUILD_TYPE STREQUAL + "Debug" +) message(WARNING "clcache does not cache in Debug config!") endif() @@ -21,7 +23,7 @@ elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC") set(COMPILER_IS_MSVC TRUE CACHE BOOL "") endif() # CMAKE_CXX_COMPILER_ID -### GNU-like compiler +# GNU-like compiler if(COMPILER_IS_GCC OR COMPILER_IS_CLANG OR COMPILER_IS_INTEL) if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") message(STATUS "Set release compiler flags") @@ -29,39 +31,36 @@ if(COMPILER_IS_GCC OR COMPILER_IS_CLANG OR COMPILER_IS_INTEL) elseif(NOT STL_NO_DEBUG) # Enable assertions in STL in debug mode. add_compile_options( - -D_GLIBCXX_DEBUG - -D_GLIBCXX_DEBUG_ASSERT - -D_GLIBCXX_DEBUG_PEDASSERT + -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_ASSERT -D_GLIBCXX_DEBUG_PEDASSERT -D_GLIBCXX_DEBUG_VERIFY ) endif() # Coloring output - option (FORCE_COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." ON) - if (${FORCE_COLORED_OUTPUT}) - if (COMPILER_IS_GCC) - add_compile_options (-fdiagnostics-color=always) - elseif (COMPILER_IS_CLANG) - add_compile_options (-fcolor-diagnostics) - endif () + option(FORCE_COLORED_OUTPUT + "Always produce ANSI-colored output (GNU/Clang only)." ON + ) + if(${FORCE_COLORED_OUTPUT}) + if(COMPILER_IS_GCC) + add_compile_options(-fdiagnostics-color=always) + elseif(COMPILER_IS_CLANG) + add_compile_options(-fcolor-diagnostics) + endif() endif() # Profiling if(OGS_PROFILE) if(NOT CMAKE_BUILD_TYPE STREQUAL "Release") - message(STATUS "When using profiling you should set CMAKE_BUILD_TYPE \ - to Release.") + message( + STATUS "When using profiling you should set CMAKE_BUILD_TYPE \ + to Release." + ) endif() - set(PROFILE_FLAGS - -pg - -fno-omit-frame-pointer - -O2 - -DNDEBUG - ) + set(PROFILE_FLAGS -pg -fno-omit-frame-pointer -O2 -DNDEBUG) # clang compiler does not know the following flags if(NOT COMPILER_IS_CLANG) - set(PROFILE_FLAGS ${PROFILE_FLAGS} - -fno-inline-functions-called-once + set(PROFILE_FLAGS + ${PROFILE_FLAGS} -fno-inline-functions-called-once -fno-optimize-sibling-calls ) endif() @@ -78,9 +77,13 @@ if(COMPILER_IS_GCC OR COMPILER_IS_CLANG OR COMPILER_IS_INTEL) if(COMPILER_IS_GCC) if(NOT "${HOSTNAME}" MATCHES "frontend.*") # TODO: remove later - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${ogs.minimum_version.gcc}) - message(FATAL_ERROR "Aborting: GCC ${ogs.minimum_version.gcc} is \ - required! Found version ${CMAKE_CXX_COMPILER_VERSION}.") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS + ${ogs.minimum_version.gcc} + ) + message( + FATAL_ERROR "Aborting: GCC ${ogs.minimum_version.gcc} is \ + required! Found version ${CMAKE_CXX_COMPILER_VERSION}." + ) endif() endif() add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fext-numeric-literals>) @@ -88,38 +91,57 @@ if(COMPILER_IS_GCC OR COMPILER_IS_CLANG OR COMPILER_IS_INTEL) endif() if(COMPILER_IS_CLANG) - # see https://en.wikipedia.org/wiki/Xcode#Xcode_7.0_-_12.x_(since_Free_On-Device_Development) + # see + # https://en.wikipedia.org/wiki/Xcode#Xcode_7.0_-_12.x_(since_Free_On-Device_Development) if(COMPILER_IS_APPLE_CLANG) - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${ogs.minimum_version.apple_clang}) - message(FATAL_ERROR "Aborting: Apple Clang ${ogs.minimum_version.apple_clang} \ - is required! Found version ${CMAKE_CXX_COMPILER_VERSION}. Update Xcode!") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS + ${ogs.minimum_version.apple_clang} + ) + message( + FATAL_ERROR + "Aborting: Apple Clang ${ogs.minimum_version.apple_clang} \ + is required! Found version ${CMAKE_CXX_COMPILER_VERSION}. Update Xcode!" + ) endif() else() - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${ogs.minimum_version.clang}) - message(FATAL_ERROR "Aborting: Clang ${ogs.minimum_version.clang} \ - is required! Found version ${CMAKE_CXX_COMPILER_VERSION}") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS + ${ogs.minimum_version.clang} + ) + message( + FATAL_ERROR "Aborting: Clang ${ogs.minimum_version.clang} \ + is required! Found version ${CMAKE_CXX_COMPILER_VERSION}" + ) endif() endif() include(ClangSanitizer) endif() if(COMPILER_IS_INTEL) - # Use highest instruction set available on the compilation host processor + # Use highest instruction set available on the compilation host + # processor add_compile_options(-xHOST) endif() endif() if(MSVC) - if(${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS ${ogs.minimum_version.msvc.compiler}) - message(FATAL_ERROR "Aborting: Visual Studio compiler \ + if(${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS + ${ogs.minimum_version.msvc.compiler} + ) + message( + FATAL_ERROR + "Aborting: Visual Studio compiler \ ${ogs.minimum_version.msvc.compiler} is required. Found version \ - ${CMAKE_CXX_COMPILER_VERSION}.") + ${CMAKE_CXX_COMPILER_VERSION}." + ) endif() if(${MSVC_TOOLSET_VERSION} LESS ${ogs.minimum_version.msvc.toolset}) - message(FATAL_ERROR "Aborting: Visual Studio ${ogs.minimum_version.msvc.year} \ + message( + FATAL_ERROR + "Aborting: Visual Studio ${ogs.minimum_version.msvc.year} \ is required! Found Visual Studio with toolset version \ ${MSVC_TOOLSET_VERSION}. See the following link for version info: \ - https://cmake.org/cmake/help/v3.16/variable/MSVC_TOOLSET_VERSION.html") + https://cmake.org/cmake/help/v3.16/variable/MSVC_TOOLSET_VERSION.html" + ) endif() if(OGS_CPU_ARCHITECTURE STREQUAL "native") set(CPU_FLAGS /favor:blend) @@ -131,19 +153,22 @@ if(MSVC) endif() add_compile_options( /MP # multi-core compilation - /wd4290 /wd4267 /wd4996 + /wd4290 + /wd4267 + /wd4996 /bigobj -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_XNONSTDC_NO_WARNINGS - -D__restrict__=__restrict # this fixes #5 - # This fixes compile errors with - # std::numeric_limits<T>::min() / max() + -D__restrict__=__restrict # this fixes #5 + # This fixes compile errors with std::numeric_limits<T>::min() / max() -DNOMINMAX -DBOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE # when VC is newer than Boost # Disables all warnings coming from include with <>-syntax # https://devblogs.microsoft.com/cppblog/broken-warnings-theory/ - /experimental:external /external:anglebrackets /external:W0 + /experimental:external + /external:anglebrackets + /external:W0 ) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ignore:4099") endif() diff --git a/scripts/cmake/Coverage.cmake b/scripts/cmake/Coverage.cmake index f09fad76632930f434429337a5b72e2295faa6e7..e68763b14a9c5a3b3369473f078d661e337626d4 100644 --- a/scripts/cmake/Coverage.cmake +++ b/scripts/cmake/Coverage.cmake @@ -8,12 +8,15 @@ append_coverage_compiler_flags() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og") if(NOT FASTCOV_PATH) - execute_process(COMMAND ${_CMD_COMMAND} poetry add fastcov==1.10 + execute_process( + COMMAND ${_CMD_COMMAND} poetry add fastcov==1.10 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) - find_program(FASTCOV_PATH NAMES fastcov - HINTS ${LOCAL_VIRTUALENV_BIN_DIRS} - REQUIRED NO_DEFAULT_PATH + find_program( + FASTCOV_PATH + NAMES fastcov + HINTS ${LOCAL_VIRTUALENV_BIN_DIRS} REQUIRED + NO_DEFAULT_PATH ) endif() @@ -23,27 +26,42 @@ endif() # TODO: segfault in MeshLibMappedPropertyVector.Double|Int setup_target_for_coverage_fastcov( - NAME testrunner_coverage - EXECUTABLE $<TARGET_FILE:testrunner> -l warn --gtest_filter=-MeshLibMappedPropertyVector.*:GeoLib.SearchNearestPointsInDenseGrid - DEPENDENCIES testrunner - FASTCOV_ARGS --include ${PROJECT_SOURCE_DIR} + NAME + testrunner_coverage + EXECUTABLE + $<TARGET_FILE:testrunner> + -l + warn + --gtest_filter=-MeshLibMappedPropertyVector.*:GeoLib.SearchNearestPointsInDenseGrid + DEPENDENCIES + testrunner + FASTCOV_ARGS + --include + ${PROJECT_SOURCE_DIR} ${COVERAGE_ADDITIONAL_ARGS} EXCLUDE - Applications/CLI/ - ProcessLib/ - Tests/ + Applications/CLI/ + ProcessLib/ + Tests/ ) # TODO: segfault in Vtu2Grid setup_target_for_coverage_fastcov( - NAME ctest_coverage - EXECUTABLE ctest -E "Vtu2Grid" - DEPENDENCIES all - FASTCOV_ARGS --include ${PROJECT_SOURCE_DIR} + NAME + ctest_coverage + EXECUTABLE + ctest + -E + "Vtu2Grid" + DEPENDENCIES + all + FASTCOV_ARGS + --include + ${PROJECT_SOURCE_DIR} ${COVERAGE_ADDITIONAL_ARGS} EXCLUDE - Applications/CLI/ - Tests/ + Applications/CLI/ + Tests/ ) if(UNIX) diff --git a/scripts/cmake/CppCheck.cmake b/scripts/cmake/CppCheck.cmake index 37207ddc29361b61be178428690e41ac26d27484..0231abc0b3ab24ea0c6b72adf5588d83c62a412a 100644 --- a/scripts/cmake/CppCheck.cmake +++ b/scripts/cmake/CppCheck.cmake @@ -8,26 +8,24 @@ if(DEFINED ENV{CMAKE_BUILD_PARALLEL_LEVEL}) elseif(DEFINED CMAKE_BUILD_PARALLEL_LEVEL) set(CPPCHECK_PARALLEL ${CMAKE_BUILD_PARALLEL_LEVEL}) endif() -configure_file(${PROJECT_SOURCE_DIR}/scripts/test/cppcheck.in.sh ${PROJECT_BINARY_DIR}/cppcheck.sh) +configure_file( + ${PROJECT_SOURCE_DIR}/scripts/test/cppcheck.in.sh + ${PROJECT_BINARY_DIR}/cppcheck.sh +) if(DEFINED ENV{NUM_THREADS}) set(CPPCHECK_THREADS -j $ENV{NUM_THREADS}) endif() -add_custom_target(cppcheck - COMMAND ${CPPCHECK_TOOL_PATH} - --project=${PROJECT_BINARY_DIR}/compile_commands.json - --language=c++ - --std=c++20 - --enable=all - --inconclusive - ${CPPCHECK_THREADS} - -i ${PROJECT_BINARY_DIR}/CMakeFiles - -i ${PROJECT_BINARY_DIR}/_deps - -i ${PROJECT_SOURCE_DIR}/ThirdParty - -i ${PROJECT_SOURCE_DIR}/Applications/DataExplorer - -i ${PROJECT_SOURCE_DIR}/Tests - --xml --xml-version=2 - --output-file=${PROJECT_BINARY_DIR}/cppcheck.log - ${PROJECT_SOURCE_DIR} +add_custom_target( + cppcheck + COMMAND + ${CPPCHECK_TOOL_PATH} + --project=${PROJECT_BINARY_DIR}/compile_commands.json --language=c++ + --std=c++20 --enable=all --inconclusive ${CPPCHECK_THREADS} -i + ${PROJECT_BINARY_DIR}/CMakeFiles -i ${PROJECT_BINARY_DIR}/_deps -i + ${PROJECT_SOURCE_DIR}/ThirdParty -i + ${PROJECT_SOURCE_DIR}/Applications/DataExplorer -i + ${PROJECT_SOURCE_DIR}/Tests --xml --xml-version=2 + --output-file=${PROJECT_BINARY_DIR}/cppcheck.log ${PROJECT_SOURCE_DIR} ) diff --git a/scripts/cmake/Dependencies.cmake b/scripts/cmake/Dependencies.cmake index e4a64b8a09aa3f67fc47020783def34a3ebce341..fc99fd756e0af16a1d0126399731bdc46b51a267 100644 --- a/scripts/cmake/Dependencies.cmake +++ b/scripts/cmake/Dependencies.cmake @@ -3,9 +3,7 @@ if(OGS_BUILD_TESTING) NAME googletest GITHUB_REPOSITORY google/googletest GIT_TAG 389cb68b87193358358ae87cc56d257fd0d80189 - OPTIONS - "INSTALL_GTEST OFF" - "gtest_force_shared_crt ON" + OPTIONS "INSTALL_GTEST OFF" "gtest_force_shared_crt ON" EXCLUDE_FROM_ALL YES ) @@ -17,7 +15,9 @@ if(OGS_BUILD_TESTING) ) if(autocheck_ADDED) add_library(autocheck INTERFACE IMPORTED) - target_include_directories(autocheck SYSTEM INTERFACE ${autocheck_SOURCE_DIR}/include) + target_include_directories( + autocheck SYSTEM INTERFACE ${autocheck_SOURCE_DIR}/include + ) endif() endif() @@ -32,11 +32,7 @@ if(exprtk_ADDED) target_include_directories(exprtk SYSTEM INTERFACE ${exprtk_SOURCE_DIR}) endif() -CPMAddPackage( - NAME spdlog - GITHUB_REPOSITORY gabime/spdlog - VERSION 1.8.2 -) +CPMAddPackage(NAME spdlog GITHUB_REPOSITORY gabime/spdlog VERSION 1.8.2) CPMAddPackage( NAME tclap @@ -46,12 +42,13 @@ CPMAddPackage( ) if(tclap_ADDED) add_library(tclap INTERFACE IMPORTED) - target_include_directories(tclap SYSTEM INTERFACE ${tclap_SOURCE_DIR}/include) + target_include_directories( + tclap SYSTEM INTERFACE ${tclap_SOURCE_DIR}/include + ) endif() CPMAddPackage( - NAME tetgen - GITHUB_REPOSITORY ufz/tetgen + NAME tetgen GITHUB_REPOSITORY ufz/tetgen GIT_TAG 603ba181ebfaed38eec88532720e282606009b73 ) if(tetgen_ADDED) @@ -64,18 +61,18 @@ if(OGS_USE_PYTHON) NAME pybind11 GITHUB_REPOSITORY pybind/pybind11 GIT_TAG f1abf5d9159b805674197f6bc443592e631c9130 - # pybind11 uses old CMake find functionality, pass variables to use - # the same Python installation. - OPTIONS - "PYTHON_INCLUDE_DIR ${Python3_INCLUDE_DIRS}" - "PYTHON_LIBRARIES ${Python3_LIBRARIES}" - "PYTHON_EXECUTABLE ${Python3_EXECUTABLE}" - "PYBIND11_PYTHON_VERSION ${Python3_VERSION}" + # pybind11 uses old CMake find functionality, pass variables to use the + # same Python installation. + OPTIONS "PYTHON_INCLUDE_DIR ${Python3_INCLUDE_DIRS}" + "PYTHON_LIBRARIES ${Python3_LIBRARIES}" + "PYTHON_EXECUTABLE ${Python3_EXECUTABLE}" + "PYBIND11_PYTHON_VERSION ${Python3_VERSION}" ) endif() -if (OGS_BUILD_PROCESS_ComponentTransport - OR OGS_BUILD_PROCESS_RichardsComponentTransport) +if(OGS_BUILD_PROCESS_ComponentTransport + OR OGS_BUILD_PROCESS_RichardsComponentTransport +) CPMAddPackage( NAME iphreeqc GITHUB_REPOSITORY ufz/iphreeqc @@ -96,7 +93,9 @@ CPMFindPackage( ) if(Eigen3_ADDED) add_library(Eigen3::Eigen INTERFACE IMPORTED) - target_include_directories(Eigen3::Eigen SYSTEM INTERFACE ${Eigen3_SOURCE_DIR}) + target_include_directories( + Eigen3::Eigen SYSTEM INTERFACE ${Eigen3_SOURCE_DIR} + ) endif() if(OGS_USE_MFRONT) @@ -104,9 +103,7 @@ if(OGS_USE_MFRONT) NAME MGIS GITHUB_REPOSITORY ufz/MFrontGenericInterfaceSupport GIT_TAG 04e7d1bfad83fdc36a5fedb9c3d2e3b0d4b7fccf - OPTIONS - "enable-doxygen-doc OFF" - "enable-fortran-bindings OFF" + OPTIONS "enable-doxygen-doc OFF" "enable-fortran-bindings OFF" EXCLUDE_FROM_ALL YES ) if(MGIS_ADDED) @@ -148,16 +145,15 @@ if(OGS_USE_XDMF) GITHUB_REPOSITORY HDFGroup/hdf5 GIT_TAG hdf5-${HDF5_TAG} VERSION ${ogs.minimum_version.hdf5} - OPTIONS - "HDF5_EXTERNALLY_CONFIGURED 1" - "HDF5_GENERATE_HEADERS OFF" - "HDF5_BUILD_TOOLS OFF" - "HDF5_BUILD_EXAMPLES OFF" - "HDF5_BUILD_HL_LIB OFF" - "HDF5_BUILD_FORTRAN OFF" - "HDF5_BUILD_CPP_LIB OFF" - "HDF5_BUILD_JAVA OFF" - ${_hdf5_options} + OPTIONS "HDF5_EXTERNALLY_CONFIGURED 1" + "HDF5_GENERATE_HEADERS OFF" + "HDF5_BUILD_TOOLS OFF" + "HDF5_BUILD_EXAMPLES OFF" + "HDF5_BUILD_HL_LIB OFF" + "HDF5_BUILD_FORTRAN OFF" + "HDF5_BUILD_CPP_LIB OFF" + "HDF5_BUILD_JAVA OFF" + ${_hdf5_options} EXCLUDE_FROM_ALL YES ) if(HDF5_ADDED) @@ -173,14 +169,13 @@ if(OGS_USE_XDMF) GITHUB_REPOSITORY GNOME/libxml2 VERSION ${ogs.minimum_version.libxml2} GIT_TAG f93ca3e140a371b26366f747a408588c631e0fd1 - OPTIONS - "LIBXML2_WITH_TESTS OFF" - "LIBXML2_WITH_PROGRAMS OFF" - "LIBXML2_WITH_ICONV OFF" - "LIBXML2_WITH_ICU OFF" - "LIBXML2_WITH_LZMA OFF" - "LIBXML2_WITH_PYTHON OFF" - "LIBXML2_WITH_ZLIB OFF" + OPTIONS "LIBXML2_WITH_TESTS OFF" + "LIBXML2_WITH_PROGRAMS OFF" + "LIBXML2_WITH_ICONV OFF" + "LIBXML2_WITH_ICU OFF" + "LIBXML2_WITH_LZMA OFF" + "LIBXML2_WITH_PYTHON OFF" + "LIBXML2_WITH_ZLIB OFF" EXCLUDE_FROM_ALL YES ) if(LibXml2_ADDED) @@ -196,28 +191,32 @@ if(OGS_USE_XDMF) OPTIONS "XDMF_LIBNAME OgsXdmf" ) if(xdmf_ADDED) - target_include_directories(OgsXdmf PUBLIC - ${xdmf_SOURCE_DIR} - ${xdmf_BINARY_DIR} + target_include_directories( + OgsXdmf PUBLIC ${xdmf_SOURCE_DIR} ${xdmf_BINARY_DIR} ) target_link_libraries(OgsXdmf Boost::boost ZLIB::ZLIB) - target_include_directories(OgsXdmfCore - PUBLIC - ${xdmf_SOURCE_DIR}/core - ${xdmf_BINARY_DIR}/core - PRIVATE - ${xdmf_SOURCE_DIR}/CMake/VersionSuite + target_include_directories( + OgsXdmfCore PUBLIC ${xdmf_SOURCE_DIR}/core ${xdmf_BINARY_DIR}/core + PRIVATE ${xdmf_SOURCE_DIR}/CMake/VersionSuite + ) + target_link_libraries( + OgsXdmfCore PUBLIC Boost::boost LibXml2::LibXml2 ${HDF5_LIBRARIES} ) - target_link_libraries(OgsXdmfCore PUBLIC Boost::boost LibXml2::LibXml2 ${HDF5_LIBRARIES}) - set_target_properties(OgsXdmf OgsXdmfCore PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} - LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} - ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} + set_target_properties( + OgsXdmf OgsXdmfCore + PROPERTIES RUNTIME_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} + LIBRARY_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} + ARCHIVE_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} ) if(BUILD_SHARED_LIBS) - install(TARGETS OgsXdmf OgsXdmfCore LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS OgsXdmf OgsXdmfCore + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) endif() list(APPEND DISABLE_WARNINGS_TARGETS OgsXdmf OgsXdmfCore) endif() @@ -225,12 +224,13 @@ endif() if(OGS_BUILD_SWMM) CPMAddPackage( - NAME SWMMInterface - GITHUB_REPOSITORY ufz/SwmmInterface + NAME SWMMInterface GITHUB_REPOSITORY ufz/SwmmInterface GIT_TAG 141e05ae1f419918799d7bf9178ebcd97feb1ed3 ) if(SWMMInterface_ADDED) - target_include_directories(SwmmInterface SYSTEM PUBLIC ${SWMMInterface_SOURCE_DIR}) + target_include_directories( + SwmmInterface SYSTEM PUBLIC ${SWMMInterface_SOURCE_DIR} + ) list(APPEND DISABLE_WARNINGS_TARGETS SWMM SwmmInterface) endif() endif() @@ -238,13 +238,17 @@ endif() CPMAddPackage( NAME nlohmann_json VERSION 3.6.1 - # the git repo is incredibly large, so we download the archived include directory + # the git repo is incredibly large, so we download the archived include + # directory URL https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip - URL_HASH SHA256=69cc88207ce91347ea530b227ff0776db82dcb8de6704e1a3d74f4841bc651cf + URL_HASH + SHA256=69cc88207ce91347ea530b227ff0776db82dcb8de6704e1a3d74f4841bc651cf ) if(nlohmann_json_ADDED) add_library(nlohmann_json INTERFACE IMPORTED) - target_include_directories(nlohmann_json INTERFACE ${nlohmann_json_SOURCE_DIR}) + target_include_directories( + nlohmann_json INTERFACE ${nlohmann_json_SOURCE_DIR} + ) endif() if(OGS_BUILD_GUI) @@ -274,7 +278,9 @@ if(OGS_BUILD_GUI) VERSION 1.5.0 EXCLUDE_FROM_ALL YES ) - target_include_directories(shp INTERFACE $<BUILD_INTERFACE:${Shapelib_SOURCE_DIR}>) + target_include_directories( + shp INTERFACE $<BUILD_INTERFACE:${Shapelib_SOURCE_DIR}> + ) endif() endif() @@ -289,25 +295,33 @@ if(OGS_USE_CVODE) ) if(CVODE_ADDED) add_library(CVODE::CVODE INTERFACE IMPORTED) - target_include_directories(CVODE::CVODE INTERFACE - ${CVODE_SOURCE_DIR}/include - ${CVODE_BINARY_DIR}/include + target_include_directories( + CVODE::CVODE INTERFACE ${CVODE_SOURCE_DIR}/include + ${CVODE_BINARY_DIR}/include ) - target_link_libraries(CVODE::CVODE INTERFACE - sundials_cvode_static - sundials_nvecserial_static + target_link_libraries( + CVODE::CVODE INTERFACE sundials_cvode_static + sundials_nvecserial_static ) endif() endif() -### VTK ### +# VTK ### set(VTK_COMPONENTS vtkIOXML vtkIOLegacy) if(OGS_BUILD_GUI) - list(APPEND VTK_COMPONENTS - vtkIOExport vtkImagingCore - vtkInteractionStyle vtkInteractionWidgets - vtkGUISupportQt vtkRenderingOpenGL2 vtkRenderingContextOpenGL2 - vtkFiltersTexture vtkRenderingAnnotation vtkRenderingCore + list( + APPEND + VTK_COMPONENTS + vtkIOExport + vtkImagingCore + vtkInteractionStyle + vtkInteractionWidgets + vtkGUISupportQt + vtkRenderingOpenGL2 + vtkRenderingContextOpenGL2 + vtkFiltersTexture + vtkRenderingAnnotation + vtkRenderingCore ) if(OGS_BUILD_UTILS) list(APPEND VTK_COMPONENTS vtkFiltersParallel) @@ -316,16 +330,15 @@ endif() if(OGS_USE_MPI) list(APPEND VTK_COMPONENTS vtkIOParallelXML vtkParallelMPI) endif() -# TODO: -# if(OGS_INSITU) -# find_package(ParaView REQUIRED) -# end() +# TODO: if(OGS_INSITU) find_package(ParaView REQUIRED) end() find_package(VTK ${ogs.minimum_version.vtk} QUIET COMPONENTS ${VTK_COMPONENTS}) if(VTK_FOUND) include(${VTK_USE_FILE}) else() - list(APPEND VTK_OPTIONS + list( + APPEND + VTK_OPTIONS "BUILD_SHARED_LIBS OFF" "BUILD_TESTING OFF" "VTK_BUILD_EXAMPLES OFF" @@ -344,17 +357,15 @@ else() GITHUB_REPOSITORY kitware/vtk VERSION ${ogs.minimum_version.vtk} OPTIONS ${VTK_OPTIONS} - EXCLUDE_FROM_ALL YES - GIT_SUBMODULES "" # Disable submodules + EXCLUDE_FROM_ALL YES GIT_SUBMODULES "" # Disable submodules ) include(${VTK_BINARY_DIR}/VTKConfig.cmake) endif() -### end VTK ### +# end VTK ### if(OGS_BUILD_TESTING) CPMAddPackage( - NAME vtkdiff - GITHUB_REPOSITORY ufz/vtkdiff + NAME vtkdiff GITHUB_REPOSITORY ufz/vtkdiff GIT_TAG 49403cee266bb8e80405a02d677dbb5f71afc61a ) if(vtkdiff_ADDED) @@ -367,13 +378,17 @@ endif() # Disable warnings 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>) + 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() # Hack: Disable tests from dependencies -configure_file(${PROJECT_SOURCE_DIR}/scripts/cmake/test/CTestCustom.in.cmake +configure_file( + ${PROJECT_SOURCE_DIR}/scripts/cmake/test/CTestCustom.in.cmake ${PROJECT_BINARY_DIR}/CTestCustom.cmake @ONLY ) @@ -385,11 +400,11 @@ if(CLANG_FORMAT_PROGRAM OR CMAKE_FORMAT_PROGRAM) set(_skip_cmake "FORMAT_SKIP_CMAKE YES") endif() CPMAddPackage( - NAME Format.cmake - VERSION 1.7.0 - GITHUB_REPOSITORY TheLartians/Format.cmake - OPTIONS - ${_skip_cmake} - "CMAKE_FORMAT_EXCLUDE scripts/cmake/CPM.cmake|.*/Tests.cmake|scripts/cmake/jedbrown/.*|scripts/cmake/conan/conan.cmake|scripts/cmake/vector-of-bool/.*" + NAME Format.cmake + VERSION 1.7.0 + GITHUB_REPOSITORY TheLartians/Format.cmake + OPTIONS + ${_skip_cmake} + "CMAKE_FORMAT_EXCLUDE scripts/cmake/CPM.cmake|.*/Tests.cmake|scripts/cmake/jedbrown/.*|scripts/cmake/conan/conan.cmake|scripts/cmake/vector-of-bool/.*" ) endif() diff --git a/scripts/cmake/DocumentationProjectFile.cmake b/scripts/cmake/DocumentationProjectFile.cmake index 787074a7d69a4309ab66dba5fc9958d702eac1f6..7b9fa5f1b75c7fb3bdada75f52b57aaad67d275b 100644 --- a/scripts/cmake/DocumentationProjectFile.cmake +++ b/scripts/cmake/DocumentationProjectFile.cmake @@ -5,47 +5,52 @@ cmake_policy(SET CMP0009 NEW) # pages and the page title. function(documentationProjectFilePutIntoPlace dir) # cmake-lint: disable=R0912,R0915 - file(RELATIVE_PATH relative_path ${DOCUMENTATION_PROJECTFILE_INPUTDIR} ${dir}) + file(RELATIVE_PATH relative_path ${DOCUMENTATION_PROJECTFILE_INPUTDIR} + ${dir} + ) get_filename_component(dir_name ${relative_path} DIRECTORY) get_filename_component(otagname ${relative_path} NAME_WE) - if (otagname MATCHES ^[ic]_) - # if the file name starts with an underscore, then this files is - # the "table of contents of the current directory + if(otagname MATCHES ^[ic]_) + # if the file name starts with an underscore, then this files is the + # "table of contents of the current directory file(MAKE_DIRECTORY "${DOCUMENTATION_PROJECTFILE_BUILDDIR}/${dir_name}") set(postfix "# Child parameters, attributes and cases\n\n") - # gather other parameter files - # the loop below will effects a page hierarchy to be built - file(GLOB param_files ${DOCUMENTATION_PROJECTFILE_INPUTDIR}/${dir_name}/*) + # gather other parameter files the loop below will effects a page + # hierarchy to be built + file(GLOB param_files + ${DOCUMENTATION_PROJECTFILE_INPUTDIR}/${dir_name}/* + ) set(subpagelist "") foreach(pf ${param_files}) # ignore hidden files - if (pf MATCHES /[.][^/]+) + if(pf MATCHES /[.][^/]+) continue() endif() get_filename_component(rel_pf ${pf} NAME_WE) - # if the file name matches ^[ic]_, then this - # is the "table of contents" file already processed outside - # of this loop - if (NOT rel_pf MATCHES ^[ic]_) + # if the file name matches ^[ic]_, then this is the "table of + # contents" file already processed outside of this loop + if(NOT rel_pf MATCHES ^[ic]_) if(IS_DIRECTORY ${pf}) set(pf_tagname ${rel_pf}) else() - if (NOT "${rel_pf}" MATCHES ^._) + if(NOT "${rel_pf}" MATCHES ^._) message(SEND_ERROR "Path `${rel_pf}' has a wrong name." - " Full path is `${pf}'.") + " Full path is `${pf}'." + ) continue() endif() string(SUBSTRING "${rel_pf}" 2 -1 pf_tagname) endif() - if ("${dir_name}" STREQUAL "") # toplevel dir must be treated slightly different + # toplevel dir must be treated slightly different + if("${dir_name}" STREQUAL "") set(pf_tagpath "${pf_tagname}") else() set(pf_tagpath "${dir_name}/${pf_tagname}") @@ -53,22 +58,25 @@ function(documentationProjectFilePutIntoPlace dir) endif() message(" t.o.c. entry ${pf_tagpath}") - if (rel_pf MATCHES ^a_) + if(rel_pf MATCHES ^a_) set(pagenameprefix "ogs_file_attr__") else() set(pagenameprefix "ogs_file_param__") endif() list(FIND subpagelist "${pagenameprefix}${pf_tagpath}" idx) - if (NOT idx EQUAL -1) - message(SEND_ERROR "The subpagelist already contains" - " ${pagenameprefix}${pf_tagpath}. Maybe there are" - " duplicate documentation files.") + if(NOT idx EQUAL -1) + message( + SEND_ERROR + "The subpagelist already contains" + " ${pagenameprefix}${pf_tagpath}. Maybe there are" + " duplicate documentation files." + ) else() list(APPEND subpagelist "${pagenameprefix}${pf_tagpath}") endif() - if (NOT IS_DIRECTORY "${pf}") + if(NOT IS_DIRECTORY "${pf}") documentationProjectFilePutIntoPlace("${pf}") endif() endif() @@ -83,10 +91,10 @@ function(documentationProjectFilePutIntoPlace dir) endif() string(SUBSTRING ${otagname} 2 -1 tagname) - if (dir_name STREQUAL "") # toplevel dir must be treated slightly different + if(dir_name STREQUAL "") # toplevel dir must be treated slightly different set(tagpath "${tagname}") else() - if (otagname MATCHES ^[ic]_) # treat "table of contents" file special + if(otagname MATCHES ^[ic]_) # treat "table of contents" file special string(REPLACE "/" "__" tagpath "${dir_name}") else() string(REPLACE "/" "__" tagpath "${dir_name}/${tagname}") @@ -95,7 +103,7 @@ function(documentationProjectFilePutIntoPlace dir) message(" child param ${tagpath}") set(pagenameprefix "ogs_file_param__") - if (otagname MATCHES ^i_ AND dir_name STREQUAL "") + if(otagname MATCHES ^i_ AND dir_name STREQUAL "") set(pagetitle "OGS Input File Parameters") elseif(otagname MATCHES ^c_) set(pagetitle "[case] ${tagname}") @@ -105,34 +113,48 @@ function(documentationProjectFilePutIntoPlace dir) set(pagetitle "[attr] ${tagname}") set(pagenameprefix "ogs_file_attr__") else() - message(SEND_ERROR "Tag name ${otagname} does not match in any case." - " Maybe there is a file with a wrong name in the documentation" - " directory.") + message( + SEND_ERROR + "Tag name ${otagname} does not match in any case." + " Maybe there is a file with a wrong name in the documentation" + " directory." + ) endif() # read, augment, write file content file(READ ${dir} content) - set(content "/*! \\page ${pagenameprefix}${tagpath} ${pagetitle}\n${content}\n\n${postfix}\n") - if (NOT doc_use_external_tools) + set(content + "/*! \\page ${pagenameprefix}${tagpath} ${pagetitle}\n${content}\n\n${postfix}\n" + ) + if(NOT doc_use_external_tools) set(ending "\n*/\n") else() set(ending "") # external tools shall finish the file endif() - string(REGEX REPLACE .md$ .dox output_file "${DOCUMENTATION_PROJECTFILE_BUILDDIR}/${relative_path}") + string(REGEX + REPLACE .md$ .dox output_file + "${DOCUMENTATION_PROJECTFILE_BUILDDIR}/${relative_path}" + ) file(WRITE "${output_file}" "${content}${ending}") endfunction() -set(DOCUMENTATION_PROJECTFILE_BUILDDIR ${PROJECT_BINARY_DIR}/DocAux/dox/ProjectFile) -set(DOCUMENTATION_PROJECTFILE_INPUTDIR ${PROJECT_SOURCE_DIR}/Documentation/ProjectFile) +set(DOCUMENTATION_PROJECTFILE_BUILDDIR + ${PROJECT_BINARY_DIR}/DocAux/dox/ProjectFile +) +set(DOCUMENTATION_PROJECTFILE_INPUTDIR + ${PROJECT_SOURCE_DIR}/Documentation/ProjectFile +) # remove old output -if (IS_DIRECTORY ${DOCUMENTATION_PROJECTFILE_BUILDDIR}) +if(IS_DIRECTORY ${DOCUMENTATION_PROJECTFILE_BUILDDIR}) file(REMOVE_RECURSE ${DOCUMENTATION_PROJECTFILE_BUILDDIR}) endif() # traverse input file hierarchy file(GLOB_RECURSE input_paths FOLLOW_SYMLINKS - ${DOCUMENTATION_PROJECTFILE_INPUTDIR}/c_* ${DOCUMENTATION_PROJECTFILE_INPUTDIR}/i_*) + ${DOCUMENTATION_PROJECTFILE_INPUTDIR}/c_* + ${DOCUMENTATION_PROJECTFILE_INPUTDIR}/i_* +) foreach(path ${input_paths}) message("directory index file ${path}") diff --git a/scripts/cmake/DocumentationSetup.cmake b/scripts/cmake/DocumentationSetup.cmake index cc8eb16c325f6cdcd4b3667addabf6eee5592cc0..7d77078f229b3c0b36df3b41458c0e6fcbfc722f 100644 --- a/scripts/cmake/DocumentationSetup.cmake +++ b/scripts/cmake/DocumentationSetup.cmake @@ -6,16 +6,17 @@ endif() set(DOXYGEN_LATEX_MAKEINDEX_CMD "makeindex") set(DOXYGEN_EXCLUDE - ${PROJECT_SOURCE_DIR}/ThirdParty - ${PROJECT_SOURCE_DIR}/scripts - ${PROJECT_SOURCE_DIR}/Tests - ${PROJECT_SOURCE_DIR}/Documentation/ProjectFile - ${PROJECT_SOURCE_DIR}/web) + ${PROJECT_SOURCE_DIR}/ThirdParty ${PROJECT_SOURCE_DIR}/scripts + ${PROJECT_SOURCE_DIR}/Tests ${PROJECT_SOURCE_DIR}/Documentation/ProjectFile + ${PROJECT_SOURCE_DIR}/web +) set(DOXYGEN_FILE_PATTERNS *.h *.cpp *.tpp *.dox) set(DOXYGEN_PROJECT_NAME "OGS") set(DOXYGEN_PROJECT_NUMBER "${OGS_GIT_BRANCH}") set(DOXYGEN_PROJECT_VERSION ${GIT_SHA1_SHORT}) -set(DOXYGEN_PROJECT_LOGO ${PROJECT_SOURCE_DIR}/Documentation/OpenGeoSys-Logo.png) +set(DOXYGEN_PROJECT_LOGO + ${PROJECT_SOURCE_DIR}/Documentation/OpenGeoSys-Logo.png +) set(DOXYGEN_HTML_OUTPUT ${PROJECT_BINARY_DIR}/docs) if("${OGS_GIT_BRANCH}" MATCHES "^v[0-9]\\.[0-9]\\.[0-9]") set(DOXYGEN_HTML_COLORSTYLE_HUE 190) @@ -40,7 +41,9 @@ set(DOXYGEN_REFERENCED_BY_RELATION YES) set(DOXYGEN_REFERENCES_RELATION YES) set(DOXYGEN_GENERATE_TREEVIEW YES) set(DOXYGEN_USE_MATHJAX YES) -set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/) +set(DOXYGEN_MATHJAX_RELPATH + https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/ +) set(DOXYGEN_GENERATE_LATEX NO) set(DOXYGEN_EXTRA_PACKAGES amsmath amsfonts) set(DOXYGEN_PREDEFINED @@ -68,40 +71,47 @@ set(DOXYGEN_ALIASES "ogs_file_special = \\xrefitem ogs_file_param \\\"Input File Parameter\\\" \\\"List of all Input File Parameters\\\" special OGS input file parameter" "ogs_file_param_special{1} = \\xrefitem ogs_file_param \\\"Input File Parameter\\\" \\\"List of all Input File Parameters\\\" \\ref ogs_file_param__\\1 \\\"\\1\\\"" "ogs_file_attr_special{1} = \\xrefitem ogs_file_param \\\"Input File Parameter\\\" \\\"List of all Input File Parameters\\\" \\ref ogs_file_attr__\\1 \\\"\\1\\\"" - "ogs_missing_documentation = \\xrefitem ogs_missing_documentation \\\"Missing Documentation\\\" \\\"OGS Input File Parameters&mdash\;List of incomplete documentation pages\\\" Documentation missing/incomplete") + "ogs_missing_documentation = \\xrefitem ogs_missing_documentation \\\"Missing Documentation\\\" \\\"OGS Input File Parameters&mdash\;List of incomplete documentation pages\\\" Documentation missing/incomplete" +) set(DOXYGEN_CREATE_SUBDIRS YES) -configure_file(${PROJECT_SOURCE_DIR}/Documentation/mainpage.dox.in ${PROJECT_BINARY_DIR}/DocAux/dox/mainpage.dox) +configure_file( + ${PROJECT_SOURCE_DIR}/Documentation/mainpage.dox.in + ${PROJECT_BINARY_DIR}/DocAux/dox/mainpage.dox +) -doxygen_add_docs(doc - ${PROJECT_SOURCE_DIR}/ - ${PROJECT_BINARY_DIR}/DocAux/dox) +doxygen_add_docs(doc ${PROJECT_SOURCE_DIR}/ ${PROJECT_BINARY_DIR}/DocAux/dox) -if (BASH_TOOL_PATH AND Python3_EXECUTABLE) +if(BASH_TOOL_PATH AND Python3_EXECUTABLE) set(_doc_use_external_tools TRUE) else() set(_doc_use_external_tools FALSE) endif() -# TODO that will always transform all of the input files no matter if they changed -# maybe this behaviour can be changed to on-demand processing -add_custom_target(internal_pre_doc +# TODO that will always transform all of the input files no matter if they +# changed maybe this behaviour can be changed to on-demand processing +add_custom_target( + internal_pre_doc ${CMAKE_COMMAND} -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR} -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR} -Ddoc_use_external_tools=${_doc_use_external_tools} - -P ${PROJECT_SOURCE_DIR}/scripts/cmake/DocumentationProjectFile.cmake + -P + ${PROJECT_SOURCE_DIR}/scripts/cmake/DocumentationProjectFile.cmake WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - COMMENT "Generating project file documentation hierarchy." VERBATIM) + COMMENT "Generating project file documentation hierarchy." + VERBATIM +) add_dependencies(doc internal_pre_doc) -if (_doc_use_external_tools) - add_custom_target(internal_pre_doc_qa_page +if(_doc_use_external_tools) + add_custom_target( + internal_pre_doc_qa_page ${BASH_TOOL_PATH} "${PROJECT_SOURCE_DIR}/scripts/doc/generate-project-file-doc-qa.sh" - ${PROJECT_SOURCE_DIR} - ${PROJECT_BINARY_DIR} - "${Data_SOURCE_DIR}" + ${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR} "${Data_SOURCE_DIR}" WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - COMMENT "Generating project file documentation quality assurance pages." VERBATIM) + COMMENT "Generating project file documentation quality assurance pages." + VERBATIM + ) add_dependencies(doc internal_pre_doc_qa_page) add_dependencies(internal_pre_doc_qa_page internal_pre_doc) endif() diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake index f6b6436e33b1cdc3c7199c27b224e8e91262c9b4..855fa1e18dfec694b5903c5423946be3a2719723 100644 --- a/scripts/cmake/Find.cmake +++ b/scripts/cmake/Find.cmake @@ -1,11 +1,12 @@ -###################### -### Find tools ### -###################### +# ############################################################################## +# Find tools +# ############################################################################## string(REPLACE ".windows.1" "" GIT_VERSION_STRING ${GIT_VERSION_STRING}) if(${GIT_VERSION_STRING} VERSION_LESS ${ogs.minimum_version.git}) message(FATAL_ERROR "Git version ${ogs.minimum_version.git} is required. \ - Found version ${GIT_VERSION_STRING}.") + Found version ${GIT_VERSION_STRING}." + ) endif() find_package(Doxygen OPTIONAL_COMPONENTS dot) @@ -16,21 +17,9 @@ find_program(GPROF_PATH gprof DOC "GNU profiler gprof" QUIET) find_program(CPPCHECK_TOOL_PATH cppcheck) # Find bash itself ... -find_program(BASH_TOOL_PATH bash - HINTS ${GITHUB_BIN_DIR} DOC "The bash executable") - -# Dumpbin is a windows dependency analaysis tool required for packaging. -# Variable has to be named gp_cmd to override the outdated find routines -# of the GetPrerequisites CMake-module. -if(WIN32) - include(MSVCPaths) - find_program(gp_cmd dumpbin DOC "Windows dependency analysis tool" - PATHS ${MSVC_INSTALL_PATHS} PATH_SUFFIXES VC/bin) - if(gp_cmd) - get_filename_component(dir ${gp_cmd} PATH) - set(ENV{PATH} "${dir}/../../../Common7/IDE;$ENV{PATH}") - endif() -endif() +find_program( + BASH_TOOL_PATH bash HINTS ${GITHUB_BIN_DIR} DOC "The bash executable" +) find_program(CURL_TOOL_PATH curl DOC "The curl-tool") @@ -43,8 +32,10 @@ else() endif() # Tools for web -find_program(VTKJS_CONVERTER vtkDataConverter - PATHS ${PROJECT_SOURCE_DIR}/web/node_modules/.bin) +find_program( + VTKJS_CONVERTER vtkDataConverter + PATHS ${PROJECT_SOURCE_DIR}/web/node_modules/.bin +) find_program(HUGO hugo) find_program(NPM npm) find_program(YARN yarn) @@ -57,11 +48,11 @@ find_program(SNAKEMAKE snakemake HINTS ${LOCAL_VIRTUALENV_BIN_DIRS}) find_program(GMSH gmsh) -###################### -### Find libraries ### -###################### +# ############################################################################## +# Find libraries +# ############################################################################## if(OGS_USE_MFRONT) - ## pthread, is a requirement of mfront ## + # pthread, is a requirement of mfront ## set(CMAKE_THREAD_PREFER_PTHREAD ON) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) @@ -84,10 +75,12 @@ find_package(OpenMP) if(OPENMP_FOUND) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") + set(CMAKE_EXE_LINKER_FLAGS + "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}" + ) endif() -## Qt5 library ## +# Qt5 library ## if(OGS_BUILD_GUI) set(QT_MODULES Gui Widgets Xml XmlPatterns) if(UNIX AND NOT APPLE) @@ -107,23 +100,24 @@ endif() # lapack find_package(LAPACK QUIET) -## geotiff ## +# geotiff ## find_package(GEOTIFF) -## lis ## +# lis ## if(OGS_USE_LIS) - find_package( LIS REQUIRED ) + find_package(LIS REQUIRED) endif() if(OGS_USE_MKL) - find_package( MKL REQUIRED ) + find_package(MKL REQUIRED) endif() if(OGS_USE_PETSC) message(STATUS "Configuring for PETSc") option(FORCE_PETSC_EXECUTABLE_RUNS - "Force CMake to accept a given PETSc configuration" ON) + "Force CMake to accept a given PETSc configuration" ON + ) # Force CMake to accept a given PETSc configuration in case the failure of # MPI tests. This may cause the compilation broken. @@ -136,11 +130,13 @@ if(OGS_USE_PETSC) include_directories(SYSTEM ${PETSC_INCLUDES}) endif() -## Check MPI package +# Check MPI package if(OGS_USE_MPI) find_package(MPI REQUIRED) endif() find_package(Filesystem REQUIRED COMPONENTS Final Experimental) -configure_file(${PROJECT_SOURCE_DIR}/BaseLib/filesystem.h.in - ${PROJECT_BINARY_DIR}/BaseLib/filesystem.h) +configure_file( + ${PROJECT_SOURCE_DIR}/BaseLib/filesystem.h.in + ${PROJECT_BINARY_DIR}/BaseLib/filesystem.h +) diff --git a/scripts/cmake/FindGEOTIFF.cmake b/scripts/cmake/FindGEOTIFF.cmake index 54183bc8965cb1b7f38cc0c8fad14c4f65d90be1..e99078bd03bc9523e822aeb0049f19972707b449 100644 --- a/scripts/cmake/FindGEOTIFF.cmake +++ b/scripts/cmake/FindGEOTIFF.cmake @@ -1,22 +1,19 @@ -# - Try to find libgeotiff +# * Try to find libgeotiff # # Once done, this will define # -# GEOTIFF_FOUND -# GEOTIFF_INCLUDE_DIRS -# GEOTIFF_LIBRARIES +# * GEOTIFF_FOUND +# * GEOTIFF_INCLUDE_DIRS +# * GEOTIFF_LIBRARIES -### -# Dependencies -### set(_deps_libs) set(_deps_includes) set(_deps_check) -find_path( libgeotiff_INCLUDE_DIR geotiff.h) +find_path(libgeotiff_INCLUDE_DIR geotiff.h) find_library(libgeotiff_LIBRARY geotiff) -find_path( xtiff_INCLUDE_DIR xtiffio.h) +find_path(xtiff_INCLUDE_DIR xtiffio.h) if(MSVC) find_library(xtiff_LIBRARY xtiff) list(APPEND _deps_libs ${xtiff_LIBRARY}) @@ -29,15 +26,14 @@ list(APPEND _deps_includes ${TIFF_INCLUDE_DIRS}) list(APPEND _deps_check TIFF_FOUND) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(GEOTIFF - REQUIRED_VARS - libgeotiff_LIBRARY - libgeotiff_INCLUDE_DIR - xtiff_INCLUDE_DIR - ${_deps_check} +find_package_handle_standard_args( + GEOTIFF REQUIRED_VARS libgeotiff_LIBRARY libgeotiff_INCLUDE_DIR + xtiff_INCLUDE_DIR ${_deps_check} ) if(GEOTIFF_FOUND) - set(GEOTIFF_INCLUDE_DIRS ${libgeotiff_INCLUDE_DIR} ${xtiff_INCLUDE_DIR} ${_deps_includes}) + set(GEOTIFF_INCLUDE_DIRS ${libgeotiff_INCLUDE_DIR} ${xtiff_INCLUDE_DIR} + ${_deps_includes} + ) set(GEOTIFF_LIBRARIES ${libgeotiff_LIBRARY} ${_deps_libs}) endif() diff --git a/scripts/cmake/Functions.cmake b/scripts/cmake/Functions.cmake index 019e9c6d46cf3c2239a6e89099b53cc7aa208fb9..38f52a5a61c55b42531c45dd336b88d87e7b12f5 100644 --- a/scripts/cmake/Functions.cmake +++ b/scripts/cmake/Functions.cmake @@ -1,11 +1,14 @@ # Returns the current subdirectory in the sources directory. macro(GET_CURRENT_SOURCE_SUBDIRECTORY current_source_subdirectory) - string(REGEX REPLACE ".*/([^/]*)" "\\1" REGEX_RESULT "${CMAKE_CURRENT_SOURCE_DIR}" ) + string(REGEX REPLACE ".*/([^/]*)" "\\1" REGEX_RESULT + "${CMAKE_CURRENT_SOURCE_DIR}" + ) set(${current_source_subdirectory} ${REGEX_RESULT}) endmacro() -# Returns a list of source files (*.h and *.cpp) in source_files and creates a Visual -# Studio folder. A (relative) subdirectory can be passed as second parameter (optional). +# Returns a list of source files (*.h and *.cpp) in source_files and creates a +# Visual Studio folder. A (relative) subdirectory can be passed as second +# parameter (optional). macro(GET_SOURCE_FILES source_files) if(${ARGC} EQUAL 2) set(DIR "${ARGV1}") @@ -14,11 +17,20 @@ macro(GET_SOURCE_FILES source_files) endif() # Get all files in the directory - file(GLOB GET_SOURCE_FILES_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS ${DIR}/*.h) - file(GLOB GET_SOURCE_FILES_TEMPLATES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS ${DIR}/*.tpp) - file(GLOB GET_SOURCE_FILES_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS ${DIR}/*.cpp) + file(GLOB GET_SOURCE_FILES_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + CONFIGURE_DEPENDS ${DIR}/*.h + ) + file(GLOB GET_SOURCE_FILES_TEMPLATES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + CONFIGURE_DEPENDS ${DIR}/*.tpp + ) + file(GLOB GET_SOURCE_FILES_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + CONFIGURE_DEPENDS ${DIR}/*.cpp + ) - set(${source_files} ${GET_SOURCE_FILES_HEADERS} ${GET_SOURCE_FILES_TEMPLATES} ${GET_SOURCE_FILES_SOURCES}) + set(${source_files} + ${GET_SOURCE_FILES_HEADERS} ${GET_SOURCE_FILES_TEMPLATES} + ${GET_SOURCE_FILES_SOURCES} + ) list(LENGTH ${source_files} NUM_FILES) if(${NUM_FILES} EQUAL 0) message(FATAL_ERROR "No source files found in ${DIR}") @@ -33,15 +45,17 @@ macro(GET_SOURCE_FILES source_files) endif() GET_CURRENT_SOURCE_SUBDIRECTORY(DIRECTORY) - source_group("${DIRECTORY}${DIR}" FILES - ${GET_SOURCE_FILES_HEADERS} - ${GET_SOURCE_FILES_SOURCES} - ${GET_SOURCE_FILES_TEMPLATES}) + source_group( + "${DIRECTORY}${DIR}" + FILES ${GET_SOURCE_FILES_HEADERS} ${GET_SOURCE_FILES_SOURCES} + ${GET_SOURCE_FILES_TEMPLATES} + ) endmacro() -# Appends a list of source files (*.h and *.cpp) to source_files and creates a Visual -# Studio folder. A (relative) subdirectory can be passed as second parameter (optional). +# Appends a list of source files (*.h and *.cpp) to source_files and creates a +# Visual Studio folder. A (relative) subdirectory can be passed as second +# parameter (optional). macro(APPEND_SOURCE_FILES source_files) if(${ARGC} EQUAL 2) set(DIR "${ARGV1}") @@ -53,15 +67,22 @@ macro(APPEND_SOURCE_FILES source_files) set(${source_files} ${${source_files}} ${TMP_SOURCES}) endmacro() -# Creates one ctest for each googletest found in source files passed as arguments -# number two onwards. Argument one specifies the testrunner executable. +# Creates one ctest for each googletest found in source files passed as +# arguments number two onwards. Argument one specifies the testrunner +# executable. macro(ADD_GOOGLE_TESTS executable) foreach(source ${ARGN}) file(READ "${source}" contents) - string(REGEX MATCHALL "TEST_?F?\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents}) + string(REGEX MATCHALL "TEST_?F?\\(([A-Za-z_0-9 ,]+)\\)" found_tests + ${contents} + ) foreach(hit ${found_tests}) - string(REGEX REPLACE ".*\\(([A-Za-z_0-9]+)[, ]*([A-Za-z_0-9]+)\\).*" "\\1.\\2" test_name ${hit}) - add_test(${test_name} ${executable} --gtest_output=xml --gtest_filter=${test_name} ${MI3CTestingDir}) + string(REGEX REPLACE ".*\\(([A-Za-z_0-9]+)[, ]*([A-Za-z_0-9]+)\\).*" + "\\1.\\2" test_name ${hit} + ) + add_test(${test_name} ${executable} --gtest_output=xml + --gtest_filter=${test_name} ${MI3CTestingDir} + ) endforeach() endforeach() endmacro() @@ -71,28 +92,43 @@ endmacro() function(add_autogen_include target) get_property(IsMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(IsMultiConfig) - target_include_directories(${target} PUBLIC - ${CMAKE_CURRENT_BINARY_DIR}/${target}_autogen/include_$<CONFIG>) + target_include_directories( + ${target} + PUBLIC + ${CMAKE_CURRENT_BINARY_DIR}/${target}_autogen/include_$<CONFIG> + ) else() - target_include_directories(${target} PUBLIC - ${CMAKE_CURRENT_BINARY_DIR}/${target}_autogen/include) + target_include_directories( + ${target} + PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/${target}_autogen/include + ) endif() endfunction() # Replacement for add_library() for ogs targets function(ogs_add_library targetName) add_library(${targetName} ${ARGN}) - target_compile_options(${targetName} PRIVATE - # OR does not work with cotire - # $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>, - # $<CXX_COMPILER_ID:GNU>>:-Wall -Wextra> - $<$<CXX_COMPILER_ID:Clang>:-Wall -Wextra -Wunreachable-code> - $<$<CXX_COMPILER_ID:AppleClang>:-Wall -Wextra -Wunreachable-code> - $<$<CXX_COMPILER_ID:GNU>:-Wall -Wextra -Wunreachable-code> - $<$<CXX_COMPILER_ID:MSVC>:/W3>) + target_compile_options( + ${targetName} + PRIVATE # OR does not work with cotire + # $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>, + # $<CXX_COMPILER_ID:GNU>>:-Wall -Wextra> + $<$<CXX_COMPILER_ID:Clang>:-Wall + -Wextra + -Wunreachable-code> + $<$<CXX_COMPILER_ID:AppleClang>:-Wall + -Wextra + -Wunreachable-code> + $<$<CXX_COMPILER_ID:GNU>:-Wall + -Wextra + -Wunreachable-code> + $<$<CXX_COMPILER_ID:MSVC>:/W3> + ) if(BUILD_SHARED_LIBS) - install(TARGETS ${targetName} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS ${targetName} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) endif() include(GenerateExportHeader) @@ -100,14 +136,17 @@ function(ogs_add_library targetName) target_include_directories(${targetName} PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.16) - set_target_properties(${targetName} PROPERTIES - UNITY_BUILD ${OGS_USE_UNITY_BUILDS}) + set_target_properties( + ${targetName} PROPERTIES UNITY_BUILD ${OGS_USE_UNITY_BUILDS} + ) endif() endfunction() # Parses current directory into a list function(current_dir_as_list baseDir outList) - file(RELATIVE_PATH REL_DIR ${PROJECT_SOURCE_DIR}/${baseDir} ${CMAKE_CURRENT_LIST_DIR}) + file(RELATIVE_PATH REL_DIR ${PROJECT_SOURCE_DIR}/${baseDir} + ${CMAKE_CURRENT_LIST_DIR} + ) string(REPLACE "/" ";" DIR_LIST ${REL_DIR}) set(${outList} ${DIR_LIST} PARENT_SCOPE) endfunction() diff --git a/scripts/cmake/GCCSanitizer.cmake b/scripts/cmake/GCCSanitizer.cmake index a5ceb68e26e87667e3201efc2478f0f6c8b23f38..f4bee80a022de9a32f1934fa77373d06d94516c7 100644 --- a/scripts/cmake/GCCSanitizer.cmake +++ b/scripts/cmake/GCCSanitizer.cmake @@ -1,5 +1,7 @@ option(OGS_ADDRESS_SANITIZER OFF "Use GCCs AddressSanitizer") -option(OGS_UNDEFINED_BEHAVIOR_SANITIZER OFF "Use GCCs UndefinedBehaviorSanitizer") +option(OGS_UNDEFINED_BEHAVIOR_SANITIZER OFF + "Use GCCs UndefinedBehaviorSanitizer" +) if(OGS_ADDRESS_SANITIZER) set(SANITIZE_FLAG_VALUE "address") @@ -7,7 +9,9 @@ if(OGS_ADDRESS_SANITIZER) endif() if(OGS_UNDEFINED_BEHAVIOR_SANITIZER) - set(SANITIZE_FLAG_VALUE "${SANITIZE_FLAG_VALUE},undefined,unreachable,integer-divide-by-zero,vla-bound,bounds,null") + set(SANITIZE_FLAG_VALUE + "${SANITIZE_FLAG_VALUE},undefined,unreachable,integer-divide-by-zero,vla-bound,bounds,null" + ) endif() if(DEFINED SANITIZE_FLAG_VALUE) diff --git a/scripts/cmake/GitSetup.cmake b/scripts/cmake/GitSetup.cmake index 8d1cf3f5e036ec5d6b3eb31b14f0610f569d12ef..21670a0bc59403b6721ab85ce709e76f2a6bae23 100644 --- a/scripts/cmake/GitSetup.cmake +++ b/scripts/cmake/GitSetup.cmake @@ -1,4 +1,4 @@ -### Git detection ### +# Git detection find_package(Git REQUIRED) # cmake-lint: disable=W0106 @@ -10,19 +10,27 @@ elseif(DEFINED OGS_VERSION) endif() if(NOT _IS_GIT_REPO) - execute_process(COMMAND ${GIT_EXECUTABLE} status + execute_process( + COMMAND ${GIT_EXECUTABLE} status WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} RESULT_VARIABLE _IS_GIT_REPO - OUTPUT_QUIET) + OUTPUT_QUIET + ) if(_IS_GIT_REPO GREATER 0) set(_IS_GIT_REPO FALSE CACHE INTERNAL "") if(DEFINED OGS_VERSION) - message(WARNING "Using user-provided OGS_VERSION; Submodule setup is skipped!") + message( + WARNING + "Using user-provided OGS_VERSION; Submodule setup is skipped!" + ) else() - message(FATAL_ERROR "No git repository found at ${PROJECT_SOURCE_DIR}! " - "Please use git to obtain the source code! See " - "https://www.opengeosys.org/docs/devguide/getting-started/get-the-source-code/" - " OR manually set the OGS_VERSION variable.") + message( + FATAL_ERROR + "No git repository found at ${PROJECT_SOURCE_DIR}! " + "Please use git to obtain the source code! See " + "https://www.opengeosys.org/docs/devguide/getting-started/get-the-source-code/" + " OR manually set the OGS_VERSION variable." + ) endif() else() set(_IS_GIT_REPO TRUE CACHE INTERNAL "") @@ -72,19 +80,26 @@ if(_IS_GIT_REPO AND NOT OGS_VERSION) set(OGS_VERSION ${DESCRIBE_TAG}) if(DESCRIBE_COMMIT_COUNT GREATER 0) - set(OGS_VERSION "${OGS_VERSION}-${DESCRIBE_COMMIT_COUNT}-${DESCRIBE_COMMIT_NAME}") + set(OGS_VERSION + "${OGS_VERSION}-${DESCRIBE_COMMIT_COUNT}-${DESCRIBE_COMMIT_NAME}" + ) endif() if(DESCRIBE_DIRTY) set(OGS_VERSION "${OGS_VERSION}.dirty") if(DEFINED ENV{CI}) string(TIMESTAMP DESCRIBE_DIRTY_TIMESTAMP "%Y%m%d%H%M%S" UTC) - set(OGS_VERSION "${OGS_VERSION}.dirty.${DESCRIBE_DIRTY_TIMESTAMP}") + set(OGS_VERSION + "${OGS_VERSION}.dirty.${DESCRIBE_DIRTY_TIMESTAMP}" + ) endif() endif() message(STATUS "OGS VERSION: ${OGS_VERSION} (reported by git)") else() - message(WARNING "Git repository contains no tags! Please run: git fetch --tags") + message( + WARNING + "Git repository contains no tags! Please run: git fetch --tags" + ) endif() # Get git commit diff --git a/scripts/cmake/MSVCPaths.cmake b/scripts/cmake/MSVCPaths.cmake deleted file mode 100644 index efc6911a518a0b122f8747c21dc0444f943723be..0000000000000000000000000000000000000000 --- a/scripts/cmake/MSVCPaths.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# This set MSVC_INSTALL_PATHS cache variable to a list of possible Visual Studio -# install directories. -# Usage: -# -# include(MSVCPaths) -# find_program(DUMPBIN_TOOL_PATH dumpbin DOC "Windows dependency analysis tool" -# PATHS MSVC_INSTALL_PATHS PATH_SUFFIXES VC/bin) - -if(MSVC) - if(MSVC_VERSION EQUAL 1700) - set(MSVC_NUMBER 11.0) - elseif(MSVC_VERSION EQUAL 1800) - set(MSVC_NUMBER 12.0) - endif() - get_filename_component(VS_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_NUMBER}\\Setup\\VS;ProductDir]" REALPATH) - get_filename_component(VS_EXPRESS_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\${MSVC_NUMBER}\\Setup\\VS;ProductDir]" REALPATH) - - set(X86_TMP "ProgramFiles(x86)") - set(MSVC_INSTALL_PATHS - ${VS_DIR} ${VS_EXPRESS_DIR} - "$ENV{ProgramFiles}/Microsoft\ Visual\ Studio\ ${MSVC_NUMBER}" - "$ENV{${X86_TMP}}/Microsoft\ Visual\ Studio\ ${MSVC_NUMBER}" - CACHE STRING "" FORCE) -endif() diff --git a/scripts/cmake/MetisSetup.cmake b/scripts/cmake/MetisSetup.cmake index 47a1ee837bfa911773674d5cebc471009615230c..f9300fa7941879c9360e476e4b394f25925e352a 100644 --- a/scripts/cmake/MetisSetup.cmake +++ b/scripts/cmake/MetisSetup.cmake @@ -1,5 +1,11 @@ -message( STATUS "The METIS package is copyrighted by the Regents of the University of Minnesota." ) -message( STATUS "Please read the license of the METIS package carefully before you use the METIS." ) +message( + STATUS + "The METIS package is copyrighted by the Regents of the University of Minnesota." +) +message( + STATUS + "Please read the license of the METIS package carefully before you use the METIS." +) set(METIS_PATH ${metis_SOURCE_DIR}) add_definitions(-DUSE_GKREGEX) @@ -15,9 +21,8 @@ include(${GKLIB_PATH}/GKlibSystem.cmake) include_directories(${GKLIB_PATH}) include_directories(${METIS_PATH}/include) -# From ${METIS_PATH}/libmetis/CMakeLists.txt -# Removed linking to conan -# Add this directory for internal users. +# From ${METIS_PATH}/libmetis/CMakeLists.txt Removed linking to conan Add this +# directory for internal users. include_directories(BEFORE ${METIS_PATH}/libmetis) # Find sources. file(GLOB metis_sources ${METIS_PATH}/libmetis/*.c) @@ -37,16 +42,14 @@ elseif(MSVC) generate_export_header(ogs_metis) endif() -## Compile mpmetis +# Compile mpmetis add_compile_definitions(IDXTYPEWIDTH=64) add_definitions(-DSVNINFO="") include_directories(${METIS_PATH}/libmetis) include_directories(${METIS_PATH}/programs) set(METIS_SOURCES - ${METIS_PATH}/programs/mpmetis.c - ${METIS_PATH}/programs/cmdline_mpmetis.c - ${METIS_PATH}/programs/io.c - ${METIS_PATH}/programs/stat.c + ${METIS_PATH}/programs/mpmetis.c ${METIS_PATH}/programs/cmdline_mpmetis.c + ${METIS_PATH}/programs/io.c ${METIS_PATH}/programs/stat.c ) add_executable(mpmetis ${METIS_SOURCES}) target_link_libraries(mpmetis ogs_metis) diff --git a/scripts/cmake/ParseCMakeArgs.cmake b/scripts/cmake/ParseCMakeArgs.cmake index c0df8647d1a19cc32d47c96bb68753a80bfa23a8..fbd99f7618d73b0983cf96e3fcaa7fcb9462a494 100644 --- a/scripts/cmake/ParseCMakeArgs.cmake +++ b/scripts/cmake/ParseCMakeArgs.cmake @@ -1,19 +1,17 @@ # Implementation from https://stackoverflow.com/questions/10205986 # -# Captures not-yet cached CMake variables. -# On first CMake run via cmake-cli this works as expected. -# Once the variables are cached this will not work anymore (and is -# therefore skipped). +# Captures not-yet cached CMake variables. On first CMake run via cmake-cli this +# works as expected. Once the variables are cached this will not work anymore +# (and is therefore skipped). # # When running CMake -D.. passed args can be retrieved with by the -# CACHE_VARIABLES CMake property. On sub-sequent CMake runs it is -# no longer possible to differentiate between variables already cached -# by option()-calls and variables passed to the CMake call with -D.. +# CACHE_VARIABLES CMake property. On sub-sequent CMake runs it is no longer +# possible to differentiate between variables already cached by option()-calls +# and variables passed to the CMake call with -D.. # -# A (cached) map data structure would solve this. -# Tried the following map implementations without luck: -# - https://github.com/toeb/cmakepp (not cached) -# - https://github.com/j3lamp/mcl (did not work at all) +# A (cached) map data structure would solve this. Tried the following map +# implementations without luck: - https://github.com/toeb/cmakepp (not cached) - +# https://github.com/j3lamp/mcl (did not work at all) if(EXISTS ${PROJECT_BINARY_DIR}/CMakeCache.txt) return() @@ -22,18 +20,24 @@ endif() get_cmake_property(CACHE_VARS CACHE_VARIABLES) foreach(cache_var ${CACHE_VARS}) get_property(CACHE_VAR_HELPSTRING CACHE ${cache_var} PROPERTY HELPSTRING) - if(CACHE_VAR_HELPSTRING STREQUAL "No help, variable specified on the command line.") + if(CACHE_VAR_HELPSTRING STREQUAL + "No help, variable specified on the command line." + ) get_property(CACHE_VAR_TYPE CACHE ${cache_var} PROPERTY TYPE) if(CACHE_VAR_TYPE STREQUAL "UNINITIALIZED") set(CACHE_VAR_TYPE) else() set(CACHE_VAR_TYPE :${CACHE_VAR_TYPE}) endif() - set(CMAKE_ARGS "${CMAKE_ARGS} -D${cache_var}${CACHE_VAR_TYPE}=\"${${cache_var}}\"") + set(CMAKE_ARGS + "${CMAKE_ARGS} -D${cache_var}${CACHE_VAR_TYPE}=\"${${cache_var}}\"" + ) endif() endforeach() -set(CMAKE_ARGS "${CMAKE_ARGS} -DCMAKE_BUILD_TYPE=\"${CMAKE_BUILD_TYPE}\"" CACHE STRING "") +set(CMAKE_ARGS "${CMAKE_ARGS} -DCMAKE_BUILD_TYPE=\"${CMAKE_BUILD_TYPE}\"" + CACHE STRING "" +) string(REPLACE "\"" "\\\"" CMAKE_ARGS_ESCAPED ${CMAKE_ARGS}) set(CMAKE_ARGS_ESCAPED "${CMAKE_ARGS_ESCAPED}" CACHE STRING "") file(WRITE ${PROJECT_BINARY_DIR}/cmake-args "${CMAKE_ARGS}\n") diff --git a/scripts/cmake/ProcessesSetup.cmake b/scripts/cmake/ProcessesSetup.cmake index f12185f7314d21cc4f104b5e63664f8da69d9b4c..9030b7a7a03851aad1f6fc51c301292baa678f4c 100644 --- a/scripts/cmake/ProcessesSetup.cmake +++ b/scripts/cmake/ProcessesSetup.cmake @@ -22,21 +22,25 @@ set(_processes_list ThermoMechanicalPhaseField ThermoMechanics TwoPhaseFlowWithPP - TwoPhaseFlowWithPrho) + TwoPhaseFlowWithPrho +) # Add a cmake option for each process. foreach(process ${_processes_list}) option(OGS_BUILD_PROCESS_${process} "Build the ${process} process." ON) endforeach() -set(OGS_BUILD_PROCESSES - "" - CACHE STRING "Semicolon-separated list of processes to build") +set(OGS_BUILD_PROCESSES "" + CACHE STRING "Semicolon-separated list of processes to build" +) if(NOT OGS_BUILD_CLI) set(OGS_BUILD_PROCESSES OFF "" CACHE STRING "" FORCE) - message(STATUS "ATTENTION: OGS_BUILD_CLI=OFF -> OGS_BUILD_PROCESSES is set to OFF too.\n" - " If cli is switched on again, remember to switch processes back to on \n" - " too with -DOGS_BUILD_PROCESSES=\"\"!") + message( + STATUS + "ATTENTION: OGS_BUILD_CLI=OFF -> OGS_BUILD_PROCESSES is set to OFF too.\n" + " If cli is switched on again, remember to switch processes back to on \n" + " too with -DOGS_BUILD_PROCESSES=\"\"!" + ) endif() if(NOT "${OGS_BUILD_PROCESSES}" STREQUAL "") if(${OGS_BUILD_PROCESSES}) diff --git a/scripts/cmake/ProjectSetup.cmake b/scripts/cmake/ProjectSetup.cmake index 49e93cae39c6164113f282cb5531af038679ed4a..3cc5260cbe1177e4954a1053c95e166bed7b616f 100644 --- a/scripts/cmake/ProjectSetup.cmake +++ b/scripts/cmake/ProjectSetup.cmake @@ -1,13 +1,25 @@ # Set build directories -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} +) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} +) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} +) if(OGS_USE_CONAN AND MSVC) foreach(outputconfig ${CMAKE_CONFIGURATION_TYPES}) string(TOUPPER ${outputconfig} outputconfig) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${outputconfig} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${outputconfig} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${outputconfig} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${outputconfig} + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + ) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${outputconfig} + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + ) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${outputconfig} + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + ) endforeach() endif() @@ -26,9 +38,8 @@ if(APPLE) else() set(BASEPOINT $ORIGIN) endif() -file(RELATIVE_PATH relDir - ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} - ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} +file(RELATIVE_PATH relDir ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} + ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} ) set(CMAKE_INSTALL_RPATH ${BASEPOINT} ${BASEPOINT}/${relDir}) set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) diff --git a/scripts/cmake/PythonSetup.cmake b/scripts/cmake/PythonSetup.cmake index acf68936c54ea73d4d0c10a58bff74c72e176c22..cbc7f1e2b7c63bd1f4d186d7262b456ec6010d20 100644 --- a/scripts/cmake/PythonSetup.cmake +++ b/scripts/cmake/PythonSetup.cmake @@ -2,15 +2,21 @@ if(OGS_USE_POETRY) find_program(POETRY poetry) if(POETRY) - configure_file(${PROJECT_SOURCE_DIR}/scripts/python/poetry.in.toml - ${PROJECT_BINARY_DIR}/poetry.toml COPYONLY) + configure_file( + ${PROJECT_SOURCE_DIR}/scripts/python/poetry.in.toml + ${PROJECT_BINARY_DIR}/poetry.toml COPYONLY + ) if(NOT EXISTS ${PROJECT_BINARY_DIR}/pyproject.toml) - configure_file(${PROJECT_SOURCE_DIR}/scripts/python/pyproject.in.toml - ${PROJECT_BINARY_DIR}/pyproject.toml) + configure_file( + ${PROJECT_SOURCE_DIR}/scripts/python/pyproject.in.toml + ${PROJECT_BINARY_DIR}/pyproject.toml + ) endif() if(NOT EXISTS ${PROJECT_BINARY_DIR}/.venv) - execute_process(COMMAND ${_CMD_COMMAND} poetry install - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + execute_process( + COMMAND ${_CMD_COMMAND} poetry install + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + ) endif() set(Python3_ROOT_DIR ${PROJECT_BINARY_DIR}/.venv) set(Python3_EXECUTABLE ${Python3_ROOT_DIR}/bin/python) @@ -21,32 +27,39 @@ if(OGS_USE_POETRY) endif() if(OGS_USE_PYTHON) - find_package(Python3 ${ogs.minimum_version.python} COMPONENTS Interpreter Development REQUIRED) + find_package( + Python3 ${ogs.minimum_version.python} COMPONENTS Interpreter Development + REQUIRED + ) else() find_package(Python3 ${ogs.minimum_version.python} COMPONENTS Interpreter) endif() if(POETRY) if(MSVC) file(TO_NATIVE_PATH "${Python3_ROOT_DIR}/Lib/site-packages" - Python3_VIRTUALENV_SITEPACKAGES) + Python3_VIRTUALENV_SITEPACKAGES + ) string(REPLACE "\\" "\\\\" Python3_VIRTUALENV_SITEPACKAGES - ${Python3_VIRTUALENV_SITEPACKAGES}) + ${Python3_VIRTUALENV_SITEPACKAGES} + ) else() set(Python3_VIRTUALENV_SITEPACKAGES - ${Python3_ROOT_DIR}/lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages) + ${Python3_ROOT_DIR}/lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages + ) endif() endif() -set(LOCAL_VIRTUALENV_BIN_DIRS - ${PROJECT_BINARY_DIR}/.venv/bin - ${PROJECT_BINARY_DIR}/.venv/Scripts - CACHE INTERNAL "" +set(LOCAL_VIRTUALENV_BIN_DIRS ${PROJECT_BINARY_DIR}/.venv/bin + ${PROJECT_BINARY_DIR}/.venv/Scripts CACHE INTERNAL + "" ) if(POETRY) if(OGS_BUILD_TESTING) list(APPEND PYTHON_PACKAGES snakemake=${ogs.minimum_version.snakemake}) endif() - execute_process(COMMAND ${_CMD_COMMAND} poetry add ${PYTHON_PACKAGES} - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + execute_process( + COMMAND ${_CMD_COMMAND} poetry add ${PYTHON_PACKAGES} + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + ) endif() diff --git a/scripts/cmake/UnityBuildSettings.cmake b/scripts/cmake/UnityBuildSettings.cmake index c469531a0f3fd9b299c439992b7ea102830beb8a..fc1a1816dfba5621603721a82df5658c27e97b40 100644 --- a/scripts/cmake/UnityBuildSettings.cmake +++ b/scripts/cmake/UnityBuildSettings.cmake @@ -7,7 +7,8 @@ set_target_properties(GeoLib PROPERTIES UNITY_BUILD_BATCH_SIZE 40) set_target_properties(MaterialLib PROPERTIES UNITY_BUILD_BATCH_SIZE 20) set_target_properties(MathLib PROPERTIES UNITY_BUILD_BATCH_SIZE 10) set_target_properties(MeshLib PROPERTIES UNITY_BUILD_BATCH_SIZE 20) -# set_target_properties(ProcessLib PROPERTIES UNITY_BUILD_BATCH_SIZE 80) # breaks! +# set_target_properties(ProcessLib PROPERTIES UNITY_BUILD_BATCH_SIZE 80) # +# breaks! if(TARGET testrunner) set_target_properties(testrunner PROPERTIES UNITY_BUILD ON) diff --git a/scripts/cmake/Versions.cmake b/scripts/cmake/Versions.cmake index 7d256e618cdac3cada40f955fd5c3d24a6e87111..a80d804fc084862dfa91fa2a7daac348cf12e64a 100644 --- a/scripts/cmake/Versions.cmake +++ b/scripts/cmake/Versions.cmake @@ -7,8 +7,7 @@ CPMAddPackage( include("${json-cmake_SOURCE_DIR}/JSONParser.cmake") file(READ ${PROJECT_SOURCE_DIR}/web/data/versions.json jsonFileString) sbeParseJson(ogs jsonFileString) -# Provides variables, e.g. ogs.minimum_version.gcc -# Output all variables with +# Provides variables, e.g. ogs.minimum_version.gcc. Output all variables with # ~~~ # foreach(var ${ogs}) # message("${var} = ${${var}}") diff --git a/scripts/cmake/iphreeqc.cmake b/scripts/cmake/iphreeqc.cmake index 0ff4c6e296bde6cf63e23980c052c9a74270e3a4..4995e45c63a18fbfcc0bae9099c4b9bfdd71e44f 100644 --- a/scripts/cmake/iphreeqc.cmake +++ b/scripts/cmake/iphreeqc.cmake @@ -85,19 +85,18 @@ set(SOURCES ) # compile Var.c as c++ -SET_SOURCE_FILES_PROPERTIES(${iphreeqc_SOURCE_DIR}/src/Var.c PROPERTIES LANGUAGE CXX) +SET_SOURCE_FILES_PROPERTIES( + ${iphreeqc_SOURCE_DIR}/src/Var.c PROPERTIES LANGUAGE CXX +) add_library(iphreeqc STATIC ${SOURCES}) -target_include_directories(iphreeqc - PUBLIC - ${iphreeqc_SOURCE_DIR}/src/phreeqcpp/common - ${iphreeqc_SOURCE_DIR}/src/phreeqcpp/PhreeqcKeywords - ${iphreeqc_SOURCE_DIR}/src/phreeqcpp - ${iphreeqc_SOURCE_DIR}/src -) -target_compile_definitions(iphreeqc - PUBLIC LDBLE=double +target_include_directories( + iphreeqc + PUBLIC ${iphreeqc_SOURCE_DIR}/src/phreeqcpp/common + ${iphreeqc_SOURCE_DIR}/src/phreeqcpp/PhreeqcKeywords + ${iphreeqc_SOURCE_DIR}/src/phreeqcpp ${iphreeqc_SOURCE_DIR}/src ) +target_compile_definitions(iphreeqc PUBLIC LDBLE=double) # Exclude iphreeqc target from clang-tidy tests because it handles the above # mentioned 'src/src/Var.c' file as c, not c++. set_target_properties(iphreeqc PROPERTIES CXX_CLANG_TIDY "") diff --git a/scripts/cmake/packaging/ArchiveTestdata.cmake b/scripts/cmake/packaging/ArchiveTestdata.cmake index 3cb44e44dbfb5260b345f94a07c51c95e20b7186..b0d2f41078bc45726d06a8ea6ccbd5f0dba66e0f 100644 --- a/scripts/cmake/packaging/ArchiveTestdata.cmake +++ b/scripts/cmake/packaging/ArchiveTestdata.cmake @@ -10,9 +10,11 @@ if(NOT REALPATH_TOOL_PATH OR NOT ZIP_TOOL_PATH) return() endif() -add_custom_target(archive-data +add_custom_target( + archive-data bash ${PROJECT_SOURCE_DIR}/scripts/packaging/archive-testdata.sh DEPENDS data WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - COMMENT "Packaging testdata to ogs6-data.tar.gz and ogs6-data.zip" VERBATIM + COMMENT "Packaging testdata to ogs6-data.tar.gz and ogs6-data.zip" + VERBATIM ) diff --git a/scripts/cmake/packaging/Pack.cmake b/scripts/cmake/packaging/Pack.cmake index b9d4a04659e476cfac94e73b153f029af4d9928d..ddc52dddd66d8f0a8734b4774dee715cbec0bec0 100644 --- a/scripts/cmake/packaging/Pack.cmake +++ b/scripts/cmake/packaging/Pack.cmake @@ -1,10 +1,10 @@ if(_IS_SUBPROJECT) - include (CPack) + include(CPack) return() endif() -# Put ogs installs into its own component and then only install -# this component (avoids third-party installs from CPM). +# Put ogs installs into its own component and then only install this component +# (avoids third-party installs from CPM). set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME ogs) set(CPACK_INSTALL_CMAKE_PROJECTS "${PROJECT_BINARY_DIR};${PROJECT_NAME};${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME};/" @@ -14,7 +14,7 @@ option(OGS_INSTALL_DEPENDENCIES "Package dependencies.") include(packaging/PackagingMacros) include(packaging/ArchiveTestdata) -#### Packaging setup #### +# Packaging setup set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OGS-6 THM/C Simulator") set(CPACK_PACKAGE_VENDOR "OpenGeoSys Community (http://www.opengeosys.org)") set(CPACK_PACKAGE_INSTALL_DIRECTORY "OGS-${OGS_VERSION}") @@ -42,28 +42,31 @@ if(APPLE) string(REGEX MATCH "(^[0-9]*)" TMP ${CMAKE_SYSTEM_VERSION}) math(EXPR OSX_VERSION_MINOR "${CMAKE_MATCH_1} - 4") set(CPACK_PACKAGE_FILE_NAME - "ogs-${OGS_VERSION}-OSX-10.${OSX_VERSION_MINOR}-${SUFFIX}") + "ogs-${OGS_VERSION}-OSX-10.${OSX_VERSION_MINOR}-${SUFFIX}" + ) set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}) else() set(CPACK_PACKAGE_FILE_NAME "ogs-${OGS_VERSION}-${CMAKE_SYSTEM}-${SUFFIX}") endif() -if (WIN32) - include (packaging/PackagingWin) +if(WIN32) + include(packaging/PackagingWin) endif() if(UNIX) if(APPLE) - include (packaging/PackagingMac) + include(packaging/PackagingMac) else() - include (packaging/PackagingLinux) + include(packaging/PackagingLinux) endif() endif() -include (CPack) +include(CPack) if(OGS_USE_CONAN) # Install Qt platform shared libraries - install(DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/platforms DESTINATION bin OPTIONAL) + install(DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/platforms + DESTINATION bin OPTIONAL + ) endif() if(OGS_USE_PYTHON) @@ -79,16 +82,21 @@ endif() configure_file(Documentation/README.txt.in ${PROJECT_BINARY_DIR}/README.txt) install(FILES ${PROJECT_BINARY_DIR}/README.txt DESTINATION .) -install(FILES ${PROJECT_BINARY_DIR}/CMakeCache.txt DESTINATION ${CMAKE_INSTALL_INFODIR}) +install(FILES ${PROJECT_BINARY_DIR}/CMakeCache.txt + DESTINATION ${CMAKE_INSTALL_INFODIR} +) if(EXISTS ${PROJECT_BINARY_DIR}/cmake-args) - install(FILES ${PROJECT_BINARY_DIR}/cmake-args DESTINATION ${CMAKE_INSTALL_INFODIR}) + install(FILES ${PROJECT_BINARY_DIR}/cmake-args + DESTINATION ${CMAKE_INSTALL_INFODIR} + ) endif() # Install dependencies via GET_RUNTIME_DEPENDENCIES. Available since CMake 3.16. if(${CMAKE_VERSION} VERSION_LESS 3.16 OR NOT OGS_INSTALL_DEPENDENCIES) return() endif() -install(CODE [[ +install( + CODE [[ include(GNUInstallDirs) if(WIN32) set(INSTALL_DIR ${CMAKE_INSTALL_FULL_BINDIR}) @@ -109,4 +117,5 @@ install(CODE [[ if("${_u_length}" GREATER 0) message(WARNING "Unresolved dependencies detected!\n${_u_deps}") endif() -]]) +]] +) diff --git a/scripts/cmake/packaging/PackagingLinux.cmake b/scripts/cmake/packaging/PackagingLinux.cmake index d5c4ecf17d4780e7b3de9956c7148bcae3928347..025aa4fd175176b9a7d49cb10577a76e37b13445 100644 --- a/scripts/cmake/packaging/PackagingLinux.cmake +++ b/scripts/cmake/packaging/PackagingLinux.cmake @@ -2,7 +2,8 @@ set(CPACK_GENERATOR TGZ) if(MODULE_CMD) message(STATUS "Found module cmd -> writing module file.") - execute_process(COMMAND ${MODULE_CMD} bash --terse list + execute_process( + COMMAND ${MODULE_CMD} bash --terse list ERROR_VARIABLE MODULE_LIST_OUTPUT ) string(REPLACE "\n" ";" MODULE_LIST_OUTPUT ${MODULE_LIST_OUTPUT}) @@ -11,18 +12,22 @@ if(MODULE_CMD) set(MODULE_LOAD_STRING "${MODULE_LOAD_STRING}load(\"${line}\")\n") endif() endforeach() - configure_file(${PROJECT_SOURCE_DIR}/scripts/cmake/packaging/module.in + configure_file( + ${PROJECT_SOURCE_DIR}/scripts/cmake/packaging/module.in ${PROJECT_BINARY_DIR}/module.lua ) if(OGS_MODULEFILE) get_filename_component(MODULE_DIR ${OGS_MODULEFILE} DIRECTORY) get_filename_component(MODULE_NAME ${OGS_MODULEFILE} NAME) install(FILES ${PROJECT_BINARY_DIR}/module.lua DESTINATION ${MODULE_DIR} - RENAME ${MODULE_NAME}.lua) + RENAME ${MODULE_NAME}.lua + ) endif() else() if("${HOSTNAME}" MATCHES "frontend.*") - message(FATAL_ERROR "MODULE_CMD not found but required on eve frontends!") + message( + FATAL_ERROR "MODULE_CMD not found but required on eve frontends!" + ) endif() endif() diff --git a/scripts/cmake/packaging/PackagingMac.cmake b/scripts/cmake/packaging/PackagingMac.cmake index 38f9e46e78558cbda1acc78dde42ca6ece723ab8..c37ecd0d527974b84d5f6520fce21350462a5432 100644 --- a/scripts/cmake/packaging/PackagingMac.cmake +++ b/scripts/cmake/packaging/PackagingMac.cmake @@ -1,6 +1,8 @@ set(CPACK_GENERATOR TGZ) -option(OGS_PACK_DMG "package targets creates a .dmg disk image instead of .tar.gz" FALSE) +option(OGS_PACK_DMG + "package targets creates a .dmg disk image instead of .tar.gz" FALSE +) if(OGS_PACK_DMG) if(NOT OGS_BUILD_GUI) message(WARNING "OGS_PACK_DMG requires OGS_BUILD_GUI=ON!") @@ -10,23 +12,30 @@ endif() set(CPACK_DMG_FORMAT "UDBZ") # See http://stackoverflow.com/a/16662169/80480 how to create the DS_Store file. -set(CPACK_DMG_BACKGROUND_IMAGE ${PROJECT_SOURCE_DIR}/Documentation/OpenGeoSys-Logo.png) +set(CPACK_DMG_BACKGROUND_IMAGE + ${PROJECT_SOURCE_DIR}/Documentation/OpenGeoSys-Logo.png +) set(CPACK_DMG_DS_STORE ${PROJECT_SOURCE_DIR}/scripts/packaging/.DS_Store) if(OGS_USE_CONAN) - file(GLOB MATCHED_FILES LIST_DIRECTORIES false "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.dylib*") + file(GLOB MATCHED_FILES LIST_DIRECTORIES false + "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.dylib*" + ) install(FILES ${MATCHED_FILES} DESTINATION lib) # macOS frameworks are directories, exclude header files - file(GLOB MATCHED_DIRECTORIES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/*.framework") - install(DIRECTORY ${MATCHED_DIRECTORIES} DESTINATION bin - PATTERN "Headers" EXCLUDE) + file(GLOB MATCHED_DIRECTORIES + "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/*.framework" + ) + install(DIRECTORY ${MATCHED_DIRECTORIES} DESTINATION bin PATTERN "Headers" + EXCLUDE + ) endif() if(OGS_BUILD_GUI) install_qt5_plugin("Qt5::QCocoaIntegrationPlugin" QT_PLUGINS) file(WRITE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" - "[Paths]\nPlugins = ../${_qt_plugin_dir}\n") - install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" - DESTINATION bin) + "[Paths]\nPlugins = ../${_qt_plugin_dir}\n" + ) + install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" DESTINATION bin) endif() diff --git a/scripts/cmake/packaging/PackagingWin.cmake b/scripts/cmake/packaging/PackagingWin.cmake index 485483693456f45bfee70345b9c93c66924fe10b..5bfface3e054c6e6d55a17dcdfb50d394745e962 100644 --- a/scripts/cmake/packaging/PackagingWin.cmake +++ b/scripts/cmake/packaging/PackagingWin.cmake @@ -11,10 +11,11 @@ set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}") set(CPACK_NSIS_CONTACT "info@opengeosys.org") set(CPACK_NSIS_MODIFY_PATH OFF) set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) -set(CPACK_NSIS_HELP_LINK "http://docs.opengeosys.org/assets/files/Documentation/User_Manual.pdf") +set(CPACK_NSIS_HELP_LINK + "http://docs.opengeosys.org/assets/files/Documentation/User_Manual.pdf" +) set(CPACK_NSIS_MENU_LINKS - "bin" "Executables folder" - "http://www.opengeosys.org" "Website" + "bin" "Executables folder" "http://www.opengeosys.org" "Website" "https://github.com/ufz/ogs" "Source code on GitHub" ) @@ -26,7 +27,7 @@ endif() if(OGS_BUILD_GUI) install_qt5_plugin("Qt5::QWindowsIntegrationPlugin" QT_PLUGINS) file(WRITE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" - "[Paths]\nPlugins = ../${_qt_plugin_dir}\n") - install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" - DESTINATION bin) + "[Paths]\nPlugins = ../${_qt_plugin_dir}\n" + ) + install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" DESTINATION bin) endif() diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake index acadcc8834afb4ca654be545233d08fbddce2527..b5afe2c108a365eece312cf517a8bdb334713825 100644 --- a/scripts/cmake/test/AddTest.cmake +++ b/scripts/cmake/test/AddTest.cmake @@ -51,28 +51,51 @@ # compared using the given absolute and relative tolerances. # ~~~ # cmake-lint: disable=C0103,R0911,R0912,R0915 -function (AddTest) +function(AddTest) # parse arguments set(options DISABLED) - set(oneValueArgs EXECUTABLE PATH NAME WRAPPER TESTER ABSTOL RELTOL RUNTIME DEPENDS WORKING_DIRECTORY) - set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA WRAPPER_ARGS REQUIREMENTS PYTHON_PACKAGES VIS) - cmake_parse_arguments(AddTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + set(oneValueArgs + EXECUTABLE + PATH + NAME + WRAPPER + TESTER + ABSTOL + RELTOL + RUNTIME + DEPENDS + WORKING_DIRECTORY + ) + set(multiValueArgs + EXECUTABLE_ARGS + DATA + DIFF_DATA + WRAPPER_ARGS + REQUIREMENTS + PYTHON_PACKAGES + VIS + ) + cmake_parse_arguments( + AddTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} + ) set(AddTest_SOURCE_PATH "${Data_SOURCE_DIR}/${AddTest_PATH}") set(AddTest_BINARY_PATH "${Data_BINARY_DIR}/${AddTest_PATH}") file(MAKE_DIRECTORY ${AddTest_BINARY_PATH}) file(TO_NATIVE_PATH "${AddTest_BINARY_PATH}" AddTest_BINARY_PATH_NATIVE) - set(AddTest_STDOUT_FILE_PATH "${AddTest_BINARY_PATH}/${AddTest_NAME}_stdout.log") + set(AddTest_STDOUT_FILE_PATH + "${AddTest_BINARY_PATH}/${AddTest_NAME}_stdout.log" + ) # set defaults if(NOT DEFINED AddTest_EXECUTABLE) message(FATAL_ERROR "Test ${AddTest_NAME}: No EXECUTABLE set!") endif() - if (NOT DEFINED AddTest_REQUIREMENTS) + if(NOT DEFINED AddTest_REQUIREMENTS) set(AddTest_REQUIREMENTS TRUE) endif() - if (NOT DEFINED AddTest_RUNTIME) + if(NOT DEFINED AddTest_RUNTIME) set(AddTest_RUNTIME 1) endif() if(NOT DEFINED AddTest_WORKING_DIRECTORY) @@ -80,8 +103,10 @@ function (AddTest) endif() if("${AddTest_EXECUTABLE}" STREQUAL "ogs") - set(AddTest_EXECUTABLE_ARGS -o ${AddTest_BINARY_PATH_NATIVE} - ${AddTest_SOURCE_PATH}/${AddTest_EXECUTABLE_ARGS}) + set(AddTest_EXECUTABLE_ARGS + -o ${AddTest_BINARY_PATH_NATIVE} + ${AddTest_SOURCE_PATH}/${AddTest_EXECUTABLE_ARGS} + ) endif() if(DEFINED OGS_CTEST_MAX_RUNTIME) @@ -96,14 +121,20 @@ function (AddTest) # --- Implement wrappers --- # check if exe is part of build if(NOT TARGET ${AddTest_EXECUTABLE}) - set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nTest exe ${AddTest_EXECUTABLE} not built! Disabling test ${AddTest_NAME}." CACHE INTERNAL "") + set(DISABLED_TESTS_LOG + "${DISABLED_TESTS_LOG}\nTest exe ${AddTest_EXECUTABLE} not built! Disabling test ${AddTest_NAME}." + CACHE INTERNAL "" + ) return() endif() # check requirements, disable if not met if(${AddTest_REQUIREMENTS}) message(DEBUG "Enabling test ${AddTest_NAME}.") else() - set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nRequirement ${AddTest_REQUIREMENTS} not met! Disabling test ${AddTest_NAME}." CACHE INTERNAL "") + set(DISABLED_TESTS_LOG + "${DISABLED_TESTS_LOG}\nRequirement ${AddTest_REQUIREMENTS} not met! Disabling test ${AddTest_NAME}." + CACHE INTERNAL "" + ) return() endif() @@ -111,36 +142,54 @@ function (AddTest) if(TIME_TOOL_PATH) set(WRAPPER_COMMAND time) else() - set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling time wrapper for ${AddTest_NAME} as time exe was not found!" CACHE INTERNAL "") + set(DISABLED_TESTS_LOG + "${DISABLED_TESTS_LOG}\nDisabling time wrapper for ${AddTest_NAME} as time exe was not found!" + CACHE INTERNAL "" + ) set(AddTest_WRAPPER_ARGS "") endif() elseif(AddTest_WRAPPER STREQUAL "memcheck") if(VALGRIND_TOOL_PATH) - set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=memcheck --log-file=${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log -v --leak-check=full --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xff") + set(WRAPPER_COMMAND + "${VALGRIND_TOOL_PATH} --tool=memcheck --log-file=${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log -v --leak-check=full --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xff" + ) set(tester memcheck) else() - set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling memcheck wrapper for ${AddTest_NAME} as memcheck exe was not found!" CACHE INTERNAL "") + set(DISABLED_TESTS_LOG + "${DISABLED_TESTS_LOG}\nDisabling memcheck wrapper for ${AddTest_NAME} as memcheck exe was not found!" + CACHE INTERNAL "" + ) set(AddTest_WRAPPER_ARGS "") endif() elseif(AddTest_WRAPPER STREQUAL "callgrind") if(VALGRIND_TOOL_PATH) - set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=callgrind --branch-sim=yes --cache-sim=yes --dump-instr=yes --collect-jumps=yes") + set(WRAPPER_COMMAND + "${VALGRIND_TOOL_PATH} --tool=callgrind --branch-sim=yes --cache-sim=yes --dump-instr=yes --collect-jumps=yes" + ) unset(tester) else() - set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling callgrind wrapper for ${AddTest_NAME} as callgrind exe was not found!" CACHE INTERNAL "") + set(DISABLED_TESTS_LOG + "${DISABLED_TESTS_LOG}\nDisabling callgrind wrapper for ${AddTest_NAME} as callgrind exe was not found!" + CACHE INTERNAL "" + ) set(AddTest_WRAPPER_ARGS "") endif() elseif(AddTest_WRAPPER STREQUAL "mpirun") if(MPIRUN_TOOL_PATH) if("${HOSTNAME}" MATCHES "frontend.*") - set(AddTest_WRAPPER_ARGS ${AddTest_WRAPPER_ARGS} --mca btl_openib_allow_ib 1) + set(AddTest_WRAPPER_ARGS ${AddTest_WRAPPER_ARGS} --mca + btl_openib_allow_ib 1 + ) endif() set(WRAPPER_COMMAND ${MPIRUN_TOOL_PATH}) if("${AddTest_WRAPPER_ARGS}" MATCHES "-np;([0-9]*)") set(MPI_PROCESSORS ${CMAKE_MATCH_1}) endif() else() - message(STATUS "ERROR: mpirun was not found but is required for ${AddTest_NAME}!") + message( + STATUS + "ERROR: mpirun was not found but is required for ${AddTest_NAME}!" + ) return() endif() endif() @@ -166,11 +215,16 @@ function (AddTest) if(AddTest_DIFF_DATA) string(LENGTH "${AddTest_DIFF_DATA}" DIFF_DATA_LENGTH) if(${DIFF_DATA_LENGTH} GREATER 7500) - message(FATAL_ERROR "${AddTest_NAME}: DIFF_DATA to long! Consider using regex-syntax: TODO") + message( + FATAL_ERROR + "${AddTest_NAME}: DIFF_DATA to long! Consider using regex-syntax: TODO" + ) endif() endif() - if((AddTest_TESTER STREQUAL "diff" OR AddTest_TESTER STREQUAL "vtkdiff" OR AddTest_TESTER STREQUAL "xdmfdiff") AND NOT AddTest_DIFF_DATA) + if((AddTest_TESTER STREQUAL "diff" OR AddTest_TESTER STREQUAL "vtkdiff" + OR AddTest_TESTER STREQUAL "xdmfdiff") AND NOT AddTest_DIFF_DATA + ) message(FATAL_ERROR "AddTest(): ${AddTest_NAME} - no DIFF_DATA given!") endif() @@ -188,25 +242,31 @@ function (AddTest) get_filename_component(FILE_EXPECTED ${FILE} NAME) list(APPEND TESTER_COMMAND "${SELECTED_DIFF_TOOL_PATH} \ ${TESTER_ARGS} ${AddTest_SOURCE_PATH}/${FILE_EXPECTED} \ - ${AddTest_BINARY_PATH}/${FILE}") + ${AddTest_BINARY_PATH}/${FILE}" + ) endforeach() - elseif(AddTest_TESTER STREQUAL "vtkdiff" OR AddTest_TESTER STREQUAL "xdmfdiff") + elseif(AddTest_TESTER STREQUAL "vtkdiff" OR AddTest_TESTER STREQUAL + "xdmfdiff" + ) list(LENGTH AddTest_DIFF_DATA DiffDataLength) math(EXPR DiffDataLengthMod4 "${DiffDataLength} % 4") math(EXPR DiffDataLengthMod6 "${DiffDataLength} % 6") - if (${DiffDataLengthMod4} EQUAL 0 AND NOT ${DiffDataLengthMod6} EQUAL 0) + if(${DiffDataLengthMod4} EQUAL 0 AND NOT ${DiffDataLengthMod6} EQUAL 0) message(WARNING "DEPRECATED AddTest call with four arguments.\ -Use six arguments version of AddTest with absolute and relative tolerances") - if (NOT AddTest_ABSTOL) - set (AddTest_ABSTOL 1e-16) +Use six arguments version of AddTest with absolute and relative tolerances" + ) + if(NOT AddTest_ABSTOL) + set(AddTest_ABSTOL 1e-16) endif() - if (NOT AddTest_RELTOL) - set (AddTest_RELTOL 1e-16) + if(NOT AddTest_RELTOL) + set(AddTest_RELTOL 1e-16) endif() set(TESTER_ARGS "--abs ${AddTest_ABSTOL} --rel ${AddTest_RELTOL}") math(EXPR DiffDataLastIndex "${DiffDataLength}-1") foreach(DiffDataIndex RANGE 0 ${DiffDataLastIndex} 4) - list(GET AddTest_DIFF_DATA "${DiffDataIndex}" REFERENCE_VTK_FILE) + list(GET AddTest_DIFF_DATA "${DiffDataIndex}" + REFERENCE_VTK_FILE + ) math(EXPR DiffDataAuxIndex "${DiffDataIndex}+1") list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" VTK_FILE) math(EXPR DiffDataAuxIndex "${DiffDataIndex}+2") @@ -214,19 +274,28 @@ Use six arguments version of AddTest with absolute and relative tolerances") math(EXPR DiffDataAuxIndex "${DiffDataIndex}+3") list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" NAME_B) - list(APPEND TESTER_COMMAND "${SELECTED_DIFF_TOOL_PATH} \ + list( + APPEND + TESTER_COMMAND + "${SELECTED_DIFF_TOOL_PATH} \ ${AddTest_SOURCE_PATH}/${REFERENCE_VTK_FILE} \ ${AddTest_BINARY_PATH}/${VTK_FILE} \ -a ${NAME_A} -b ${NAME_B} \ - ${TESTER_ARGS}") + ${TESTER_ARGS}" + ) endforeach() - elseif (${DiffDataLengthMod6} EQUAL 0) - if (${AddTest_ABSTOL} OR ${AddTest_RELTOL}) - message(FATAL_ERROR "ABSTOL or RELTOL arguments must not be present.") + elseif(${DiffDataLengthMod6} EQUAL 0) + if(${AddTest_ABSTOL} OR ${AddTest_RELTOL}) + message( + FATAL_ERROR + "ABSTOL or RELTOL arguments must not be present." + ) endif() math(EXPR DiffDataLastIndex "${DiffDataLength}-1") foreach(DiffDataIndex RANGE 0 ${DiffDataLastIndex} 6) - list(GET AddTest_DIFF_DATA "${DiffDataIndex}" REFERENCE_VTK_FILE) + list(GET AddTest_DIFF_DATA "${DiffDataIndex}" + REFERENCE_VTK_FILE + ) math(EXPR DiffDataAuxIndex "${DiffDataIndex}+1") list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" VTK_FILE) math(EXPR DiffDataAuxIndex "${DiffDataIndex}+2") @@ -239,19 +308,28 @@ Use six arguments version of AddTest with absolute and relative tolerances") list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" REL_TOL) if("${REFERENCE_VTK_FILE}" STREQUAL "GLOB") - list(APPEND TESTER_COMMAND "${VTK_FILE} ${NAME_A} ${NAME_B} ${ABS_TOL} ${REL_TOL}") + list(APPEND TESTER_COMMAND + "${VTK_FILE} ${NAME_A} ${NAME_B} ${ABS_TOL} ${REL_TOL}" + ) set(GLOB_MODE TRUE) else() - list(APPEND TESTER_COMMAND "${SELECTED_DIFF_TOOL_PATH} \ + list( + APPEND + TESTER_COMMAND + "${SELECTED_DIFF_TOOL_PATH} \ ${AddTest_SOURCE_PATH}/${REFERENCE_VTK_FILE} \ ${AddTest_BINARY_PATH}/${VTK_FILE} \ -a ${NAME_A} -b ${NAME_B} \ --abs ${ABS_TOL} --rel ${REL_TOL} \ - ${TESTER_ARGS}") + ${TESTER_ARGS}" + ) endif() endforeach() - else () - message(FATAL_ERROR "For vtkdiff tester the number of diff data arguments must be a multiple of six.") + else() + message( + FATAL_ERROR + "For vtkdiff tester the number of diff data arguments must be a multiple of six." + ) endif() elseif(AddTest_TESTER STREQUAL "gmldiff") list(LENGTH AddTest_DIFF_DATA DiffDataLength) @@ -269,18 +347,23 @@ Use six arguments version of AddTest with absolute and relative tolerances") else() set(PY_EXE ${Python3_EXECUTABLE}) endif() - list(APPEND TESTER_COMMAND + list( + APPEND + TESTER_COMMAND "${PY_EXE} ${PROJECT_SOURCE_DIR}/scripts/test/gmldiff.py \ --abs ${ABS_TOL} --rel ${REL_TOL} \ ${TESTER_ARGS} \ ${AddTest_SOURCE_PATH}/${FILE_EXPECTED} \ - ${AddTest_BINARY_PATH}/${GML_FILE}") + ${AddTest_BINARY_PATH}/${GML_FILE}" + ) endforeach() elseif(AddTest_TESTER STREQUAL "memcheck") - set(TESTER_COMMAND "! ${GREP_TOOL_PATH} definitely ${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log") + set(TESTER_COMMAND + "! ${GREP_TOOL_PATH} definitely ${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log" + ) endif() - ## ----------- + # ----------- if(TARGET ${AddTest_EXECUTABLE}) set(AddTest_EXECUTABLE_PARSED $<TARGET_FILE:${AddTest_EXECUTABLE}>) else() @@ -299,32 +382,36 @@ Use six arguments version of AddTest with absolute and relative tolerances") if(DEFINED AddTest_WRAPPER) set(AddTest_WRAPPER_STRING "-${AddTest_WRAPPER}") endif() - set(TEST_NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}${AddTest_WRAPPER_STRING}") + set(TEST_NAME + "${AddTest_EXECUTABLE}-${AddTest_NAME}${AddTest_WRAPPER_STRING}" + ) add_test( NAME ${TEST_NAME} - COMMAND ${CMAKE_COMMAND} - -DEXECUTABLE=${AddTest_EXECUTABLE_PARSED} - "-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}" # Quoted because passed as list - # see https://stackoverflow.com/a/33248574/80480 - -DBINARY_PATH=${AddTest_BINARY_PATH} - -DWRAPPER_COMMAND=${WRAPPER_COMMAND} - "-DWRAPPER_ARGS=${AddTest_WRAPPER_ARGS}" - "-DFILES_TO_DELETE=${FILES_TO_DELETE}" - -DWORKING_DIRECTORY=${AddTest_WORKING_DIRECTORY} - -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake + COMMAND + ${CMAKE_COMMAND} -DEXECUTABLE=${AddTest_EXECUTABLE_PARSED} + "-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}" # Quoted because + # passed as list see + # https://stackoverflow.com/a/33248574/80480 + -DBINARY_PATH=${AddTest_BINARY_PATH} + -DWRAPPER_COMMAND=${WRAPPER_COMMAND} + "-DWRAPPER_ARGS=${AddTest_WRAPPER_ARGS}" + "-DFILES_TO_DELETE=${FILES_TO_DELETE}" + -DWORKING_DIRECTORY=${AddTest_WORKING_DIRECTORY} -P + ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake ) if(DEFINED AddTest_DEPENDS) set_tests_properties(${TEST_NAME} PROPERTIES DEPENDS ${AddTest_DEPENDS}) endif() if(DEFINED MPI_PROCESSORS) - set_tests_properties(${TEST_NAME} PROPERTIES PROCESSORS ${MPI_PROCESSORS}) + set_tests_properties( + ${TEST_NAME} PROPERTIES PROCESSORS ${MPI_PROCESSORS} + ) endif() current_dir_as_list(ProcessLib DIR_LABELS) - set_tests_properties(${TEST_NAME} PROPERTIES - COST ${AddTest_RUNTIME} - DISABLED ${AddTest_DISABLED} - LABELS "${DIR_LABELS}" + set_tests_properties( + ${TEST_NAME} PROPERTIES COST ${AddTest_RUNTIME} DISABLED + ${AddTest_DISABLED} LABELS "${DIR_LABELS}" ) add_dependencies(ctest ${AddTest_EXECUTABLE}) @@ -332,20 +419,25 @@ Use six arguments version of AddTest with absolute and relative tolerances") if(AddTest_PYTHON_PACKAGES) if(POETRY) - file(WRITE ${PROJECT_BINARY_DIR}/tmp_poetry_add.bat "poetry add ${AddTest_PYTHON_PACKAGES}") + file(WRITE ${PROJECT_BINARY_DIR}/tmp_poetry_add.bat + "poetry add ${AddTest_PYTHON_PACKAGES}" + ) if(WIN32) set(EXEC_CMD tmp_poetry_add.bat) else() set(EXEC_CMD ${BASH_TOOL_PATH} tmp_poetry_add.bat) endif() execute_process( - COMMAND ${EXEC_CMD} - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) + COMMAND ${EXEC_CMD} WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + ) else() - message(STATUS "Warning: Benchmark ${AddTest_NAME} requires these " - "Python packages: ${AddTest_PYTHON_PACKAGES}!\n Make sure to " - "have them installed in your current Python environment OR " - "install the Poetry package manager for Python!") + message( + STATUS + "Warning: Benchmark ${AddTest_NAME} requires these " + "Python packages: ${AddTest_PYTHON_PACKAGES}!\n Make sure to " + "have them installed in your current Python environment OR " + "install the Poetry package manager for Python!" + ) endif() endif() @@ -357,23 +449,22 @@ Use six arguments version of AddTest with absolute and relative tolerances") set(TESTER_NAME "${TEST_NAME}-${AddTest_TESTER}") add_test( NAME ${TESTER_NAME} - COMMAND ${CMAKE_COMMAND} - -DSOURCE_PATH=${AddTest_SOURCE_PATH} - -DBINARY_PATH=${${AddTest_BINARY_PATH}} - -DSELECTED_DIFF_TOOL_PATH=${SELECTED_DIFF_TOOL_PATH} - "-DTESTER_COMMAND=${TESTER_COMMAND}" - -DVTKJS_CONVERTER=${VTKJS_CONVERTER} - -DBINARY_PATH=${AddTest_BINARY_PATH} - -DVTKJS_OUTPUT_PATH=${PROJECT_SOURCE_DIR}/web/static/vis/${AddTest_PATH} - "-DVIS_FILES=${AddTest_VIS}" - -DGLOB_MODE=${GLOB_MODE} - -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake - --debug-output + COMMAND + ${CMAKE_COMMAND} -DSOURCE_PATH=${AddTest_SOURCE_PATH} + -DBINARY_PATH=${${AddTest_BINARY_PATH}} + -DSELECTED_DIFF_TOOL_PATH=${SELECTED_DIFF_TOOL_PATH} + "-DTESTER_COMMAND=${TESTER_COMMAND}" + -DVTKJS_CONVERTER=${VTKJS_CONVERTER} + -DBINARY_PATH=${AddTest_BINARY_PATH} + -DVTKJS_OUTPUT_PATH=${PROJECT_SOURCE_DIR}/web/static/vis/${AddTest_PATH} + "-DVIS_FILES=${AddTest_VIS}" -DGLOB_MODE=${GLOB_MODE} -P + ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake + --debug-output WORKING_DIRECTORY ${AddTest_SOURCE_PATH} ) - set_tests_properties(${TESTER_NAME} PROPERTIES - DEPENDS ${TEST_NAME} - DISABLED ${AddTest_DISABLED} + set_tests_properties( + ${TESTER_NAME} PROPERTIES DEPENDS ${TEST_NAME} DISABLED + ${AddTest_DISABLED} ) endfunction() diff --git a/scripts/cmake/test/AddTestTester.cmake b/scripts/cmake/test/AddTestTester.cmake index 595dd3fffa8d55bd55662927700f51f8e1def6f3..e940d227e919b92af9444b2b333983c7743b5222 100644 --- a/scripts/cmake/test/AddTestTester.cmake +++ b/scripts/cmake/test/AddTestTester.cmake @@ -3,7 +3,8 @@ if(VIS_FILES AND VTKJS_CONVERTER) execute_process(COMMAND cmake -E make_directory ${VTKJS_OUTPUT_PATH}) foreach(file ${VIS_FILES}) execute_process( - COMMAND ${VTKJS_CONVERTER} -e -i ${BINARY_PATH}/${file} -o ${VTKJS_OUTPUT_PATH} + COMMAND ${VTKJS_CONVERTER} -e -i ${BINARY_PATH}/${file} -o + ${VTKJS_OUTPUT_PATH} ) endforeach() endif() @@ -27,10 +28,14 @@ foreach(cmd ${TESTER_COMMAND}) list(GET cmd 4 REL_TOL) file(GLOB FILES RELATIVE ${SOURCE_PATH} ${GLOB}) list(LENGTH FILES LENGTH) - message(STATUS "Glob expression '${GLOB}' (${NAME_A}) found ${LENGTH} files.") + message( + STATUS + "Glob expression '${GLOB}' (${NAME_A}) found ${LENGTH} files." + ) if(${LENGTH} EQUAL 0) message(FATAL_ERROR "DIFF_DATA glob expression '${GLOB}' " - "did not match any files!") + "did not match any files!" + ) endif() foreach(file ${FILES}) if("$ENV{HOSTNAME}" MATCHES "frontend.*") @@ -40,7 +45,10 @@ foreach(cmd ${TESTER_COMMAND}) string(REPLACE "gpfs0" "../.." file ${file}) endif() execute_process( - COMMAND ${SELECTED_DIFF_TOOL_PATH} ${SOURCE_PATH}/${file} ${BINARY_PATH}/${file} -a ${NAME_A} -b ${NAME_B} --abs ${ABS_TOL} --rel ${REL_TOL} + COMMAND + ${SELECTED_DIFF_TOOL_PATH} ${SOURCE_PATH}/${file} + ${BINARY_PATH}/${file} -a ${NAME_A} -b ${NAME_B} --abs + ${ABS_TOL} --rel ${REL_TOL} WORKING_DIRECTORY ${SOURCE_PATH} RESULT_VARIABLE EXIT_CODE OUTPUT_VARIABLE OUTPUT @@ -66,8 +74,6 @@ foreach(cmd ${TESTER_COMMAND}) endif() endif() endforeach() -if (TEST_FAILED) +if(TEST_FAILED) message(FATAL_ERROR "One of the tests failed.") endif() - - diff --git a/scripts/cmake/test/AddTestWrapper.cmake b/scripts/cmake/test/AddTestWrapper.cmake index 3d06833ab07aab48c00582e5ee4179150901b34e..28d21783ffdbe71645f639ce80e69395a85c98dd 100644 --- a/scripts/cmake/test/AddTestWrapper.cmake +++ b/scripts/cmake/test/AddTestWrapper.cmake @@ -1,11 +1,14 @@ # IMPORTANT: multiple arguments in one variables have to be in list notation (;) -# and have to be quoted when passed "-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}" +# and have to be quoted when passed +# "-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}" foreach(file ${FILES_TO_DELETE}) file(REMOVE ${BINARY_PATH}/${file}) endforeach() -string(REPLACE ";" " " CMD_STRING "cd ${WORKING_DIRECTORY} && ${WRAPPER_COMMAND} " -"${WRAPPER_ARGS} ${EXECUTABLE} ${EXECUTABLE_ARGS}") +string(REPLACE ";" " " CMD_STRING + "cd ${WORKING_DIRECTORY} && ${WRAPPER_COMMAND} " + "${WRAPPER_ARGS} ${EXECUTABLE} ${EXECUTABLE_ARGS}" +) message(STATUS "Test command cleaned:\n${CMD_STRING}") execute_process( @@ -17,5 +20,7 @@ execute_process( ) if(NOT EXIT_CODE STREQUAL "0") - message(FATAL_ERROR "Test wrapper exited with code: ${EXIT_CODE}\n${OUTPUT}") + message( + FATAL_ERROR "Test wrapper exited with code: ${EXIT_CODE}\n${OUTPUT}" + ) endif() diff --git a/scripts/cmake/test/CTestCustom.in.cmake b/scripts/cmake/test/CTestCustom.in.cmake index 5f0056f42614b1bfb05c0cab31dc7eca26212516..141a37b4ba128949bdc5e92b9ca4f21fbe8d35f2 100644 --- a/scripts/cmake/test/CTestCustom.in.cmake +++ b/scripts/cmake/test/CTestCustom.in.cmake @@ -1,4 +1,4 @@ -file (STRINGS "@PROJECT_BINARY_DIR@/CTestTestfile.cmake" LINES) +file(STRINGS "@PROJECT_BINARY_DIR@/CTestTestfile.cmake" LINES) # overwrite the file.... file(WRITE "@PROJECT_BINARY_DIR@/CTestTestfile.cmake" "") diff --git a/scripts/cmake/test/MeshTest.cmake b/scripts/cmake/test/MeshTest.cmake index 080919847bec6b5e4e3ce0cc6359364b30da1280..0fe743d2185960ff9519e8370144386392f7c61b 100644 --- a/scripts/cmake/test/MeshTest.cmake +++ b/scripts/cmake/test/MeshTest.cmake @@ -18,7 +18,7 @@ # ) # ~~~ # cmake-lint: disable=C0103,R0912,R0915 -function (MeshTest) +function(MeshTest) if(NOT OGS_BUILD_TESTING) return() endif() @@ -26,19 +26,23 @@ function (MeshTest) set(options NONE) set(oneValueArgs EXECUTABLE PATH NAME WRAPPER RUNTIME WORKING_DIRECTORY) set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA WRAPPER_ARGS REQUIREMENTS) - cmake_parse_arguments(MeshTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + cmake_parse_arguments( + MeshTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} + ) set(MeshTest_SOURCE_PATH "${Data_SOURCE_DIR}/${MeshTest_PATH}") set(MeshTest_BINARY_PATH "${Data_BINARY_DIR}/${MeshTest_PATH}") file(MAKE_DIRECTORY ${MeshTest_BINARY_PATH}) file(TO_NATIVE_PATH "${MeshTest_BINARY_PATH}" MeshTest_BINARY_PATH_NATIVE) - set(MeshTest_STDOUT_FILE_PATH "${MeshTest_BINARY_PATH}/${MeshTest_NAME}_stdout.log") + set(MeshTest_STDOUT_FILE_PATH + "${MeshTest_BINARY_PATH}/${MeshTest_NAME}_stdout.log" + ) # set defaults - if (NOT DEFINED MeshTest_REQUIREMENTS) + if(NOT DEFINED MeshTest_REQUIREMENTS) set(MeshTest_REQUIREMENTS TRUE) endif() - if (NOT DEFINED MeshTest_RUNTIME) + if(NOT DEFINED MeshTest_RUNTIME) set(MeshTest_RUNTIME 1) endif() if(NOT DEFINED MeshTest_WORKING_DIRECTORY) @@ -50,7 +54,10 @@ function (MeshTest) if(${MeshTest_REQUIREMENTS}) # message(STATUS "Enabling test ${MeshTest_NAME}.") else() - set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nRequirement ${MeshTest_REQUIREMENTS} not met! Disabling test ${MeshTest_NAME}." CACHE INTERNAL "") + set(DISABLED_TESTS_LOG + "${DISABLED_TESTS_LOG}\nRequirement ${MeshTest_REQUIREMENTS} not met! Disabling test ${MeshTest_NAME}." + CACHE INTERNAL "" + ) return() endif() @@ -58,49 +65,70 @@ function (MeshTest) if(TIME_TOOL_PATH) set(WRAPPER_COMMAND time) else() - set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling time wrapper for ${MeshTest_NAME} as time exe was not found!" CACHE INTERNAL "") + set(DISABLED_TESTS_LOG + "${DISABLED_TESTS_LOG}\nDisabling time wrapper for ${MeshTest_NAME} as time exe was not found!" + CACHE INTERNAL "" + ) set(MeshTest_WRAPPER_ARGS "") endif() elseif(MeshTest_WRAPPER STREQUAL "memcheck") if(VALGRIND_TOOL_PATH) - set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=memcheck --log-file=${MeshTest_SOURCE_PATH}/${MeshTest_NAME}_memcheck.log -v --leak-check=full --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xff") + set(WRAPPER_COMMAND + "${VALGRIND_TOOL_PATH} --tool=memcheck --log-file=${MeshTest_SOURCE_PATH}/${MeshTest_NAME}_memcheck.log -v --leak-check=full --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xff" + ) set(tester memcheck) else() - set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling memcheck wrapper for ${MeshTest_NAME} as memcheck exe was not found!" CACHE INTERNAL "") + set(DISABLED_TESTS_LOG + "${DISABLED_TESTS_LOG}\nDisabling memcheck wrapper for ${MeshTest_NAME} as memcheck exe was not found!" + CACHE INTERNAL "" + ) set(MeshTest_WRAPPER_ARGS "") endif() elseif(MeshTest_WRAPPER STREQUAL "callgrind") if(VALGRIND_TOOL_PATH) - set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=callgrind --branch-sim=yes --cache-sim=yes --dump-instr=yes --collect-jumps=yes") + set(WRAPPER_COMMAND + "${VALGRIND_TOOL_PATH} --tool=callgrind --branch-sim=yes --cache-sim=yes --dump-instr=yes --collect-jumps=yes" + ) unset(tester) else() - set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling callgrind wrapper for ${MeshTest_NAME} as callgrind exe was not found!" CACHE INTERNAL "") + set(DISABLED_TESTS_LOG + "${DISABLED_TESTS_LOG}\nDisabling callgrind wrapper for ${MeshTest_NAME} as callgrind exe was not found!" + CACHE INTERNAL "" + ) set(MeshTest_WRAPPER_ARGS "") endif() elseif(MeshTest_WRAPPER STREQUAL "mpirun") if(MPIRUN_TOOL_PATH) set(WRAPPER_COMMAND ${MPIRUN_TOOL_PATH}) else() - message(STATUS "ERROR: mpirun was not found but is required for ${MeshTest_NAME}!") + message( + STATUS + "ERROR: mpirun was not found but is required for ${MeshTest_NAME}!" + ) return() endif() endif() # --- Implement testers --- if(NOT MeshTest_DIFF_DATA) - message(FATAL_ERROR "MeshTest(): ${MeshTest_NAME} - no DIFF_DATA given!") + message( + FATAL_ERROR "MeshTest(): ${MeshTest_NAME} - no DIFF_DATA given!" + ) endif() string(LENGTH "${MeshTest_DIFF_DATA}" DIFF_DATA_LENGTH) if(${DIFF_DATA_LENGTH} GREATER 7500) - message(FATAL_ERROR "${MeshTest_NAME}: DIFF_DATA to long! Consider using regex-syntax: TODO") + message( + FATAL_ERROR + "${MeshTest_NAME}: DIFF_DATA to long! Consider using regex-syntax: TODO" + ) endif() set(SELECTED_DIFF_TOOL_PATH $<TARGET_FILE:vtkdiff>) list(LENGTH MeshTest_DIFF_DATA DiffDataLength) math(EXPR DiffDataLengthMod3 "${DiffDataLength} % 3") - if (${DiffDataLengthMod3} EQUAL 0) + if(${DiffDataLengthMod3} EQUAL 0) math(EXPR DiffDataLastIndex "${DiffDataLength}-1") foreach(DiffDataIndex RANGE 0 ${DiffDataLastIndex} 4) list(GET MeshTest_DIFF_DATA "${DiffDataIndex}" REFERENCE_VTK_FILE) @@ -109,17 +137,22 @@ function (MeshTest) math(EXPR DiffDataAuxIndex "${DiffDataIndex}+2") list(GET MeshTest_DIFF_DATA "${DiffDataAuxIndex}" ABS_TOLERANCE) - list(APPEND TESTER_COMMAND "${SELECTED_DIFF_TOOL_PATH} -m \ + list( + APPEND + TESTER_COMMAND + "${SELECTED_DIFF_TOOL_PATH} -m \ ${MeshTest_SOURCE_PATH}/${REFERENCE_VTK_FILE} \ ${MeshTest_BINARY_PATH}/${VTK_FILE} \ - --abs ${ABS_TOLERANCE}") + --abs ${ABS_TOLERANCE}" + ) endforeach() - else () + else() message(FATAL_ERROR "The number of diff data arguments must be a - multiple of three: expected.vtu output.vtu absolute_tolerance.") + multiple of three: expected.vtu output.vtu absolute_tolerance." + ) endif() - ## ----------- + # ----------- if(TARGET ${MeshTest_EXECUTABLE}) set(MeshTest_EXECUTABLE_PARSED $<TARGET_FILE:${MeshTest_EXECUTABLE}>) else() @@ -138,20 +171,23 @@ function (MeshTest) if(DEFINED MeshTest_WRAPPER) set(MeshTest_WRAPPER_STRING "-${MeshTest_WRAPPER}") endif() - set(TEST_NAME "${MeshTest_EXECUTABLE}-${MeshTest_NAME}${MeshTest_WRAPPER_STRING}") + set(TEST_NAME + "${MeshTest_EXECUTABLE}-${MeshTest_NAME}${MeshTest_WRAPPER_STRING}" + ) add_test( NAME ${TEST_NAME} - COMMAND ${CMAKE_COMMAND} - -DEXECUTABLE=${MeshTest_EXECUTABLE_PARSED} - "-DEXECUTABLE_ARGS=${MeshTest_EXECUTABLE_ARGS}" # Quoted because passed as list - # see https://stackoverflow.com/a/33248574/80480 - -DBINARY_PATH=${MeshTest_BINARY_PATH} - -DWRAPPER_COMMAND=${WRAPPER_COMMAND} - "-DWRAPPER_ARGS=${MeshTest_WRAPPER_ARGS}" - "-DFILES_TO_DELETE=${FILES_TO_DELETE}" - -DSTDOUT_FILE_PATH=${MeshTest_STDOUT_FILE_PATH} - -DWORKING_DIRECTORY=${MeshTest_WORKING_DIRECTORY} - -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake + COMMAND + ${CMAKE_COMMAND} -DEXECUTABLE=${MeshTest_EXECUTABLE_PARSED} + "-DEXECUTABLE_ARGS=${MeshTest_EXECUTABLE_ARGS}" # Quoted because + # passed as list see + # https://stackoverflow.com/a/33248574/80480 + -DBINARY_PATH=${MeshTest_BINARY_PATH} + -DWRAPPER_COMMAND=${WRAPPER_COMMAND} + "-DWRAPPER_ARGS=${MeshTest_WRAPPER_ARGS}" + "-DFILES_TO_DELETE=${FILES_TO_DELETE}" + -DSTDOUT_FILE_PATH=${MeshTest_STDOUT_FILE_PATH} + -DWORKING_DIRECTORY=${MeshTest_WORKING_DIRECTORY} -P + ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake ) set_tests_properties(${TEST_NAME} PROPERTIES COST ${MeshTest_RUNTIME}) @@ -165,18 +201,17 @@ function (MeshTest) set(TESTER_NAME "${TEST_NAME}-${MeshTest_TESTER}") add_test( NAME ${TESTER_NAME} - COMMAND ${CMAKE_COMMAND} - -DSOURCE_PATH=${MeshTest_SOURCE_PATH} - -DBINARY_PATH=${${MeshTest_BINARY_PATH}} - -DSELECTED_DIFF_TOOL_PATH=${SELECTED_DIFF_TOOL_PATH} - "-DTESTER_COMMAND=${TESTER_COMMAND}" - -DVTKJS_CONVERTER=${VTKJS_CONVERTER} - -DBINARY_PATH=${MeshTest_BINARY_PATH} - -DVTKJS_OUTPUT_PATH=${PROJECT_SOURCE_DIR}/web/static/vis/${MeshTest_PATH} - "-DVIS_FILES=${MeshTest_VIS}" - -DGLOB_MODE=${GLOB_MODE} - -P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake - --debug-output + COMMAND + ${CMAKE_COMMAND} -DSOURCE_PATH=${MeshTest_SOURCE_PATH} + -DBINARY_PATH=${${MeshTest_BINARY_PATH}} + -DSELECTED_DIFF_TOOL_PATH=${SELECTED_DIFF_TOOL_PATH} + "-DTESTER_COMMAND=${TESTER_COMMAND}" + -DVTKJS_CONVERTER=${VTKJS_CONVERTER} + -DBINARY_PATH=${MeshTest_BINARY_PATH} + -DVTKJS_OUTPUT_PATH=${PROJECT_SOURCE_DIR}/web/static/vis/${MeshTest_PATH} + "-DVIS_FILES=${MeshTest_VIS}" -DGLOB_MODE=${GLOB_MODE} -P + ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake + --debug-output WORKING_DIRECTORY ${MeshTest_SOURCE_PATH} ) set_tests_properties(${TESTER_NAME} PROPERTIES DEPENDS ${TEST_NAME}) diff --git a/scripts/cmake/test/OgsTest.cmake b/scripts/cmake/test/OgsTest.cmake index 9b44e38c9b60819b94167af97c1af0e57d7efc02..44459eb41ba9ccd3079b5a0a6a19341522ea86f6 100644 --- a/scripts/cmake/test/OgsTest.cmake +++ b/scripts/cmake/test/OgsTest.cmake @@ -1,5 +1,5 @@ # cmake-lint: disable=C0103 -function (OgsTest) +function(OgsTest) if(NOT OGS_BUILD_CLI OR NOT OGS_BUILD_TESTING) return() @@ -7,18 +7,22 @@ function (OgsTest) set(options DISABLED) set(oneValueArgs PROJECTFILE RUNTIME) set(multiValueArgs WRAPPER) - cmake_parse_arguments(OgsTest "${options}" "${oneValueArgs}" - "${multiValueArgs}" ${ARGN}) + cmake_parse_arguments( + OgsTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} + ) get_filename_component(OgsTest_DIR "${OgsTest_PROJECTFILE}" DIRECTORY) get_filename_component(OgsTest_NAME "${OgsTest_PROJECTFILE}" NAME) get_filename_component(OgsTest_NAME_WE "${OgsTest_PROJECTFILE}" NAME_WE) - if (OgsTest_UNPARSED_ARGUMENTS) - message(FATAL_ERROR "Unparsed argument(s) '${OgsTest_UNPARSED_ARGUMENTS}' to OgsTest call.") + if(OgsTest_UNPARSED_ARGUMENTS) + message( + FATAL_ERROR + "Unparsed argument(s) '${OgsTest_UNPARSED_ARGUMENTS}' to OgsTest call." + ) endif() - if (NOT DEFINED OgsTest_RUNTIME) + if(NOT DEFINED OgsTest_RUNTIME) set(OgsTest_RUNTIME 1) endif() @@ -38,28 +42,33 @@ function (OgsTest) set(TEST_NAME "ogs-${OgsTest_DIR}/${OgsTest_NAME_WE}") # Add wrapper postfix (-mpi for mpirun). - if (OgsTest_WRAPPER) + if(OgsTest_WRAPPER) string(REGEX MATCH "^[^ ]+" WRAPPER ${OgsTest_WRAPPER}) - if (WRAPPER STREQUAL "mpirun") + if(WRAPPER STREQUAL "mpirun") set(TEST_NAME "${TEST_NAME}-mpi") endif() endif() add_test( - NAME ${TEST_NAME} - WORKING_DIRECTORY "${OgsTest_BINARY_DIR}" - COMMAND ${OgsTest_WRAPPER} $<TARGET_FILE:ogs> -r ${OgsTest_SOURCE_DIR} ${OgsTest_SOURCE_DIR}/${OgsTest_NAME}) - # For debugging: - #message("Adding test with - # NAME ${TEST_NAME} - # WORKING_DIRECTORY ${OgsTest_BINARY_DIR} - # COMMAND ${OgsTest_WRAPPER} $<TARGET_FILE:ogs> -r ${OgsTest_SOURCE_DIR} ${OgsTest_SOURCE_DIR}/${OgsTest_NAME}) + NAME ${TEST_NAME} WORKING_DIRECTORY "${OgsTest_BINARY_DIR}" + COMMAND ${OgsTest_WRAPPER} $<TARGET_FILE:ogs> -r ${OgsTest_SOURCE_DIR} + ${OgsTest_SOURCE_DIR}/${OgsTest_NAME} + ) + # For debugging: message("Adding test with NAME ${TEST_NAME} + # WORKING_DIRECTORY ${OgsTest_BINARY_DIR} COMMAND ${OgsTest_WRAPPER} + # $<TARGET_FILE:ogs> -r ${OgsTest_SOURCE_DIR} + # ${OgsTest_SOURCE_DIR}/${OgsTest_NAME}) current_dir_as_list(ProcessLib DIR_LABELS) - set_tests_properties(${TEST_NAME} PROPERTIES - ENVIRONMENT VTKDIFF_EXE=$<TARGET_FILE:vtkdiff> - COST ${OgsTest_RUNTIME} - DISABLED ${OgsTest_DISABLED} - LABELS "${DIR_LABELS}" + set_tests_properties( + ${TEST_NAME} + PROPERTIES ENVIRONMENT + VTKDIFF_EXE=$<TARGET_FILE:vtkdiff> + COST + ${OgsTest_RUNTIME} + DISABLED + ${OgsTest_DISABLED} + LABELS + "${DIR_LABELS}" ) endfunction() diff --git a/scripts/cmake/test/Test.cmake b/scripts/cmake/test/Test.cmake index 881fc11e731a15350a59b114a53acb47343f7515..a26a61b0f75b969beec8b5f8723fc65d4e39694f 100644 --- a/scripts/cmake/test/Test.cmake +++ b/scripts/cmake/test/Test.cmake @@ -7,22 +7,40 @@ find_program(VALGRIND_TOOL_PATH valgrind) find_program(MPIRUN_TOOL_PATH mpirun) if(NOT TIME_TOOL_PATH) - message(STATUS "time-command is required for time wrapper but was not found! All corresponding tests are disabled.") + message( + STATUS + "time-command is required for time wrapper but was not found! All corresponding tests are disabled." + ) endif() if(NOT VALGRIND_TOOL_PATH) - message(STATUS "Valgrind is required for memcheck wrapper but was not found! All corresponding tests are disabled.") + message( + STATUS + "Valgrind is required for memcheck wrapper but was not found! All corresponding tests are disabled." + ) endif() if(NOT VALGRIND_TOOL_PATH) - message(STATUS "Valgrind is required for callgrind wrapper but was not found! All corresponding tests are disabled.") + message( + STATUS + "Valgrind is required for callgrind wrapper but was not found! All corresponding tests are disabled." + ) endif() if(NOT MPIRUN_TOOL_PATH) - message(STATUS "mpirun is required for mpirun wrapper but was not found! All corresponding tests are disabled.") + message( + STATUS + "mpirun is required for mpirun wrapper but was not found! All corresponding tests are disabled." + ) endif() if(NOT DIFF_TOOL_PATH) - message(STATUS "diff-command is required for diff tester but was not found! All corresponding tests are disabled.") + message( + STATUS + "diff-command is required for diff tester but was not found! All corresponding tests are disabled." + ) endif() if(NOT GREP_TOOL_PATH) - message(STATUS "grep-command is required for memcheck tester but was not found! All corresponding tests are disabled.") + message( + STATUS + "grep-command is required for memcheck tester but was not found! All corresponding tests are disabled." + ) endif() enable_testing() # Enable CTest @@ -37,42 +55,43 @@ endif() add_custom_target(ctest-cleanup ${CMAKE_COMMAND} -E remove -f Tests/ctest.log) if(OGS_BUILD_UTILS) - list(APPEND test_dependencies - generateStructuredMesh - ) + list(APPEND test_dependencies generateStructuredMesh) endif() add_custom_target( ctest - COMMAND ${CMAKE_CTEST_COMMAND} -T Test - --force-new-ctest-process - --output-on-failure --output-log Tests/ctest.log - --exclude-regex LARGE - ${CONFIG_PARAMETER} - --timeout 900 # 15 minutes + COMMAND + ${CMAKE_CTEST_COMMAND} -T Test --force-new-ctest-process + --output-on-failure --output-log Tests/ctest.log --exclude-regex LARGE + ${CONFIG_PARAMETER} --timeout 900 # 15 minutes DEPENDS ${test_dependencies} ctest-cleanup USES_TERMINAL ) -add_custom_target(ctest-large-cleanup ${CMAKE_COMMAND} -E remove -f Tests/ctest-large.log) +add_custom_target( + ctest-large-cleanup ${CMAKE_COMMAND} -E remove -f Tests/ctest-large.log +) add_custom_target( ctest-large - COMMAND ${CMAKE_CTEST_COMMAND} -T Test - --force-new-ctest-process - --output-on-failure --output-log Tests/ctest-large.log - --tests-regex LARGE - ${CONFIG_PARAMETER} - --timeout 5400 # 90 minutes + COMMAND + ${CMAKE_CTEST_COMMAND} -T Test --force-new-ctest-process + --output-on-failure --output-log Tests/ctest-large.log --tests-regex + LARGE ${CONFIG_PARAMETER} --timeout 5400 # 90 minutes DEPENDS ${test_dependencies} ctest-large-cleanup USES_TERMINAL ) -set_directory_properties(PROPERTIES - ADDITIONAL_MAKE_CLEAN_FILES ${PROJECT_BINARY_DIR}/Tests/Data +set_directory_properties( + PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${PROJECT_BINARY_DIR}/Tests/Data ) -set_target_properties(ctest ctest-large ctest-cleanup ctest-large-cleanup - PROPERTIES FOLDER Testing) +set_target_properties( + ctest ctest-large ctest-cleanup ctest-large-cleanup PROPERTIES FOLDER + Testing +) -configure_file(${PROJECT_SOURCE_DIR}/scripts/test/buildinfo.in.yaml ${PROJECT_BINARY_DIR}/buildinfo.yaml) +configure_file( + ${PROJECT_SOURCE_DIR}/scripts/test/buildinfo.in.yaml + ${PROJECT_BINARY_DIR}/buildinfo.yaml +) diff --git a/scripts/hooks/pre-commit-cmake-format.sh b/scripts/hooks/pre-commit-cmake-format.sh deleted file mode 100755 index 785a6cb5b6a1d5c64fe413895fd17d039aaa9dec..0000000000000000000000000000000000000000 --- a/scripts/hooks/pre-commit-cmake-format.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash - -EXE=$(command -v cmake-format) -if [ -z "$EXE" ]; then - echo "cmake-format not found; skipping check." - exit 0 -fi - - -MOD_FILES="" - -MOD_FILES=() -for FILE in "$@" -do - cmake-format -i "$FILE" - MODIFIED=$(git status --porcelain "$FILE" | head -c 2 | tail -c 1) - # echo $FILE: $MODIFIED - if [ "$MODIFIED" = "M" ]; then - MOD_FILES+=("$FILE") - echo "Fixed $FILE" - fi -done - -if [ -z "$MOD_FILES" ]; then - exit 0 -fi - -echo "CMake files have been modified." -echo "Add them to the commit!" -exit 1