From 710b5ef4876ad0ab737f9ba2f814feb9e830159e Mon Sep 17 00:00:00 2001
From: Florent Pruvost <florent.pruvost@inria.fr>
Date: Mon, 17 Jun 2024 16:53:53 +0200
Subject: [PATCH] ci: fix missing targets during cmake export and pkg-config

---
 CMakeLists.txt                         | 10 +++++++++-
 cmake_modules/CHAMELEONConfig.cmake.in | 10 ++++++++++
 cmake_modules/GenPkgConfig.cmake       | 16 +++++++++++++---
 gpuhipblas/compute/CMakeLists.txt      |  3 ++-
 4 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 44b3fff3f..3892d9b94 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -262,8 +262,10 @@ endif()
 
 # Option to activate or not simulation mode (use Simgrid through StarPU)
 # ----------------------------------------------------------------------
+cmake_dependent_option(CHAMELEON_SIMULATION
+"Enable simulation mode using Simgrid through StarPU" OFF
+"CHAMELEON_SCHED_STARPU" OFF)
 if(CHAMELEON_SCHED_STARPU)
-    option(CHAMELEON_SIMULATION "Enable simulation mode using Simgrid through StarPU" OFF)
     if (NOT CHAMELEON_SIMULATION)
         message("-- ${BoldGreen}CHAMELEON_SIMULATION is set to OFF, turn it ON to use"
             " SIMULATION mode (only with StarPU compiled with SimGrid)${ColourReset}")
@@ -529,6 +531,12 @@ if(NOT CHAMELEON_SIMULATION)
 
             morse_export_imported_target(HIP HIP hip chameleon)
             morse_export_imported_target(HIP HIPBLAS hipblas chameleon)
+            if (CHAMELEON_USE_HIP_ROC)
+                morse_export_imported_target(roc hipblas rochipblas chameleon)
+                morse_export_imported_target(hip host hiphost chameleon)
+                morse_export_imported_target(hip device hipdevice chameleon)
+                morse_export_imported_target(hip amdhip64 hipamdhip64 chameleon)
+            endif()
         else(HIP_FOUND)
             message(FATAL_ERROR "CHAMELEON_USE_HIP requires HIP to be found")
         endif (HIP_FOUND)
diff --git a/cmake_modules/CHAMELEONConfig.cmake.in b/cmake_modules/CHAMELEONConfig.cmake.in
index b1f50a438..2346b326c 100644
--- a/cmake_modules/CHAMELEONConfig.cmake.in
+++ b/cmake_modules/CHAMELEONConfig.cmake.in
@@ -37,6 +37,16 @@ if (@CHAMELEON_USE_CUDA@ AND NOT @CHAMELEON_SIMULATION@)
   include("${CMAKE_CURRENT_LIST_DIR}/cudaTargets.cmake")
   include("${CMAKE_CURRENT_LIST_DIR}/cublasTargets.cmake")
 endif()
+if (@CHAMELEON_USE_HIP@ AND NOT @CHAMELEON_SIMULATION@)
+  include("${CMAKE_CURRENT_LIST_DIR}/hipTargets.cmake")
+  include("${CMAKE_CURRENT_LIST_DIR}/hipblasTargets.cmake")
+  if (@CHAMELEON_USE_HIP_ROC@)
+    include("${CMAKE_CURRENT_LIST_DIR}/rochipblasTargets.cmake")
+    include("${CMAKE_CURRENT_LIST_DIR}/hiphostTargets.cmake")
+    include("${CMAKE_CURRENT_LIST_DIR}/hipdeviceTargets.cmake")
+    include("${CMAKE_CURRENT_LIST_DIR}/hipamdhip64Targets.cmake")
+  endif()
+endif()
 
 # add the targets file
 if (@CHAMELEON_USE_HMATOSS@)
diff --git a/cmake_modules/GenPkgConfig.cmake b/cmake_modules/GenPkgConfig.cmake
index 4cdb04163..37bbfb8c1 100644
--- a/cmake_modules/GenPkgConfig.cmake
+++ b/cmake_modules/GenPkgConfig.cmake
@@ -128,10 +128,20 @@ MACRO(GENERATE_PKGCONFIG_FILE)
         list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${QUARK_LIBRARIES_DEP}")
     elseif(CHAMELEON_SCHED_STARPU)
         list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_starpu)
-        if ( CHAMELEON_USE_MPI )
-            list(APPEND CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE starpumpi-${CHAMELEON_STARPU_VERSION})
+        if ( CHAMELEON_SIMULATION )
+            # need PUBLIC here because simulation mode with starpu requires to replace the
+            # main function by a starpu main one
+            if ( CHAMELEON_USE_MPI )
+                list(APPEND CHAMELEON_PKGCONFIG_REQUIRED starpumpi-${CHAMELEON_STARPU_VERSION})
+            else()
+                list(APPEND CHAMELEON_PKGCONFIG_REQUIRED starpu-${CHAMELEON_STARPU_VERSION})
+            endif()
         else()
-            list(APPEND CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE starpu-${CHAMELEON_STARPU_VERSION})
+            if ( CHAMELEON_USE_MPI )
+                list(APPEND CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE starpumpi-${CHAMELEON_STARPU_VERSION})
+            else()
+                list(APPEND CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE starpu-${CHAMELEON_STARPU_VERSION})
+            endif()
         endif()
     endif()
 
diff --git a/gpuhipblas/compute/CMakeLists.txt b/gpuhipblas/compute/CMakeLists.txt
index abaa7b40a..3c6349e80 100644
--- a/gpuhipblas/compute/CMakeLists.txt
+++ b/gpuhipblas/compute/CMakeLists.txt
@@ -70,7 +70,8 @@ target_include_directories(gpuhipblas PUBLIC
   $<INSTALL_INTERFACE:include>)
 set_property(TARGET gpuhipblas PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
 
-target_link_libraries(gpuhipblas PRIVATE coreblas HIP::HIPBLAS)
+target_link_libraries(gpuhipblas PRIVATE coreblas)
+target_link_libraries(gpuhipblas PUBLIC HIP::HIPBLAS)
 target_link_libraries(gpuhipblas PUBLIC MORSE::M)
 
 # export target coreblas
-- 
GitLab