From e5cee8dc7345d3393028f157c4fd1e4220ebd062 Mon Sep 17 00:00:00 2001 From: Lars Bilke <lars.bilke@ufz.de> Date: Fri, 7 May 2021 13:30:40 +0200 Subject: [PATCH] [cm] petsc imported target. Simplifies handling in CMake. Just link to petsc-target. --- Applications/ApplicationsLib/CMakeLists.txt | 6 ++---- Applications/CLI/CMakeLists.txt | 6 ++---- BaseLib/CMakeLists.txt | 2 +- MathLib/CMakeLists.txt | 9 +-------- MeshLib/CMakeLists.txt | 2 +- NumLib/CMakeLists.txt | 7 ++----- ProcessLib/CMakeLists.txt | 4 ++-- Tests/CMakeLists.txt | 5 +---- scripts/cmake/Find.cmake | 5 ++++- 9 files changed, 16 insertions(+), 30 deletions(-) diff --git a/Applications/ApplicationsLib/CMakeLists.txt b/Applications/ApplicationsLib/CMakeLists.txt index efef4eb9b17..8ba2d863897 100644 --- a/Applications/ApplicationsLib/CMakeLists.txt +++ b/Applications/ApplicationsLib/CMakeLists.txt @@ -16,16 +16,14 @@ target_link_libraries( ProcessLib spdlog::spdlog $<$<BOOL:${OGS_USE_PYTHON}>:pybind11::pybind11> + $<$<BOOL:${OGS_USE_PETSC}>:petsc> ) if(OGS_USE_LIS) target_include_directories(ApplicationsLib PUBLIC ${LIS_INCLUDE_DIR}) endif() -target_compile_definitions( - ApplicationsLib PUBLIC $<$<BOOL:${USE_LIS}>:USE_LIS> - $<$<BOOL:${OGS_USE_PETSC}>:USE_PETSC> -) +target_compile_definitions(ApplicationsLib PUBLIC $<$<BOOL:${USE_LIS}>:USE_LIS>) # Set cpp definitions if the cmake option is enabled for the given process. foreach(process ${_processes_list}) diff --git a/Applications/CLI/CMakeLists.txt b/Applications/CLI/CMakeLists.txt index cfd5b09be80..0bbbf41a4ed 100644 --- a/Applications/CLI/CMakeLists.txt +++ b/Applications/CLI/CMakeLists.txt @@ -61,13 +61,11 @@ target_link_libraries( $<$<TARGET_EXISTS:ogs_embedded_python>:ogs_embedded_python> $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX> $<$<TARGET_EXISTS:InSituLib>:InSituLib> + $<$<TARGET_EXISTS:petsc>:petsc> 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>) # ---- Tests ---- add_test(NAME ogs_no_args COMMAND ogs) diff --git a/BaseLib/CMakeLists.txt b/BaseLib/CMakeLists.txt index 77d904ff5eb..be3eab56e93 100644 --- a/BaseLib/CMakeLists.txt +++ b/BaseLib/CMakeLists.txt @@ -16,10 +16,10 @@ target_link_libraries( $<$<BOOL:${MSVC}>:WinMM> # needed for timeGetTime $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::Xml> $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::XmlPatterns> + $<$<BOOL:${OGS_USE_PETSC}>:petsc> PRIVATE xmlpatch ) target_compile_definitions( BaseLib PUBLIC $<$<BOOL:${OGS_FATAL_ABORT}>:OGS_FATAL_ABORT> - PRIVATE $<$<BOOL:${OGS_USE_PETSC}>:USE_PETSC> ) diff --git a/MathLib/CMakeLists.txt b/MathLib/CMakeLists.txt index 224123d70f3..4f52278230d 100644 --- a/MathLib/CMakeLists.txt +++ b/MathLib/CMakeLists.txt @@ -22,10 +22,6 @@ 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}> -) set_target_properties(MathLib PROPERTIES LINKER_LANGUAGE CXX) @@ -36,13 +32,11 @@ target_link_libraries( $<$<TARGET_EXISTS:LAPACK::LAPACK>:LAPACK::LAPACK> $<$<BOOL:${OGS_USE_LIS}>:${LIS_LIBRARIES}> $<$<BOOL:${OGS_USE_CVODE}>:CVODE::CVODE> + $<$<BOOL:${OGS_USE_PETSC}>:petsc> Eigen3::Eigen PRIVATE spdlog::spdlog ) -if(OGS_USE_PETSC) - target_link_libraries(MathLib PUBLIC ${PETSC_LIBRARIES}) -endif() if(OGS_USE_LIS) target_include_directories(MathLib PUBLIC ${LIS_INCLUDE_DIR}) endif() @@ -55,7 +49,6 @@ target_compile_definitions( MathLib PUBLIC $<$<BOOL:${USE_LIS}>:USE_LIS> - $<$<BOOL:${OGS_USE_PETSC}>:USE_PETSC> $<$<BOOL:${OGS_USE_CVODE}>:CVODE_FOUND> $<$<BOOL:${EIGEN_NO_DEBUG}>:EIGEN_NO_DEBUG> $<$<BOOL:${EIGEN_DONT_VECTORIZE}>:EIGEN_DONT_VECTORIZE> diff --git a/MeshLib/CMakeLists.txt b/MeshLib/CMakeLists.txt index 04c4e50e1c3..e88a2e9cfc4 100644 --- a/MeshLib/CMakeLists.txt +++ b/MeshLib/CMakeLists.txt @@ -41,6 +41,7 @@ target_link_libraries( ${VTK_LIBRARIES} $<$<TARGET_EXISTS:OgsXdmf>:OgsXdmf> $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX> + $<$<TARGET_EXISTS:petsc>:petsc> PRIVATE spdlog::spdlog ) @@ -49,7 +50,6 @@ target_include_directories(MeshLib PUBLIC ${VTK_INCLUDE_DIRS}) 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> ) diff --git a/NumLib/CMakeLists.txt b/NumLib/CMakeLists.txt index b846cf5cc00..6fd30aa6110 100644 --- a/NumLib/CMakeLists.txt +++ b/NumLib/CMakeLists.txt @@ -15,12 +15,9 @@ append_source_files(SOURCES Extrapolation) # Create the library ogs_add_library(NumLib ${SOURCES}) -if(OGS_USE_PETSC) - target_compile_definitions(NumLib PUBLIC USE_PETSC) -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 $<$<TARGET_EXISTS:petsc>:petsc> + PRIVATE MeshGeoToolsLib spdlog::spdlog ) diff --git a/ProcessLib/CMakeLists.txt b/ProcessLib/CMakeLists.txt index aec3f549ad9..e9d496842f9 100644 --- a/ProcessLib/CMakeLists.txt +++ b/ProcessLib/CMakeLists.txt @@ -33,6 +33,7 @@ target_link_libraries( NumLib $<$<TARGET_EXISTS:ProcessLibBoundaryConditionPython>:ProcessLibBoundaryConditionPython> $<$<TARGET_EXISTS:ProcessLibSourceTermPython>:ProcessLibSourceTermPython> + $<$<TARGET_EXISTS:petsc>:petsc> nlohmann_json PRIVATE ParameterLib GitInfoLib spdlog::spdlog $<$<TARGET_EXISTS:InSituLib>:InSituLib> @@ -40,8 +41,7 @@ target_link_libraries( target_compile_definitions( ProcessLib - PUBLIC $<$<BOOL:${OGS_USE_PETSC}>:USE_PETSC> - $<$<BOOL:${OGS_USE_XDMF}>:OGS_USE_XDMF> + PUBLIC $<$<BOOL:${OGS_USE_XDMF}>:OGS_USE_XDMF> # Enabled elements OGS_MAX_ELEMENT_DIM=${OGS_MAX_ELEMENT_DIM} OGS_MAX_ELEMENT_ORDER=${OGS_MAX_ELEMENT_ORDER} diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index d9b3e85e6d1..308443f9705 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -80,12 +80,9 @@ target_link_libraries( $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX> $<$<TARGET_EXISTS:SwmmInterface>:SwmmInterface> $<$<TARGET_EXISTS:InSituLib>:InSituLib> + $<$<TARGET_EXISTS:petsc>:petsc> ) -if(OGS_USE_PETSC) - target_link_libraries(testrunner PRIVATE ${PETSC_LIBRARIES}) -endif() - if(OGS_BUILD_GUI) target_compile_definitions(testrunner PUBLIC OGS_BUILD_GUI) target_link_libraries( diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake index c9cbd7f54ed..faac5224537 100644 --- a/scripts/cmake/Find.cmake +++ b/scripts/cmake/Find.cmake @@ -133,7 +133,10 @@ if(OGS_USE_PETSC) find_package(PETSc ${ogs.minimum_version.petsc} REQUIRED) - include_directories(SYSTEM ${PETSC_INCLUDES}) + add_library(petsc SHARED IMPORTED) + target_include_directories(petsc INTERFACE ${PETSC_INCLUDES}) + set_target_properties(petsc PROPERTIES IMPORTED_LOCATION ${PETSC_LIBRARIES}) + target_compile_definitions(petsc INTERFACE USE_PETSC) endif() # Check MPI package -- GitLab