File 0001-Use-separate-CMake-EXPORT-sets-for-independent-targe.patch of Package qhull

From 548df3c071ae1de850c260c9cf10da401d347730 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
Date: Sat, 25 Jan 2025 12:56:06 +0100
Subject: [PATCH] Use separate CMake EXPORT sets for independent targets

---
 CMakeLists.txt        | 49 ++++++++++++++++++++++++++-----------------
 build/config.cmake.in | 22 ++++++++++++++++++-
 2 files changed, 51 insertions(+), 20 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 553166e..9478a52 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -107,6 +107,7 @@ check_lfs(WITH_LFS)
 include(CMakeDependentOption)
 option(BUILD_STATIC_LIBS "Build static libraries" ON)
 option(BUILD_SHARED_LIBS "Build shared library" ON)
+option(BUILD_QHULLCPP "Build QHULL C++ library" ON)
 set(_NO_STATIC_LIBS NOCACHE INTERNAL (NOT ${BUILD_STATIC_LIBS}))
 cmake_dependent_option(LINK_APPS_SHARED "Use shared library for linking applications"
     _NO_STATIC_LIBS
@@ -343,7 +344,7 @@ set(qhull_SHARED libqhull)  # Temporarily avoid name conflict with qhull executa
 set(qhull_SHAREDP qhull_p)  # libqhull and qhull_p are deprecated, use qhull_r instead
 
 set(qhull_TARGETS_APPLICATIONS qhull rbox qconvex qdelaunay qvoronoi qhalf)
-set(qhull_TARGETS_STATIC ${qhull_CPP} ${qhull_STATIC} ${qhull_STATICR})
+set(qhull_TARGETS_STATIC ${qhull_STATIC} ${qhull_STATICR})
 set(qhull_TARGETS_SHARED ${qhull_SHAREDR})
 
 set(
@@ -466,14 +467,21 @@ set_target_properties(${qhull_CPP} PROPERTIES
     VERSION ${qhull_VERSION}
     OUTPUT_NAME "${qhull_CPP}$<$<CONFIG:Debug>:_d>"
     POSITION_INDEPENDENT_CODE "TRUE")
+if (BUILD_SHARED_LIBS)
+    target_link_libraries(${qhull_CPP} PRIVATE ${qhull_SHAREDR})
+else()
+    target_link_libraries(${qhull_CPP} PRIVATE ${qhull_STATICR})
+endif()
 
 # ---------------------------------------
-# if BUILD_STATIC_LIBS=OFF or BUILD_SHARED_LIBS=OFF
-#   Exclude library builds from "make all" 
+# if BUILD_STATIC_LIBS=OFF, BUILD_SHARED_LIBS=OFF, BUILD_QHULLCPP=OFF
+#   Exclude corresponding library builds from "make all" 
 # ---------------------------------------
 if(NOT ${BUILD_STATIC_LIBS})
     set_target_properties(${qhull_STATIC} PROPERTIES EXCLUDE_FROM_ALL TRUE)
     set_target_properties(${qhull_STATICR} PROPERTIES EXCLUDE_FROM_ALL TRUE)
+endif()
+if(NOT ${BUILD_QHULLCPP})
     set_target_properties(${qhull_CPP} PROPERTIES EXCLUDE_FROM_ALL TRUE)
 endif()
 if(NOT ${BUILD_SHARED_LIBS})
@@ -677,20 +685,37 @@ endif()
 # Define install
 # ---------------------------------------
 
+set(ConfigPackageLocation lib/cmake/Qhull)
+
 install(TARGETS ${qhull_TARGETS_APPLICATIONS} EXPORT
         RUNTIME DESTINATION ${BIN_INSTALL_DIR})
 
 if (BUILD_SHARED_LIBS)
-    install(TARGETS ${qhull_TARGETS_SHARED} EXPORT QhullTargets
+    install(TARGETS ${qhull_TARGETS_SHARED} EXPORT QhullTargetsShared
             LIBRARY DESTINATION ${LIB_INSTALL_DIR}
             ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
             INCLUDES DESTINATION include)
+    install(EXPORT QhullTargetsShared
+            NAMESPACE Qhull::
+            DESTINATION ${ConfigPackageLocation})
 endif()
 if (BUILD_STATIC_LIBS)
-    install(TARGETS ${qhull_TARGETS_STATIC} EXPORT QhullTargets
+    install(TARGETS ${qhull_TARGETS_STATIC} EXPORT QhullTargetsStatic
+            LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+            ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+            INCLUDES DESTINATION include)
+    install(EXPORT QhullTargetsStatic
+            NAMESPACE Qhull::
+            DESTINATION ${ConfigPackageLocation})
+endif()
+if (BUILD_QHULLCPP)
+    install(TARGETS ${qhull_CPP} EXPORT QhullTargetsCpp
             LIBRARY DESTINATION ${LIB_INSTALL_DIR}
             ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
             INCLUDES DESTINATION include)
+    install(EXPORT QhullTargetsCpp
+            NAMESPACE Qhull::
+            DESTINATION ${ConfigPackageLocation})
 endif()
 
 include(CMakePackageConfigHelpers)
@@ -701,25 +726,11 @@ write_basic_package_version_file(
     COMPATIBILITY AnyNewerVersion
 )
 
-export(EXPORT QhullTargets
-  FILE "${CMAKE_CURRENT_BINARY_DIR}/QhullExport/QhullTargets.cmake"
-  NAMESPACE Qhull:: 
-)
-
 configure_file(${PROJECT_SOURCE_DIR}/build/config.cmake.in
   "${CMAKE_CURRENT_BINARY_DIR}/QhullExport/QhullConfig.cmake"
   @ONLY
 )
 
-set(ConfigPackageLocation lib/cmake/Qhull)
-install(EXPORT QhullTargets
-  FILE
-    QhullTargets.cmake
-  NAMESPACE
-    Qhull::
-  DESTINATION
-    ${ConfigPackageLocation}
-)
 install(
   FILES
     "${CMAKE_CURRENT_BINARY_DIR}/QhullExport/QhullConfig.cmake"
diff --git a/build/config.cmake.in b/build/config.cmake.in
index 63183ce..3741228 100644
--- a/build/config.cmake.in
+++ b/build/config.cmake.in
@@ -1 +1,21 @@
-include("${CMAKE_CURRENT_LIST_DIR}/QhullTargets.cmake")
+set(_targets)
+
+if (@BUILD_SHARED_LIBS@)
+    include("${CMAKE_CURRENT_LIST_DIR}/QhullTargetsShared.cmake" OPTIONAL)
+    list(APPEND _targets Qhull::@qhull_SHAREDR@)
+endif()
+if (@BUILD_STATIC_LIBS@)
+    include("${CMAKE_CURRENT_LIST_DIR}/QhullTargetsStatic.cmake" OPTIONAL)
+    list(APPEND _targets Qhull::@qhull_STATICR@)
+endif()
+if (@BUILD_QHULLCPP@)
+    include("${CMAKE_CURRENT_LIST_DIR}/QhullTargetsCpp.cmake" OPTIONAL)
+    list(APPEND _targets Qhull::@qhull_CPP@)
+endif()
+
+set(Qhull_FOUND FALSE)
+foreach(_target IN ITEMS ${_targets})
+    if (TARGET ${_target})
+        set(Qhull_FOUND TRUE)
+    endif()
+endforeach()
-- 
2.48.1

openSUSE Build Service is sponsored by