upstream: fix: multiarch: file-conflict
authorJerome Benoit <calculus@rezozer.net>
Mon, 15 Jul 2024 21:11:34 +0000 (21:11 +0000)
committerJerome Benoit <calculus@rezozer.net>
Mon, 15 Jul 2024 21:11:34 +0000 (21:11 +0000)
Origin: debian
Forwarded: https://github.com/igraph/igraph/pull/2372
Last-Update: 2024-07-15

This patch installs architecture/built specific C headers
in a per-architecture location to avoid conflict on multiarch
systems. It is meant to be submitted to the upstream maintainer.

Gbp-Pq: Name upstream-fix-multiarch-file_conflict.patch

etc/cmake/pkgconfig_helpers.cmake
igraph.pc.in
src/CMakeLists.txt

index d0d9ecb0ab433277ab840cb95226d3e1f1f491a6..a410a6126c98bbc38c007037b99fe00ffb3c419f 100644 (file)
@@ -68,6 +68,11 @@ endif()
 
 join_paths(PKGCONFIG_LIBDIR "\${exec_prefix}" "${CMAKE_INSTALL_LIBDIR}")
 join_paths(PKGCONFIG_INCLUDEDIR "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}")
+join_paths(PKGCONFIG_CFLAGS_ONLY_I "-I\${includedir}" "igraph")
+if(CMAKE_LIBRARY_ARCHITECTURE)
+  join_paths(PKGCONFIG_CFLAGS_ONLY_I_ARCH "-I\${includedir}" "${CMAKE_LIBRARY_ARCHITECTURE}" "igraph")
+  set(PKGCONFIG_CFLAGS_ONLY_I "${PKGCONFIG_CFLAGS_ONLY_I_ARCH} ${PKGCONFIG_CFLAGS_ONLY_I}")
+endif()
 configure_file(
   ${PROJECT_SOURCE_DIR}/igraph.pc.in
   ${PROJECT_BINARY_DIR}/igraph.pc
index f869537d6336b6c9a244b8be378f459bcccce1de..2edd6de734467fb5b45228a783795c39253d6071 100644 (file)
@@ -10,4 +10,4 @@ URL: @PROJECT_HOMEPAGE_URL@
 Libs: -L${libdir} -ligraph
 Libs.private: @PKGCONFIG_LIBS_PRIVATE@
 Requires.private: @PKGCONFIG_REQUIRES_PRIVATE@
-Cflags: -I${includedir}/igraph
+Cflags: @PKGCONFIG_CFLAGS_ONLY_I@
index 16f3c574ee93dc25386ee347a17537f4524d08ec..e80eca69d5322f3a1c90a5f0a6d140fcdd2d48c4 100644 (file)
@@ -375,6 +375,14 @@ target_include_directories(
   "$<$<BOOL:${PLFIT_INCLUDE_DIRS}>:${PLFIT_INCLUDE_DIRS}>"
 )
 
+if(CMAKE_LIBRARY_ARCHITECTURE)
+  target_include_directories(
+    igraph
+    PUBLIC
+    $<INSTALL_INTERFACE:include/${CMAKE_LIBRARY_ARCHITECTURE}/igraph>
+  )
+endif()
+
 if(MATH_LIBRARY)
   target_link_libraries(igraph PUBLIC ${MATH_LIBRARY})
 endif()
@@ -431,6 +439,11 @@ use_all_warnings(igraph)
 # GNUInstallDirs be included before generating the pkgconfig file, as it defines
 # CMAKE_INSTALL_LIBDIR and CMAKE_INSTALL_INCLUDEDIR variables.
 include(GNUInstallDirs)
+if(CMAKE_LIBRARY_ARCHITECTURE)
+  set(CMAKE_INSTALL_INCLUDEDIR_ARCHITECTURE "${CMAKE_INSTALL_INCLUDEDIR}/${CMAKE_LIBRARY_ARCHITECTURE}")
+else()
+  set(CMAKE_INSTALL_INCLUDEDIR_ARCHITECTURE "${CMAKE_INSTALL_INCLUDEDIR}")
+endif()
 
 # Generate pkgconfig file
 include(pkgconfig_helpers)
@@ -474,7 +487,7 @@ install(
 )
 install(
   DIRECTORY ${PROJECT_BINARY_DIR}/include/
-  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/igraph
+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR_ARCHITECTURE}/igraph
   FILES_MATCHING PATTERN "*.h"
 )
 install(