https://sources.debian.org/data/main/a/arrayfire/3.3.2+dfsg1-4/debian/patches/Fix-LAPACKE-detection.patch From: Ghislain Antony Vaillant <ghisvail@gmail.com> Date: Wed, 2 Mar 2016 10:46:50 +0000 Subject: Fix LAPACKE detection. --- CMakeModules/FindLAPACKE.cmake | 54 +++++++++++++++------------------------ src/backend/cpu/CMakeLists.txt | 18 ++++++------- src/backend/cuda/CMakeLists.txt | 11 ++++---- src/backend/opencl/CMakeLists.txt | 19 +++++++------- 4 files changed, 45 insertions(+), 57 deletions(-) diff --git a/CMakeModules/FindLAPACKE.cmake b/CMakeModules/FindLAPACKE.cmake index 9251ee9..1a73632 100644 --- a/CMakeModules/FindLAPACKE.cmake +++ b/CMakeModules/FindLAPACKE.cmake @@ -4,13 +4,13 @@ # FIND_PACKAGE(LAPACKE [REQUIRED] [QUIET] ) # # It sets the following variables: -# LAPACK_FOUND ... true if LAPACKE is found on the system -# LAPACK_LIBRARIES ... full path to LAPACKE library -# LAPACK_INCLUDES ... LAPACKE include directory -# +# LAPACKE_FOUND ... true if LAPACKE is found on the system +# LAPACKE_INCLUDE_DIRS ... LAPACKE include directories +# LAPACKE_LIBRARIES ... path to LAPACKE libraries +# LAPACKE_LIBRARY_DIRS ... LAPACKE library directories SET(LAPACKE_ROOT_DIR CACHE STRING - "Root directory for custom LAPACK implementation") + "Root directory for custom LAPACKE implementation") IF (NOT INTEL_MKL_ROOT_DIR) SET(INTEL_MKL_ROOT_DIR $ENV{INTEL_MKL_ROOT}) @@ -40,29 +40,20 @@ IF(PKG_CONFIG_FOUND AND NOT LAPACKE_ROOT_DIR) ENDIF() IF(PC_LAPACKE_FOUND) + + # Verify sanity of LAPACKE pkg-config file. FOREACH(PC_LIB ${PC_LAPACKE_LIBRARIES}) FIND_LIBRARY(${PC_LIB}_LIBRARY NAMES ${PC_LIB} HINTS ${PC_LAPACKE_LIBRARY_DIRS} ) IF (NOT ${PC_LIB}_LIBRARY) MESSAGE(FATAL_ERROR "Something is wrong in your pkg-config file - lib ${PC_LIB} not found in ${PC_LAPACKE_LIBRARY_DIRS}") ENDIF (NOT ${PC_LIB}_LIBRARY) - LIST(APPEND LAPACKE_LIB ${${PC_LIB}_LIBRARY}) ENDFOREACH(PC_LIB) - FIND_PATH( - LAPACKE_INCLUDES - NAMES "lapacke.h" - PATHS - ${PC_LAPACKE_INCLUDE_DIRS} - ${INCLUDE_INSTALL_DIR} - /usr/include - /usr/local/include - /sw/include - /opt/local/include - DOC "LAPACKE Include Directory" - ) + set(LAPACKE_LIBRARIES ${PC_LAPACKE_LIBRARIES}) + set(LAPACKE_LIBRARY_DIRS ${PC_LAPACKE_LIBRARY_DIRS}) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(LAPACKE DEFAULT_MSG LAPACKE_LIB) - MARK_AS_ADVANCED(LAPACKE_INCLUDES LAPACKE_LIB) + FIND_PATH(LAPACKE_INCLUDE_DIRS NAMES "lapacke.h" + PATHS ${PC_LAPACKE_INCLUDE_DIRS}) ELSE(PC_LAPACKE_FOUND) @@ -97,7 +88,6 @@ ELSE(PC_LAPACKE_FOUND) LAPACKE_LIB NAMES "lapacke" "liblapacke" "openblas" "mkl_rt" PATHS - ${PC_LAPACKE_LIBRARY_DIRS} ${LIB_INSTALL_DIR} /opt/intel/mkl/lib/ia32 /opt/intel/mkl/lib/intel64 @@ -113,7 +103,6 @@ ELSE(PC_LAPACKE_FOUND) LAPACK_LIB NAMES "lapack" "liblapack" "openblas" "mkl_rt" PATHS - ${PC_LAPACKE_LIBRARY_DIRS} ${LIB_INSTALL_DIR} /opt/intel/mkl/lib/ia32 /opt/intel/mkl/lib/intel64 @@ -129,7 +118,6 @@ ELSE(PC_LAPACKE_FOUND) LAPACKE_INCLUDES NAMES "lapacke.h" "mkl_lapacke.h" PATHS - ${PC_LAPACKE_INCLUDE_DIRS} ${INCLUDE_INSTALL_DIR} /opt/intel/mkl/include /usr/include @@ -141,17 +129,15 @@ ELSE(PC_LAPACKE_FOUND) lapacke ) ENDIF(LAPACKE_ROOT_DIR) + SET(LAPACKE_INCLUDE_DIRS ${LAPACKE_INCLUDES}) + SET(LAPACKE_LIBRARIES ${LAPACKE_LIB} ${LAPACK_LIB}) + MARK_AS_ADVANCED(LAPACKE_INCLUDES LAPACKE_LIB LAPACK_LIB) ENDIF(PC_LAPACKE_FOUND) -IF(LAPACKE_LIB AND LAPACK_LIB) - SET(LAPACK_LIBRARIES ${LAPACKE_LIB} ${LAPACK_LIB}) -ENDIF() -IF(LAPACKE_INCLUDES) - SET(LAPACK_INCLUDE_DIR ${LAPACKE_INCLUDES}) -ENDIF() - INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(LAPACK DEFAULT_MSG - LAPACK_INCLUDE_DIR LAPACK_LIBRARIES) - -MARK_AS_ADVANCED(LAPACK_INCLUDES LAPACK_LIBRARIES) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LAPACKE DEFAULT_MSG + LAPACKE_LIBRARIES + LAPACKE_INCLUDE_DIRS) +MARK_AS_ADVANCED(LAPACKE_LIBRARIES + LAPACKE_INCLUDE_DIRS + LAPACKE_LIBRARY_DIRS) diff --git a/src/backend/cpu/CMakeLists.txt b/src/backend/cpu/CMakeLists.txt index ea57269..efe50a0 100644 --- a/src/backend/cpu/CMakeLists.txt +++ b/src/backend/cpu/CMakeLists.txt @@ -55,7 +55,7 @@ MESSAGE(STATUS "FFTW Library: ${FFTW_LIBRARIES}") IF(APPLE) FIND_PACKAGE(LAPACKE QUIET) # For finding MKL - IF(NOT LAPACK_FOUND) + IF(NOT LAPACKE_FOUND) # UNSET THE VARIABLES FROM LAPACKE UNSET(LAPACKE_LIB CACHE) UNSET(LAPACK_LIB CACHE) @@ -67,11 +67,10 @@ ELSE(APPLE) # Linux and Windows FIND_PACKAGE(LAPACKE) ENDIF(APPLE) -IF(NOT LAPACK_FOUND) - MESSAGE(WARNING "LAPACK not found. Functionality will be disabled") -ELSE(NOT LAPACK_FOUND) +IF(NOT LAPACKE_FOUND) + MESSAGE(WARNING "LAPACKE not found. Functionality will be disabled") +ELSE(NOT LAPACKE_FOUND) ADD_DEFINITIONS(-DWITH_CPU_LINEAR_ALGEBRA) - MESSAGE(STATUS "LAPACK libraries found: ${LAPACK_LIBRARIES}") ENDIF() IF(NOT UNIX) @@ -99,8 +98,9 @@ INCLUDE_DIRECTORIES( ${CBLAS_INCLUDE_DIR} ) -IF(LAPACK_FOUND) - INCLUDE_DIRECTORIES(${LAPACK_INCLUDE_DIR}) +IF(LAPACKE_FOUND) + INCLUDE_DIRECTORIES(${LAPACKE_INCLUDE_DIRS}) + LINK_DIRECTORIES(${LAPACKE_LIBRARY_DIRS}) ENDIF() FILE(GLOB cpu_headers @@ -213,8 +213,8 @@ IF(FORGE_FOUND AND NOT USE_SYSTEM_FORGE) ADD_DEPENDENCIES(afcpu forge) ENDIF() -IF(LAPACK_FOUND) - TARGET_LINK_LIBRARIES(afcpu PRIVATE ${LAPACK_LIBRARIES}) +IF(LAPACKE_FOUND) + TARGET_LINK_LIBRARIES(afcpu PRIVATE ${LAPACKE_LIBRARIES}) ENDIF() IF(FORGE_FOUND) diff --git a/src/backend/cuda/CMakeLists.txt b/src/backend/cuda/CMakeLists.txt index 4efb427..24c6544 100644 --- a/src/backend/cuda/CMakeLists.txt +++ b/src/backend/cuda/CMakeLists.txt @@ -105,7 +105,7 @@ ELSE(CUDA_cusolver_LIBRARY) ## Try to use CPU side lapack IF(APPLE) FIND_PACKAGE(LAPACKE QUIET) # For finding MKL - IF(NOT LAPACK_FOUND) + IF(NOT LAPACKE_FOUND) # UNSET THE VARIABLES FROM LAPACKE UNSET(LAPACKE_LIB CACHE) UNSET(LAPACK_LIB CACHE) @@ -117,9 +117,9 @@ ELSE(CUDA_cusolver_LIBRARY) FIND_PACKAGE(LAPACKE) ENDIF(APPLE) - IF(NOT LAPACK_FOUND) + IF(NOT LAPACKE_FOUND) MESSAGE(STATUS "CUDA Version ${CUDA_VERSION_STRING} does not contain cusolver library. Linear Algebra will not be available.") - ELSE(NOT LAPACK_FOUND) + ELSE(NOT LAPACKE_FOUND) MESSAGE(STATUS "CUDA Version ${CUDA_VERSION_STRING} does not contain cusolver library. But CPU LAPACK libraries are available. Will fallback to using host side code.") ADD_DEFINITIONS(-DWITH_CPU_LINEAR_ALGEBRA) IF(USE_CUDA_MKL) # Manual MKL Setup @@ -148,7 +148,8 @@ INCLUDE_DIRECTORIES( ) IF(CUDA_LAPACK_CPU_FALLBACK) - INCLUDE_DIRECTORIES(${LAPACK_INCLUDE_DIR}) + INCLUDE_DIRECTORIES(${LAPACKE_INCLUDE_DIRS}) + LINK_DIRECTORIES(${LAPACKE_LIBRARY_DIRS}) ENDIF() FILE(GLOB cuda_headers @@ -379,7 +380,7 @@ ENDIF() IF(CUDA_cusolver_LIBRARY) TARGET_LINK_LIBRARIES(afcuda PRIVATE ${CUDA_cusolver_LIBRARY}) ELSEIF(CUDA_LAPACK_CPU_FALLBACK) - TARGET_LINK_LIBRARIES(afcuda PRIVATE ${LAPACK_LIBRARIES}) + TARGET_LINK_LIBRARIES(afcuda PRIVATE ${LAPACKE_LIBRARIES}) ENDIF() SET_TARGET_PROPERTIES(afcuda PROPERTIES diff --git a/src/backend/opencl/CMakeLists.txt b/src/backend/opencl/CMakeLists.txt index 71247ce..ded53bf 100644 --- a/src/backend/opencl/CMakeLists.txt +++ b/src/backend/opencl/CMakeLists.txt @@ -12,7 +12,7 @@ ENDIF() IF(APPLE) FIND_PACKAGE(LAPACKE QUIET) # For finding MKL - IF(NOT LAPACK_FOUND) + IF(NOT LAPACKE_FOUND) # UNSET THE VARIABLES FROM LAPACKE UNSET(LAPACKE_LIB CACHE) UNSET(LAPACK_LIB CACHE) @@ -24,9 +24,9 @@ ELSE(APPLE) # Linux and Windows FIND_PACKAGE(LAPACKE) ENDIF(APPLE) -IF(NOT LAPACK_FOUND) - MESSAGE(WARNING "LAPACK not found. Functionality will be disabled") -ELSE(NOT LAPACK_FOUND) +IF(NOT LAPACKE_FOUND) + MESSAGE(WARNING "LAPACKE not found. Functionality will be disabled") +ELSE(NOT LAPACKE_FOUND) ADD_DEFINITIONS(-DWITH_OPENCL_LINEAR_ALGEBRA) IF(NOT USE_OPENCL_MKL) @@ -105,8 +105,9 @@ INCLUDE_DIRECTORIES( ${BoostCompute_INCLUDE_DIRS} ${CBLAS_INCLUDE_DIR} ) -IF(LAPACK_FOUND) - INCLUDE_DIRECTORIES(${LAPACK_INCLUDE_DIR}) +IF(LAPACKE_FOUND) + INCLUDE_DIRECTORIES(${LAPACKE_INCLUDE_DIRS}) + LINK_DIRECTORIES(${LAPACKE_LIBRARY_DIRS}) ENDIF() FILE(GLOB opencl_headers @@ -163,7 +164,7 @@ source_group(backend\\opencl\\kernel\\convolve\\Sources FILES ${conv_ker_sources source_group(backend\\opencl\\cpu\\Headers FILES ${cpu_headers}) source_group(backend\\opencl\\cpu\\Sources FILES ${cpu_sources}) -IF(LAPACK_FOUND) +IF(LAPACKE_FOUND) FILE(GLOB magma_sources "magma/*.cpp") @@ -313,9 +314,9 @@ IF(FORGE_FOUND AND NOT USE_SYSTEM_FORGE) ADD_DEPENDENCIES(afopencl forge) ENDIF() -IF(LAPACK_FOUND) +IF(LAPACKE_FOUND) TARGET_LINK_LIBRARIES(afopencl - PRIVATE ${LAPACK_LIBRARIES} + PRIVATE ${LAPACKE_LIBRARIES} PRIVATE ${CBLAS_LIBRARIES}) ENDIF()