From cc476439811fc8ca93f19d00d9906e4d98dbe9dd Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Wed, 13 Dec 2023 18:47:55 +0100
Subject: [PATCH] [cmake] Replaced petsc interface target by PkgConfig::PETSC.

---
 Applications/ApplicationsLib/CMakeLists.txt   |  2 +-
 BaseLib/CMakeLists.txt                        |  2 +-
 MathLib/CMakeLists.txt                        |  2 +-
 .../cmake/DependenciesExternalProject.cmake   | 21 +++++--------------
 4 files changed, 8 insertions(+), 19 deletions(-)

diff --git a/Applications/ApplicationsLib/CMakeLists.txt b/Applications/ApplicationsLib/CMakeLists.txt
index 512ddb5a72a..b4e25fcce00 100644
--- a/Applications/ApplicationsLib/CMakeLists.txt
+++ b/Applications/ApplicationsLib/CMakeLists.txt
@@ -10,7 +10,7 @@ target_link_libraries(
     PUBLIC BaseLib GeoLib NumLib
            $<$<TARGET_EXISTS:VTK::ParallelMPI>:VTK::ParallelMPI>
     PRIVATE CMakeInfoLib MathLib MeshLib MeshGeoToolsLib MeshToolsLib pybind11::pybind11
-            $<$<BOOL:${OGS_USE_PETSC}>:petsc>
+            $<$<BOOL:${OGS_USE_PETSC}>:PkgConfig::PETSC>
 )
 
 if(OGS_BUILD_CLI OR OGS_BUILD_UTILS OR OGS_BUILD_TESTING)
diff --git a/BaseLib/CMakeLists.txt b/BaseLib/CMakeLists.txt
index 6e331a4ee6e..019bb739d23 100644
--- a/BaseLib/CMakeLists.txt
+++ b/BaseLib/CMakeLists.txt
@@ -16,7 +16,7 @@ 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>
+           $<$<BOOL:${OGS_USE_PETSC}>:PkgConfig::PETSC>
     PRIVATE xmlpatch
 )
 
diff --git a/MathLib/CMakeLists.txt b/MathLib/CMakeLists.txt
index 80187fb711c..ca6bd559cd4 100644
--- a/MathLib/CMakeLists.txt
+++ b/MathLib/CMakeLists.txt
@@ -31,7 +31,7 @@ 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>
+           $<$<BOOL:${OGS_USE_PETSC}>:PkgConfig::PETSC>
            $<$<BOOL:${OGS_USE_MKL}>:MKL::MKL>
            Eigen3::Eigen
            $<$<TARGET_EXISTS:OpenMP::OpenMP_CXX>:OpenMP::OpenMP_CXX>
diff --git a/scripts/cmake/DependenciesExternalProject.cmake b/scripts/cmake/DependenciesExternalProject.cmake
index 0501a65da86..093a0318947 100644
--- a/scripts/cmake/DependenciesExternalProject.cmake
+++ b/scripts/cmake/DependenciesExternalProject.cmake
@@ -143,7 +143,7 @@ if(OGS_USE_PETSC)
         set(_petsc_source URL ${_petsc_source_file})
     elseif(NOT (OGS_PETSC_CONFIG_OPTIONS OR OGS_BUILD_PETSC))
         find_package(PkgConfig REQUIRED)
-        pkg_search_module(PETSC REQUIRED PETSc)
+        pkg_search_module(PETSC IMPORTED_TARGET PETSc)
     endif()
 
     if(NOT PETSC_FOUND)
@@ -173,23 +173,12 @@ if(OGS_USE_PETSC)
                 "ExternalProject_Add(): added package PETSc@${ogs.minimum_version.petsc}"
         )
         set(_EXT_LIBS ${_EXT_LIBS} PETSc CACHE INTERNAL "")
-        BuildExternalProject_find_package(PETSc)
+        set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${build_dir_PETSc})
     endif()
 
-    add_library(petsc SHARED IMPORTED)
-    target_include_directories(petsc INTERFACE ${PETSC_INCLUDES} ${PETSC_INCLUDE_DIRS})
-    if("PETSc" IN_LIST _EXT_LIBS)
-        # Get first petsc lib as import location
-        list(GET PETSC_LIBRARIES 0 _first_petsc_lib)
-        set_target_properties(
-            petsc PROPERTIES IMPORTED_LOCATION ${_first_petsc_lib}
-        )
-    else()
-        set_target_properties(
-            petsc PROPERTIES IMPORTED_LOCATION ${pkgcfg_lib_PETSC_petsc}
-        )
-    endif()
-    target_compile_definitions(petsc INTERFACE USE_PETSC)
+    find_package(PkgConfig REQUIRED)
+    pkg_search_module(PETSC REQUIRED IMPORTED_TARGET PETSc)
+    target_compile_definitions(PkgConfig::PETSC INTERFACE USE_PETSC)
 endif()
 
 if(OGS_USE_LIS)
-- 
GitLab