From: Drew Parsons <dparsons@debian.org>
Date: Fri, 8 Sep 2023 21:05:21 +0200
Subject: vary install path according to the flavor and library suffix

records ADIOS2_LIBRARY_SUFFIX in installed cmake config files
(adios2-config-common.cmake) and defines ADIOS2_LIBRARY_FLAVOR
removing leading _underscore.
---
 CMakeLists.txt                      | 5 ++++-
 bindings/C/CMakeLists.txt           | 2 +-
 bindings/CXX11/CMakeLists.txt       | 2 +-
 cmake/adios2-config-common.cmake.in | 5 +++++
 source/adios2/CMakeLists.txt        | 3 +++
 source/h5vol/CMakeLists.txt         | 8 ++++++++
 6 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0573629..7de9ca7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -271,8 +271,11 @@ configure_file(
   @ONLY
 )
 
+if(ADIOS2_LIBRARY_FLAVOR)
+  set(ADIOS2_INCLUDEDIR_FLAVOR /adios2/build/${ADIOS2_LIBRARY_FLAVOR})
+endif()
 install(FILES ${PROJECT_BINARY_DIR}/source/adios2/common/ADIOSConfig.h
-  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/adios2/common
+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}${ADIOS2_INCLUDEDIR_FLAVOR}/adios2/common
   COMPONENT adios2_core-development
 )
 
diff --git a/bindings/C/CMakeLists.txt b/bindings/C/CMakeLists.txt
index 52eba4f..e7eaa11 100644
--- a/bindings/C/CMakeLists.txt
+++ b/bindings/C/CMakeLists.txt
@@ -21,7 +21,7 @@ target_include_directories(adios2_c
     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
     $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
   INTERFACE
-    $<BUILD_INTERFACE:$<TARGET_PROPERTY:adios2_core,INTERFACE_INCLUDE_DIRECTORIES>>
+    $<TARGET_PROPERTY:adios2_core,INTERFACE_INCLUDE_DIRECTORIES>
 )
 
 add_library(adios2::c ALIAS adios2_c)
diff --git a/bindings/CXX11/CMakeLists.txt b/bindings/CXX11/CMakeLists.txt
index 76cf761..f40b1aa 100644
--- a/bindings/CXX11/CMakeLists.txt
+++ b/bindings/CXX11/CMakeLists.txt
@@ -32,7 +32,7 @@ target_include_directories(adios2_cxx11
     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
     $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
   INTERFACE
-    $<BUILD_INTERFACE:$<TARGET_PROPERTY:adios2_core,INTERFACE_INCLUDE_DIRECTORIES>>
+    $<TARGET_PROPERTY:adios2_core,INTERFACE_INCLUDE_DIRECTORIES>
 )
 
 add_library(adios2::cxx11 ALIAS adios2_cxx11)
diff --git a/cmake/adios2-config-common.cmake.in b/cmake/adios2-config-common.cmake.in
index 23f31b0..a16b9ed 100644
--- a/cmake/adios2-config-common.cmake.in
+++ b/cmake/adios2-config-common.cmake.in
@@ -10,6 +10,11 @@ if(POLICY CMP0074)
   cmake_policy(SET CMP0074 NEW)
 endif()
 
+set(ADIOS2_LIBRARY_SUFFIX @ADIOS2_LIBRARY_SUFFIX@)
+if(ADIOS2_LIBRARY_SUFFIX)
+  string(REPLACE "_" "" ADIOS2_LIBRARY_FLAVOR ${ADIOS2_LIBRARY_SUFFIX})
+endif()
+
 set(ADIOS2_HAVE_Fortran @ADIOS2_HAVE_Fortran@)
 set(ADIOS2_HAVE_MPI @ADIOS2_HAVE_MPI@)
 set(ADIOS2_HAVE_CUDA @ADIOS2_HAVE_CUDA@)
diff --git a/source/adios2/CMakeLists.txt b/source/adios2/CMakeLists.txt
index 99b4135..40092de 100644
--- a/source/adios2/CMakeLists.txt
+++ b/source/adios2/CMakeLists.txt
@@ -217,6 +217,9 @@ target_include_directories(adios2_core
     $<BUILD_INTERFACE:${ADIOS2_SOURCE_DIR}/source>
     $<BUILD_INTERFACE:${ADIOS2_BINARY_DIR}/source>
 )
+if(ADIOS2_INCLUDEDIR_FLAVOR)
+  target_include_directories(adios2_core BEFORE PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}${ADIOS2_INCLUDEDIR_FLAVOR}>)
+endif()
 target_link_libraries(adios2_core PRIVATE
   adios2sys_interface
   adios2::thirdparty::pugixml
diff --git a/source/h5vol/CMakeLists.txt b/source/h5vol/CMakeLists.txt
index e8c2ce4..d771f45 100644
--- a/source/h5vol/CMakeLists.txt
+++ b/source/h5vol/CMakeLists.txt
@@ -32,6 +32,14 @@ add_library(adios2_h5vol
   H5Vol_link.c
   H5Vol_object.c
 )
+set_property(TARGET adios2_h5vol PROPERTY OUTPUT_NAME adios2${ADIOS2_LIBRARY_SUFFIX}_h5vol)
+set_target_properties(
+  adios2_h5vol
+  PROPERTIES
+  VERSION ${ADIOS2_LIBRARY_VERSION}
+  SOVERSION ${ADIOS2_LIBRARY_SOVERSION}
+)
+
 target_include_directories(adios2_h5vol PRIVATE ${HDF5_C_INCLUDE_DIRS})	 
 target_link_libraries(adios2_h5vol PRIVATE
   ${HDF5_C_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}
