From e928109cb4bb7d18eab08759db22e2563d756679 Mon Sep 17 00:00:00 2001
From: Junru Shao <junrushao1994@gmail.com>
Date: Sun, 30 Sep 2018 23:29:33 -0400
Subject: [PATCH] [BUG] Fix incorrect libcuda.so found by cmake when multiple
 versions of CUDA exist (#1788)

---
 cmake/util/FindCUDA.cmake   | 12 ++++++++++--
 cmake/util/FindLLVM.cmake   |  7 ++++++-
 cmake/util/FindROCM.cmake   | 38 +++++++++++++++++++++----------------
 cmake/util/FindVulkan.cmake |  3 +++
 4 files changed, 41 insertions(+), 19 deletions(-)

diff --git a/cmake/util/FindCUDA.cmake b/cmake/util/FindCUDA.cmake
index 3ce0cc40a..e715ad2ef 100644
--- a/cmake/util/FindCUDA.cmake
+++ b/cmake/util/FindCUDA.cmake
@@ -56,13 +56,15 @@ macro(find_cuda use_cuda)
     else(MSVC)
       find_library(_CUDA_CUDA_LIBRARY cuda
         PATHS ${CUDA_TOOLKIT_ROOT_DIR}
-        PATH_SUFFIXES lib lib64 targets/x86_64-linux/lib targets/x86_64-linux/lib/stubs)
+        PATH_SUFFIXES lib lib64 targets/x86_64-linux/lib targets/x86_64-linux/lib/stubs lib64/stubs
+        NO_DEFAULT_PATH)
       if(_CUDA_CUDA_LIBRARY)
         set(CUDA_CUDA_LIBRARY ${_CUDA_CUDA_LIBRARY})
       endif()
       find_library(CUDA_NVRTC_LIBRARY nvrtc
         PATHS ${CUDA_TOOLKIT_ROOT_DIR}
-        PATH_SUFFIXES lib lib64 targets/x86_64-linux/lib targets/x86_64-linux/lib/stubs)
+        PATH_SUFFIXES lib lib64 targets/x86_64-linux/lib targets/x86_64-linux/lib/stubs lib64/stubs
+        NO_DEFAULT_PATH)
       find_library(CUDA_CUDNN_LIBRARY cudnn
         ${CUDA_TOOLKIT_ROOT_DIR}/lib64
         ${CUDA_TOOLKIT_ROOT_DIR}/lib)
@@ -70,5 +72,11 @@ macro(find_cuda use_cuda)
         ${CUDA_TOOLKIT_ROOT_DIR}/lib64
         ${CUDA_TOOLKIT_ROOT_DIR}/lib)
     endif(MSVC)
+    message(STATUS "Found CUDA_TOOLKIT_ROOT_DIR=" ${CUDA_TOOLKIT_ROOT_DIR})
+    message(STATUS "Found CUDA_CUDA_LIBRARY=" ${CUDA_CUDA_LIBRARY})
+    message(STATUS "Found CUDA_CUDART_LIBRARY=" ${CUDA_CUDART_LIBRARY})
+    message(STATUS "Found CUDA_NVRTC_LIBRARY=" ${CUDA_NVRTC_LIBRARY})
+    message(STATUS "Found CUDA_CUDNN_LIBRARY=" ${CUDA_CUDNN_LIBRARY})
+    message(STATUS "Found CUDA_CUBLAS_LIBRARY=" ${CUDA_CUBLAS_LIBRARY})
   endif(CUDA_FOUND)
 endmacro(find_cuda)
diff --git a/cmake/util/FindLLVM.cmake b/cmake/util/FindLLVM.cmake
index 4bb58d462..8497761a7 100644
--- a/cmake/util/FindLLVM.cmake
+++ b/cmake/util/FindLLVM.cmake
@@ -11,7 +11,7 @@
 # - LLVM_INCLUDE_DIRS
 # - LLVM_LIBS
 # - LLVM_DEFINITIONS
-# - TVM_LLVM_VERISON
+# - TVM_LLVM_VERSION
 #
 macro(find_llvm use_llvm)
   set(LLVM_CONFIG ${use_llvm})
@@ -56,4 +56,9 @@ macro(find_llvm use_llvm)
     separate_arguments(LLVM_LIBS)
     string(STRIP ${TVM_LLVM_VERSION} TVM_LLVM_VERSION)
   endif()
+  if(NOT LLVM_CONFIG STREQUAL "OFF")
+    message(STATUS "Found LLVM_INCLUDE_DIRS=" ${LLVM_INCLUDE_DIRS})
+    message(STATUS "Found LLVM_DEFINITIONS=" ${LLVM_DEFINITIONS})
+    message(STATUS "Found TVM_LLVM_VERSION=" ${TVM_LLVM_VERSION})
+  endif()
 endmacro(find_llvm)
diff --git a/cmake/util/FindROCM.cmake b/cmake/util/FindROCM.cmake
index 235969813..317fea1b8 100644
--- a/cmake/util/FindROCM.cmake
+++ b/cmake/util/FindROCM.cmake
@@ -21,21 +21,27 @@ macro(find_rocm use_rocm)
   if(IS_DIRECTORY ${__use_rocm})
     set(__rocm_sdk ${__use_rocm})
     message(STATUS "Custom ROCM SDK PATH=" ${__use_rocm})
-   elseif(IS_DIRECTORY $ENV{ROCM_PATH})
-     set(__rocm_sdk $ENV{ROCM_PATH})
-   elseif(IS_DIRECTORY /opt/rocm)
-     set(__rocm_sdk /opt/rocm)
-   else()
-     set(__rocm_sdk "")
-   endif()
+  elseif(IS_DIRECTORY $ENV{ROCM_PATH})
+    set(__rocm_sdk $ENV{ROCM_PATH})
+  elseif(IS_DIRECTORY /opt/rocm)
+    set(__rocm_sdk /opt/rocm)
+  else()
+    set(__rocm_sdk "")
+  endif()
 
-   if(__rocm_sdk)
-     set(ROCM_INCLUDE_DIRS ${__rocm_sdk}/include)
-     find_library(ROCM_HIPHCC_LIBRARY hip_hcc ${__rocm_sdk}/lib)
-     find_library(ROCM_MIOPEN_LIBRARY MIOpen ${__rocm_sdk}/lib)
-     find_library(ROCM_ROCBLAS_LIBRARY rocblas ${__rocm_sdk}/lib)
-     if(ROCM_HIPHCC_LIBRARY)
-       set(ROCM_FOUND TRUE)
-     endif()
-   endif(__rocm_sdk)
+  if(__rocm_sdk)
+    set(ROCM_INCLUDE_DIRS ${__rocm_sdk}/include)
+    find_library(ROCM_HIPHCC_LIBRARY hip_hcc ${__rocm_sdk}/lib)
+    find_library(ROCM_MIOPEN_LIBRARY MIOpen ${__rocm_sdk}/lib)
+    find_library(ROCM_ROCBLAS_LIBRARY rocblas ${__rocm_sdk}/lib)
+    if(ROCM_HIPHCC_LIBRARY)
+      set(ROCM_FOUND TRUE)
+    endif()
+  endif(__rocm_sdk)
+  if(ROCM_FOUND)
+    message(STATUS "Found ROCM_INCLUDE_DIRS=" ${ROCM_INCLUDE_DIRS})
+    message(STATUS "Found ROCM_HIPHCC_LIBRARY=" ${ROCM_HIPHCC_LIBRARY})
+    message(STATUS "Found ROCM_MIOPEN_LIBRARY=" ${ROCM_MIOPEN_LIBRARY})
+    message(STATUS "Found ROCM_ROCBLAS_LIBRARY=" ${ROCM_ROCBLAS_LIBRARY})
+  endif(ROCM_FOUND)
 endmacro(find_rocm)
diff --git a/cmake/util/FindVulkan.cmake b/cmake/util/FindVulkan.cmake
index 0b85e8f47..15c85bfe2 100644
--- a/cmake/util/FindVulkan.cmake
+++ b/cmake/util/FindVulkan.cmake
@@ -51,5 +51,8 @@ macro(find_vulkan use_vulkan)
     find_path(_spirv spirv.hpp HINTS ${Vulkan_INCLUDE_DIRS} PATH_SUFFIXES vulkan spirv/unified1)
     find_path(_glsl_std GLSL.std.450.h HINTS ${Vulkan_INCLUDE_DIRS} PATH_SUFFIXES vulkan spirv/unified1)
     list(APPEND Vulkan_INCLUDE_DIRS ${_libspirv} ${_spirv} ${_glsl_std})
+    message(STATUS "Vulkan_INCLUDE_DIRS=" ${Vulkan_INCLUDE_DIRS})
+    message(STATUS "Vulkan_LIBRARY=" ${Vulkan_LIBRARY})
+    message(STATUS "Vulkan_SPIRV_TOOLS_LIBRARY=" ${Vulkan_SPIRV_TOOLS_LIBRARY})
   endif(Vulkan_FOUND)
 endmacro(find_vulkan)
-- 
GitLab