From 3db67ddff41b03223a300b314cc713f3623d4519 Mon Sep 17 00:00:00 2001
From: Florent Pruvost <florent.pruvost@inria.fr>
Date: Mon, 2 Feb 2015 16:34:05 +0000
Subject: [PATCH] fix problem of empty LIBRARY_DIRS for modules which have a
 function test

---
 cmake_modules/morse/find/FindCBLAS.cmake     |  7 +++-
 cmake_modules/morse/find/FindCHAMELEON.cmake | 42 +++++++++++++++-----
 cmake_modules/morse/find/FindFXT.cmake       |  4 +-
 cmake_modules/morse/find/FindHWLOC.cmake     |  4 +-
 cmake_modules/morse/find/FindLAPACKE.cmake   |  7 +++-
 cmake_modules/morse/find/FindMAGMA.cmake     | 13 +++++-
 cmake_modules/morse/find/FindQUARK.cmake     |  8 +++-
 cmake_modules/morse/find/FindSTARPU.cmake    | 15 +++++++
 cmake_modules/morse/find/FindTMG.cmake       |  7 +++-
 9 files changed, 88 insertions(+), 19 deletions(-)

diff --git a/cmake_modules/morse/find/FindCBLAS.cmake b/cmake_modules/morse/find/FindCBLAS.cmake
index df8e867f2..acfd9c9fb 100644
--- a/cmake_modules/morse/find/FindCBLAS.cmake
+++ b/cmake_modules/morse/find/FindCBLAS.cmake
@@ -241,7 +241,12 @@ if (BLAS_FOUND)
             # check a function to validate the find
             set(CMAKE_REQUIRED_INCLUDES  "${CBLAS_INCLUDE_DIRS};${BLAS_INCLUDE_DIRS}")
             set(CMAKE_REQUIRED_LIBRARIES "${CBLAS_LIBRARIES};${BLAS_LIBRARIES}")
-            set(CMAKE_REQUIRED_FLAGS     "-L${CBLAS_LIBRARY_DIRS} -L${BLAS_LIBRARY_DIRS}")
+            if (CBLAS_LIBRARY_DIRS)
+                set(CMAKE_REQUIRED_FLAGS "-L${CBLAS_LIBRARY_DIRS}")
+                if (BLAS_LIBRARY_DIRS)
+                    set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${BLAS_LIBRARY_DIRS}")
+                endif()
+            endif()
 
             unset(CBLAS_WORKS CACHE)
             include(CheckFunctionExists)
diff --git a/cmake_modules/morse/find/FindCHAMELEON.cmake b/cmake_modules/morse/find/FindCHAMELEON.cmake
index eda7ce684..2ca145bba 100644
--- a/cmake_modules/morse/find/FindCHAMELEON.cmake
+++ b/cmake_modules/morse/find/FindCHAMELEON.cmake
@@ -446,56 +446,76 @@ if(NOT CHAMELEON_FOUND OR NOT CHAMELEON_LIBRARIES)
         set(CMAKE_REQUIRED_INCLUDES "${CHAMELEON_INCLUDE_DIRS}")
         set(CMAKE_REQUIRED_FLAGS)
         foreach(libdir ${CHAMELEON_LIBRARY_DIRS})
-            #list(APPEND CMAKE_REQUIRED_FLAGS "-L${libdir}")
+            if (libdir)
+                list(APPEND CMAKE_REQUIRED_FLAGS "-L${libdir}")
+            endif()
         endforeach()
         set(CMAKE_REQUIRED_LIBRARIES "${CHAMELEON_LIBRARIES}")
         if (STARPU_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${STARPU_INCLUDE_DIRS}")
-            #list(APPEND CMAKE_REQUIRED_FLAGS "-L${STARPU_LIBRARY_DIRS}")
+            if(STARPU_LIBRARY_DIRS)
+                list(APPEND CMAKE_REQUIRED_FLAGS "-L${STARPU_LIBRARY_DIRS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${STARPU_LIBRARIES}")
         endif()
         if (QUARK_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "$QUARK_INCLUDE_DIRS}")
-            #list(APPEND CMAKE_REQUIRED_FLAGS "-L${QUARK_LIBRARY_DIRS}")
+            if(QUARK_LIBRARY_DIRS)
+                list(APPEND CMAKE_REQUIRED_FLAGS "-L${QUARK_LIBRARY_DIRS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${QUARK_LIBRARIES}")
         endif()
         if (CUDA_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${CUDA_INCLUDE_DIRS}")
-            #list(APPEND CMAKE_REQUIRED_FLAGS "-L${CUDA_LIBRARY_DIRS}")
+            if(QUARK_LIBRARY_DIRS)
+                list(APPEND CMAKE_REQUIRED_FLAGS "-L${CUDA_LIBRARY_DIRS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${CUDA_CUBLAS_LIBRARIES};${CUDA_LIBRARIES}")
         endif()
         if (MAGMA_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${MAGMA_INCLUDE_DIRS}")
-            #list(APPEND CMAKE_REQUIRED_FLAGS "-L${MAGMA_LIBRARY_DIRS}")
+            if(QUARK_LIBRARY_DIRS)
+                list(APPEND CMAKE_REQUIRED_FLAGS "-L${MAGMA_LIBRARY_DIRS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${${MAGMA_LIBRARIES}}")
         endif()
         if (MPI_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${MPI_C_INCLUDE_PATH}")
-            #list(APPEND CMAKE_REQUIRED_FLAGS "-L${MPI_C_LINK_FLAGS}")
+            if(QUARK_LIBRARY_DIRS)
+                list(APPEND CMAKE_REQUIRED_FLAGS "-L${MPI_C_LINK_FLAGS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${MPI_C_LIBRARIES}")
         endif()
         if (HWLOC_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${HWLOC_INCLUDE_DIRS}")
-            #list(APPEND CMAKE_REQUIRED_FLAGS "-L${HWLOC_LIBRARY_DIRS}")
+            if(QUARK_LIBRARY_DIRS)
+                list(APPEND CMAKE_REQUIRED_FLAGS "-L${HWLOC_LIBRARY_DIRS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${HWLOC_LIBRARIES}")
         endif()
         if (TMG_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${TMG_INCLUDE_DIRS}")
-            #list(APPEND CMAKE_REQUIRED_FLAGS "-L${TMG_LIBRARY_DIRS}")
+            if(QUARK_LIBRARY_DIRS)
+                list(APPEND CMAKE_REQUIRED_FLAGS "-L${TMG_LIBRARY_DIRS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${TMG_LIBRARIES}")
         endif()
         if (LAPACKE_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${LAPACKE_INCLUDE_DIRS}")
-            #list(APPEND CMAKE_REQUIRED_FLAGS "-L${LAPACKE_LIBRARY_DIRS}")
+            if(QUARK_LIBRARY_DIRS)
+                list(APPEND CMAKE_REQUIRED_FLAGS "-L${LAPACKE_LIBRARY_DIRS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${LAPACKE_LIBRARIES}")
         endif()
         if (CBLAS_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${CBLAS_INCLUDE_DIRS}")
-            #list(APPEND CMAKE_REQUIRED_FLAGS "-L${CBLAS_LIBRARY_DIRS}")
+            if(QUARK_LIBRARY_DIRS)
+                list(APPEND CMAKE_REQUIRED_FLAGS "-L${CBLAS_LIBRARY_DIRS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${CBLAS_LIBRARIES}")
         endif()
         list(APPEND CMAKE_REQUIRED_LIBRARIES ${CHAMELEON_EXTRA_LIBRARIES})
-        #string(REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
+        string(REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
 
         unset(CHAMELEON_WORKS CACHE)
         include(CheckFunctionExists)
diff --git a/cmake_modules/morse/find/FindFXT.cmake b/cmake_modules/morse/find/FindFXT.cmake
index 49ff7e86c..bb00f93fd 100644
--- a/cmake_modules/morse/find/FindFXT.cmake
+++ b/cmake_modules/morse/find/FindFXT.cmake
@@ -204,7 +204,9 @@ if(NOT FXT_FOUND OR NOT FXT_LIBRARIES)
         # check a function to validate the find
         set(CMAKE_REQUIRED_INCLUDES  "${FXT_INCLUDE_DIRS}")
         set(CMAKE_REQUIRED_LIBRARIES "${FXT_LIBRARIES}")
-        set(CMAKE_REQUIRED_FLAGS     "-L${FXT_LIBRARY_DIRS}")
+        if (FXT_LIBRARY_DIRS)
+            set(CMAKE_REQUIRED_FLAGS     "-L${FXT_LIBRARY_DIRS}")
+        endif()
 
         unset(FXT_WORKS CACHE)
         include(CheckFunctionExists)
diff --git a/cmake_modules/morse/find/FindHWLOC.cmake b/cmake_modules/morse/find/FindHWLOC.cmake
index 20ad8ea79..0455f16d0 100644
--- a/cmake_modules/morse/find/FindHWLOC.cmake
+++ b/cmake_modules/morse/find/FindHWLOC.cmake
@@ -211,7 +211,9 @@ if(NOT HWLOC_FOUND OR NOT HWLOC_LIBRARIES)
         # check a function to validate the find
         set(CMAKE_REQUIRED_INCLUDES  "${HWLOC_INCLUDE_DIRS}")
         set(CMAKE_REQUIRED_LIBRARIES "${HWLOC_LIBRARIES}")
-        set(CMAKE_REQUIRED_FLAGS     "-L${HWLOC_LIBRARY_DIRS}")
+        if (HWLOC_LIBRARY_DIRS)
+            set(CMAKE_REQUIRED_FLAGS     "-L${HWLOC_LIBRARY_DIRS}")
+        endif()
 
         unset(HWLOC_WORKS CACHE)
         include(CheckFunctionExists)
diff --git a/cmake_modules/morse/find/FindLAPACKE.cmake b/cmake_modules/morse/find/FindLAPACKE.cmake
index b3e6465cc..112faafbb 100644
--- a/cmake_modules/morse/find/FindLAPACKE.cmake
+++ b/cmake_modules/morse/find/FindLAPACKE.cmake
@@ -241,7 +241,12 @@ if (LAPACK_FOUND)
             elseif (CMAKE_Fortran_COMPILER MATCHES ".+ifort.*")
                 list(APPEND CMAKE_REQUIRED_LIBRARIES "-lifcore")
             endif()
-            set(CMAKE_REQUIRED_FLAGS "-L${LAPACKE_LIBRARY_DIRS} -L${LAPACK_LIBRARY_DIRS}")
+            if (LAPACKE_LIBRARY_DIRS)
+                set(CMAKE_REQUIRED_FLAGS "-L${LAPACKE_LIBRARY_DIRS}")
+                if(LAPACK_LIBRARY_DIRS)
+                    set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${LAPACK_LIBRARY_DIRS}")
+                endif()
+            endif()
 
             unset(LAPACKE_WORKS CACHE)
             include(CheckFunctionExists)
diff --git a/cmake_modules/morse/find/FindMAGMA.cmake b/cmake_modules/morse/find/FindMAGMA.cmake
index 0fdd189af..b1c999acb 100644
--- a/cmake_modules/morse/find/FindMAGMA.cmake
+++ b/cmake_modules/morse/find/FindMAGMA.cmake
@@ -278,7 +278,18 @@ if(NOT MAGMA_FOUND OR NOT MAGMA_LIBRARIES)
         # check a function to validate the find
         set(CMAKE_REQUIRED_INCLUDES "${MAGMA_INCLUDE_DIRS};${CBLAS_INCLUDE_DIRS};${CUDA_INCLUDE_DIRS}")
         set(CMAKE_REQUIRED_LIBRARIES "${MAGMA_LIBRARIES};${CBLAS_LIBRARIES};${CUDA_CUBLAS_LIBRARIES};${CUDA_LIBRARIES};${LAPACK_LIBRARIES}")
-        set(CMAKE_REQUIRED_FLAGS     "-L${MAGMA_LIBRARY_DIRS} -L${CBLAS_LIBRARY_DIRS} -L${CUDA_LIBRARY_DIRS} -L${LAPACK_LIBRARY_DIRS}")
+        if (MAGMA_LIBRARY_DIRS)
+            set(CMAKE_REQUIRED_FLAGS "-L${MAGMA_LIBRARY_DIRS}")
+            if (CBLAS_LIBRARY_DIRS)
+                set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${CBLAS_LIBRARY_DIRS}")
+                if(CUDA_LIBRARY_DIRS)
+                    set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${CUDA_LIBRARY_DIRS}")
+                    if(LAPACK_LIBRARY_DIRS)
+                        set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${LAPACK_LIBRARY_DIRS}")
+                    endif()
+                endif()
+            endif()
+        endif()
 
         unset(MAGMA_WORKS CACHE)
         include(CheckFunctionExists)
diff --git a/cmake_modules/morse/find/FindQUARK.cmake b/cmake_modules/morse/find/FindQUARK.cmake
index c6dbe604a..55005c538 100644
--- a/cmake_modules/morse/find/FindQUARK.cmake
+++ b/cmake_modules/morse/find/FindQUARK.cmake
@@ -191,11 +191,15 @@ if(QUARK_LIBRARIES)
     # check a function to validate the find
     set(CMAKE_REQUIRED_INCLUDES  "${QUARK_INCLUDE_DIRS}")
     set(CMAKE_REQUIRED_LIBRARIES "${QUARK_LIBRARIES};${CMAKE_THREAD_LIBS_INIT}")
-    set(CMAKE_REQUIRED_FLAGS     "-L${QUARK_LIBRARY_DIRS}")
+    if (QUARK_LIBRARY_DIRS)
+        set(CMAKE_REQUIRED_FLAGS "-L${QUARK_LIBRARY_DIRS}")
+    endif()
     if (HWLOC_FOUND)
         list(APPEND CMAKE_REQUIRED_INCLUDES "${HWLOC_INCLUDE_DIRS}")
         list(APPEND CMAKE_REQUIRED_LIBRARIES "${HWLOC_LIBRARIES}")
-        list(APPEND CMAKE_REQUIRED_FLAGS "-L${HWLOC_LIBRARIES}")
+        if (HWLOC_LIBRARY_DIRS)
+            set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${HWLOC_LIBRARY_DIRS}")
+        endif()
     endif()
 
     unset(QUARK_WORKS CACHE)
diff --git a/cmake_modules/morse/find/FindSTARPU.cmake b/cmake_modules/morse/find/FindSTARPU.cmake
index 00efba5cc..7717fa7e7 100644
--- a/cmake_modules/morse/find/FindSTARPU.cmake
+++ b/cmake_modules/morse/find/FindSTARPU.cmake
@@ -532,22 +532,37 @@ if( (NOT STARPU_SHM_FOUND) OR (NOT STARPU_SHM_LIBRARIES) OR
         set(CMAKE_REQUIRED_INCLUDES "${STARPU_INCLUDE_DIRS}")
         set(CMAKE_REQUIRED_FLAGS)
         foreach(libdir ${STARPU_LIBRARY_DIRS})
+            if(libdir)
+                set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${libdir}")
+            endif()
         endforeach()
         set(CMAKE_REQUIRED_LIBRARIES "${STARPU_LIBRARIES}")
         if (HWLOC_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${HWLOC_INCLUDE_DIRS}")
+            if (HWLOC_LIBRARY_DIRS)
+                set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${HWLOC_LIBRARY_DIRS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${HWLOC_LIBRARIES}")
         endif()
         if (MPI_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${MPI_C_INCLUDE_PATH}")
+            if (MPI_C_LINK_FLAGS)
+                set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${MPI_C_LINK_FLAGS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${MPI_C_LIBRARIES}")
         endif()
         if (CUDA_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${CUDA_INCLUDE_DIRS}")
+            if (CUDA_LIBRARY_DIRS)
+                set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${CUDA_LIBRARY_DIRS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${CUDA_CUBLAS_LIBRARIES};${CUDA_LIBRARIES}")
         endif()
         if (MAGMA_FOUND)
             list(APPEND CMAKE_REQUIRED_INCLUDES "${MAGMA_INCLUDE_DIRS}")
+            if (MAGMA_LIBRARY_DIRS)
+                set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${MAGMA_LIBRARY_DIRS}")
+            endif()
             list(APPEND CMAKE_REQUIRED_LIBRARIES "${${MAGMA_LIBRARIES}}")
         endif()
 
diff --git a/cmake_modules/morse/find/FindTMG.cmake b/cmake_modules/morse/find/FindTMG.cmake
index 892bce997..8c2886daf 100644
--- a/cmake_modules/morse/find/FindTMG.cmake
+++ b/cmake_modules/morse/find/FindTMG.cmake
@@ -191,7 +191,12 @@ if (LAPACK_FOUND)
         # check a function to validate the find
         set(CMAKE_REQUIRED_INCLUDES "${TMG_INCLUDE_DIRS};${LAPACK_INCLUDE_DIRS}")
         set(CMAKE_REQUIRED_LIBRARIES "${TMG_LIBRARIES};${LAPACK_LIBRARIES}")
-        set(CMAKE_REQUIRED_FLAGS "-L${TMG_LIBRARY_DIRS} -L${LAPACK_LIBRARY_DIRS}")
+        if (TMG_LIBRARY_DIRS)
+            set(CMAKE_REQUIRED_FLAGS "-L${TMG_LIBRARY_DIRS}")
+            if (LAPACK_LIBRARY_DIRS)
+                set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L${LAPACK_LIBRARY_DIRS}")
+            endif()
+        endif()
 
         if(TMG_LIBRARIES)
             unset(TMG_WORKS CACHE)
-- 
GitLab