From 476b0a64f5549ff74ad5fbcd1d9991997a97697a Mon Sep 17 00:00:00 2001
From: Florent Pruvost <florent.pruvost@inria.fr>
Date: Fri, 28 Nov 2014 11:04:03 +0000
Subject: [PATCH] append path of shared libs in the rpath when discovered

---
 CMakeLists.txt    | 50 ++++++++++++++++++++++++++++++++++++++++++-----
 CTestConfig.cmake |  4 ++--
 2 files changed, 47 insertions(+), 7 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9b05024a0..31ec4dade 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -73,7 +73,7 @@ set(CMAKE_SKIP_BUILD_RPATH  FALSE)
 
 # when building, don't use the install RPATH already
 # (but later on when installing)
-set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) 
+set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
 
 # the RPATH to be used when installing
 set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
@@ -251,6 +251,10 @@ if(NOT CHAMELEON_SIMULATION)
     set(BLAS_DIR "" CACHE PATH "Root directory of BLAS library")
     find_package(BLASEXT REQUIRED)
     set(HAVE_BLAS ${BLAS_FOUND})
+    if(BLAS_FOUND AND BLAS_LIBRARY_DIRS)
+        # the RPATH to be used when installing
+        list(APPEND CMAKE_INSTALL_RPATH "${BLAS_LIBRARY_DIRS}")
+    endif()
 
     set(CBLAS_DIR "" CACHE PATH "Root directory of CBLAS library")
     find_package(CBLAS REQUIRED)
@@ -258,12 +262,20 @@ if(NOT CHAMELEON_SIMULATION)
     if(CBLAS_FOUND)
         include_directories(${CBLAS_INCLUDE_DIRS})
     endif()
+    if(CBLAS_FOUND AND CBLAS_LIBRARY_DIRS)
+        # the RPATH to be used when installing
+        list(APPEND CMAKE_INSTALL_RPATH "${CBLAS_LIBRARY_DIRS}")
+    endif()
 
     #---------------------------------------------
     # CHAMELEON depends on LAPACKE (via coreblas)
     set(LAPACK_DIR "" CACHE PATH "Root directory of LAPACK library")
     find_package(LAPACKEXT REQUIRED)
     set(HAVE_LAPACK ${LAPACK_FOUND})
+    if(LAPACK_FOUND AND LAPACK_LIBRARY_DIRS)
+        # the RPATH to be used when installing
+        list(APPEND CMAKE_INSTALL_RPATH "${LAPACK_LIBRARY_DIRS}")
+    endif()
 
     # standalone version of lapacke seems useless for now
     # let the comment in case we meet some problems of non existing lapacke 
@@ -275,6 +287,10 @@ if(NOT CHAMELEON_SIMULATION)
     if(LAPACKE_FOUND)
         include_directories(${LAPACKE_INCLUDE_DIRS})
     endif()
+    if(LAPACKE_FOUND AND LAPACKE_LIBRARY_DIRS)
+        # the RPATH to be used when installing
+        list(APPEND CMAKE_INSTALL_RPATH "${LAPACKE_LIBRARY_DIRS}")
+    endif()
 
     # CHAMELEON depends on TMG
     #--------------------------
@@ -282,6 +298,10 @@ if(NOT CHAMELEON_SIMULATION)
         set(TMG_DIR "" CACHE PATH "Root directory of TMG library")
         find_package(TMG REQUIRED)
         set(HAVE_TMG ${TMG_FOUND})
+        if(TMG_FOUND AND TMG_LIBRARY_DIRS)
+            # the RPATH to be used when installing
+            list(APPEND CMAKE_INSTALL_RPATH "${TMG_LIBRARY_DIRS}")
+        endif()
     endif()
 
     # CHAMELEON depends on CUDA/CUBLAS
@@ -329,14 +349,18 @@ if(NOT CHAMELEON_SIMULATION)
                     add_definitions(-DCHAMELEON_USE_MAGMA)
                     list(APPEND EXTRA_LIBRARIES ${CUDA_CUBLAS_LIBRARIES})
                     include_directories(${MAGMA_INCLUDE_DIRS})
+                    if(MAGMA_LIBRARY_DIRS)
+                        # the RPATH to be used when installing
+                        list(APPEND CMAKE_INSTALL_RPATH "${MAGMA_LIBRARY_DIRS}")
+                    endif()
                 endif( MAGMA_FOUND )
             endif()
         endif()
 
     endif(CHAMELEON_USE_CUDA)
-    
+
     # CHAMELEON depends on MPI
-    #--------------------------
+    #-------------------------
     if (CHAMELEON_USE_MPI)
 
         # allows to use an external mpi compilation by setting compilers with
@@ -460,9 +484,21 @@ if( CHAMELEON_SCHED_STARPU )
                 add_definitions(-DHAVE_STARPU_MPI_DATA_REGISTER)
             endif()
         endif()
-    endif()
+        if(HWLOC_FOUND AND HWLOC_LIBRARY_DIRS)
+            # the RPATH to be used when installing
+            list(APPEND CMAKE_INSTALL_RPATH "${HWLOC_LIBRARY_DIRS}")
+        endif()
+        if(FXT_FOUND AND FXT_LIBRARY_DIRS)
+            # the RPATH to be used when installing
+            list(APPEND CMAKE_INSTALL_RPATH "${FXT_LIBRARY_DIRS}")
+        endif()
+        if(STARPU_FOUND AND STARPU_LIBRARY_DIRS)
+            # the RPATH to be used when installing
+            list(APPEND CMAKE_INSTALL_RPATH "${STARPU_LIBRARY_DIRS}")
+        endif()
+    endif( STARPU_FOUND )
 
-endif()
+endif( CHAMELEON_SCHED_STARPU )
 
 # try to find quark runtime
 if( CHAMELEON_SCHED_QUARK )
@@ -477,6 +513,10 @@ if( CHAMELEON_SCHED_QUARK )
         add_definitions(-DCHAMELEON_SCHED_QUARK) # TODO: remove that
         include_directories(${QUARK_INCLUDE_DIRS})
     endif()
+    if(QUARK_FOUND AND QUARK_LIBRARY_DIRS)
+        # the RPATH to be used when installing
+        list(APPEND CMAKE_INSTALL_RPATH "${QUARK_LIBRARY_DIRS}")
+    endif()
 
 endif()
 
diff --git a/CTestConfig.cmake b/CTestConfig.cmake
index e6361b308..17329af4d 100644
--- a/CTestConfig.cmake
+++ b/CTestConfig.cmake
@@ -21,7 +21,7 @@ set(CTEST_DROP_SITE_CDASH TRUE)
 if(NOT BUILDNAME)
 
     set(BUILDNAME "${CMAKE_SYSTEM_NAME}")
-    
+
     # Add i386 or amd64
     if(CMAKE_SIZEOF_VOID_P EQUAL 8)
         set(BUILDNAME "${BUILDNAME}-amd64")
@@ -54,7 +54,7 @@ if(NOT BUILDNAME)
     if(CHAMELEON_USE_CUDA)
         set(BUILDNAME "${BUILDNAME}-cuda")
     endif(CHAMELEON_USE_CUDA)  
-    
+
 endif()
 
 
-- 
GitLab