From 1f1e282eac352fc3bfa465e5ee41b3aac1425afd Mon Sep 17 00:00:00 2001
From: Guillaume Sylvand <guillaume.sylvand@airbus.com>
Date: Sun, 11 Sep 2016 19:26:29 +0000
Subject: [PATCH] CMake: add some target_link_libraries() to allow user app to
 link only with "-lchameleon"

---
 CMakeLists.txt                  | 1 +
 compute/CMakeLists.txt          | 9 +++++++++
 coreblas/compute/CMakeLists.txt | 6 ++++++
 cudablas/compute/CMakeLists.txt | 5 +++++
 runtime/parsec/CMakeLists.txt   | 5 +++++
 runtime/quark/CMakeLists.txt    | 5 +++++
 runtime/starpu/CMakeLists.txt   | 5 +++++
 7 files changed, 36 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a93fe7c54..745f08cb9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -912,6 +912,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/")
           -lchameleon_starpu
           ${STARPU_LIBRARIES_DEP}
         )
+        link_directories(${STARPU_LIBRARY_DIRS_DEP})
     elseif(CHAMELEON_SCHED_PARSEC)
         list(APPEND CHAMELEON_DEP
           -lchameleon_parsec
diff --git a/compute/CMakeLists.txt b/compute/CMakeLists.txt
index 784b42d1f..68a77fe56 100644
--- a/compute/CMakeLists.txt
+++ b/compute/CMakeLists.txt
@@ -248,6 +248,15 @@ endif(HAVE_ISO_C_BINDING)
 # ------------
 add_library(chameleon ${CHAMELEON_SRCS} ${CHAMELEON_SRCSF})
 
+target_link_libraries(chameleon coreblas)
+if(CHAMELEON_SCHED_STARPU)
+  target_link_libraries(chameleon chameleon_starpu)
+elseif(CHAMELEON_SCHED_PARSEC)
+  target_link_libraries(chameleon chameleon_parsec)
+elseif(CHAMELEON_SCHED_QUARK)
+  target_link_libraries(chameleon chameleon_quark)
+endif()
+
 add_dependencies(chameleon
   chameleon_include
   coreblas_include
diff --git a/coreblas/compute/CMakeLists.txt b/coreblas/compute/CMakeLists.txt
index e50cb56f2..6dc104b74 100644
--- a/coreblas/compute/CMakeLists.txt
+++ b/coreblas/compute/CMakeLists.txt
@@ -103,6 +103,12 @@ add_dependencies(coreblas coreblas_include)
 set_property(TARGET coreblas PROPERTY LINKER_LANGUAGE Fortran)
 set_property(TARGET coreblas PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
 
+if(NOT CHAMELEON_SIMULATION)
+  target_link_libraries(coreblas ${LAPACKE_LIBRARIES} ${CBLAS_LIBRARIES})
+else(NOT CHAMELEON_SIMULATION)
+  target_link_libraries(coreblas simulapacke simucblas)
+endif(NOT CHAMELEON_SIMULATION)
+
 # # Dependencies step
 # # -----------------
 # foreach(_external_package "blas" "cblas" "lapack" "lapacke")
diff --git a/cudablas/compute/CMakeLists.txt b/cudablas/compute/CMakeLists.txt
index 79812cbba..91550a049 100644
--- a/cudablas/compute/CMakeLists.txt
+++ b/cudablas/compute/CMakeLists.txt
@@ -68,6 +68,11 @@ add_library(cudablas ${CUDABLAS_SRCS})
 add_dependencies(cudablas cudablas_include)
 set_property(TARGET cudablas PROPERTY LINKER_LANGUAGE Fortran)
 
+target_link_libraries(cudablas coreblas ${CUDA_LIBRARIES})
+if(CHAMELEON_USE_MAGMA)
+  target_link_libraries(cudablas ${MAGMA_LIBRARIES})
+endif(CHAMELEON_USE_MAGMA)
+
 # installation
 # ------------
 install(TARGETS cudablas
diff --git a/runtime/parsec/CMakeLists.txt b/runtime/parsec/CMakeLists.txt
index 0fadbfb10..064ac0d39 100644
--- a/runtime/parsec/CMakeLists.txt
+++ b/runtime/parsec/CMakeLists.txt
@@ -170,6 +170,11 @@ add_library(chameleon_parsec ${RUNTIME_SRCS})
 set_property(TARGET chameleon_parsec PROPERTY LINKER_LANGUAGE Fortran)
 set_property(TARGET chameleon_parsec PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
 
+target_link_libraries(chameleon_parsec coreblas ${PARSEC_LIBRARIES})
+if(CHAMELEON_USE_CUDA OR CHAMELEON_USE_MAGMA)
+  target_link_libraries(chameleon_parsec cudablas)
+endif(CHAMELEON_USE_CUDA OR CHAMELEON_USE_MAGMA)
+
 add_dependencies(chameleon_parsec
   chameleon_include
   coreblas_include
diff --git a/runtime/quark/CMakeLists.txt b/runtime/quark/CMakeLists.txt
index c66a21b55..5729fe001 100644
--- a/runtime/quark/CMakeLists.txt
+++ b/runtime/quark/CMakeLists.txt
@@ -167,6 +167,11 @@ add_library(chameleon_quark ${RUNTIME_SRCS})
 set_property(TARGET chameleon_quark PROPERTY LINKER_LANGUAGE Fortran)
 set_property(TARGET chameleon_quark PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
 
+target_link_libraries(chameleon_quark coreblas ${QUARK_LIBRARIES})
+if(CHAMELEON_USE_CUDA OR CHAMELEON_USE_MAGMA)
+  target_link_libraries(chameleon_quark cudablas)
+endif(CHAMELEON_USE_CUDA OR CHAMELEON_USE_MAGMA)
+
 add_dependencies(chameleon_quark
   chameleon_include
   coreblas_include
diff --git a/runtime/starpu/CMakeLists.txt b/runtime/starpu/CMakeLists.txt
index f54b27697..c8919aa52 100644
--- a/runtime/starpu/CMakeLists.txt
+++ b/runtime/starpu/CMakeLists.txt
@@ -188,6 +188,11 @@ add_library(chameleon_starpu ${RUNTIME_SRCS})
 set_property(TARGET chameleon_starpu PROPERTY LINKER_LANGUAGE Fortran)
 set_property(TARGET chameleon_starpu PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
 
+target_link_libraries(chameleon_starpu coreblas ${STARPU_LIBRARIES})
+if(CHAMELEON_USE_CUDA OR CHAMELEON_USE_MAGMA)
+  target_link_libraries(chameleon_starpu cudablas)
+endif(CHAMELEON_USE_CUDA OR CHAMELEON_USE_MAGMA)
+
 add_dependencies(chameleon_starpu
   chameleon_include
   coreblas_include
-- 
GitLab