outsource detect functions

This commit is contained in:
Radovan Bast 2015-09-17 00:55:54 +02:00
parent 8d81310cc6
commit d9f4b0a3b4
3 changed files with 46 additions and 6 deletions

View File

@ -20,10 +20,6 @@
option(ENABLE_CBLAS "Detect and link to CBLAS" OFF) option(ENABLE_CBLAS "Detect and link to CBLAS" OFF)
if(ENABLE_CBLAS) if(ENABLE_CBLAS)
if(ENABLE_STATIC_LINKING)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
endif()
include(CheckIncludeFile) include(CheckIncludeFile)
function(_find_include_dir _names _hints _result) function(_find_include_dir _names _hints _result)
@ -68,6 +64,10 @@ if(ENABLE_CBLAS)
set(CBLAS_LIBRARIES "undefined") set(CBLAS_LIBRARIES "undefined")
set(CBLAS_INCLUDE_DIR "undefined") set(CBLAS_INCLUDE_DIR "undefined")
if(ENABLE_STATIC_LINKING)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
endif()
if(APPLE) if(APPLE)
_find_include_dir(Accelerate/Accelerate.h /usr CBLAS_INCLUDE_DIR) _find_include_dir(Accelerate/Accelerate.h /usr CBLAS_INCLUDE_DIR)
_find_library(Accelerate cblas_dgemm CBLAS_LIBRARIES) _find_library(Accelerate cblas_dgemm CBLAS_LIBRARIES)
@ -76,7 +76,9 @@ if(ENABLE_CBLAS)
_find_library(cblas cblas_dgemm CBLAS_LIBRARIES) _find_library(cblas cblas_dgemm CBLAS_LIBRARIES)
endif() endif()
if(NOT ${CBLAS_INCLUDE_DIR} STREQUAL "undefined" AND NOT ${CBLAS_LIBRARIES} STREQUAL "undefined") if(NOT "${CBLAS_LIBRARIES}" STREQUAL "undefined")
if(NOT "${CBLAS_INCLUDE_DIR}" STREQUAL "undefined")
set(CBLAS_FOUND TRUE) set(CBLAS_FOUND TRUE)
endif() endif()
endif()
endif() endif()

View File

@ -0,0 +1,16 @@
include(CheckIncludeFile)
function(_find_include_dir _names _hints _result)
find_path(_include_dir
NAMES ${_names}
HINTS ${_hints}
)
set(_all_include_files_work TRUE)
foreach(_name ${_names})
check_include_file(${_include_dir}/${_name} _include_file_works)
set(_all_include_files_work (${_all_include_files_work} AND ${_include_file_works}))
endforeach()
if(${_all_include_files_work})
set(${_result} ${_include_dir} PARENT_SCOPE)
endif()
endfunction()

View File

@ -0,0 +1,22 @@
include(CheckFunctionExists)
function(_find_library _names _check_function _result)
if(APPLE)
find_library(_lib
NAMES ${_names}
PATHS /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64
ENV DYLD_LIBRARY_PATH
)
else()
find_library(_lib
NAMES ${_names}
PATHS /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64
ENV LD_LIBRARY_PATH
)
endif()
set(CMAKE_REQUIRED_LIBRARIES ${_lib})
check_function_exists(${_check_function} _library_works)
if(${_library_works})
set(${_result} ${_lib} PARENT_SCOPE)
endif()
endfunction()