diff --git a/.cmake-format.yaml b/.cmake-format.yaml index fb5a054abb7b594535793ccf668d9ac1324d34b8..9ba31532c80a408a7200f2967aa328f01246a7f3 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,6 +11,10 @@ lint: - "C0113" # Missing COMMAND for optional dependencies. parse: + vartags: + - !!python/tuple + - set_property + - - cmdline additional_commands: addtest: pargs: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4fe13c3021404cdbc58145a891bfc6aad346414e..8857ae305b4b9b48d7582832d36f3bccd74a7857 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: 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()