Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
87 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# defines: | ||
# MKL_INCLUDE_DIRS | ||
# MKL_LIBRARIES | ||
# MKL_COMPILER_LIBRARIES - a list of compiler libraries (file names) required for MKL | ||
|
||
#unset(MKL_LIB_DIR CACHE) | ||
#unset(MKL_COMPILER_LIB_DIR CACHE) | ||
#unset(MKL_COMPILER_REDIST_PATH CACHE) | ||
|
||
if(NOT HAVE_MKL) | ||
find_path(MKL_INCLUDE_DIRS "mkl.h" PATHS ${MKL_INCLUDE_DIR} DOC "The path to MKL headers") | ||
|
||
if(MKL_INCLUDE_DIRS) | ||
|
||
get_filename_component(_MKL_LIB_PATH "${MKL_INCLUDE_DIRS}/../lib" ABSOLUTE) | ||
|
||
if(APPLE) | ||
# MKL 2017 for mac has only 64 bit libraries without directory prefix | ||
set(_MKL_COMPILER_LIB_PATH ${MKL_INCLUDE_DIRS}/../../compiler/lib) | ||
else() | ||
if(CMAKE_SIZEOF_VOID_P EQUAL 8) | ||
set(_MKL_LIB_PATH "${_MKL_LIB_PATH}/intel64") | ||
set(_MKL_COMPILER_LIB_PATH ${MKL_INCLUDE_DIRS}/../../compiler/lib/intel64) | ||
if(WIN32) | ||
set(_MKL_COMPILER_REDIST_PATH ${MKL_INCLUDE_DIRS}/../../redist/intel64/compiler) | ||
endif() | ||
else() | ||
set(_MKL_LIB_PATH "${_MKL_LIB_PATH}/ia32") | ||
set(_MKL_COMPILER_LIB_PATH ${MKL_INCLUDE_DIRS}/../../compiler/lib/ia32) | ||
if(WIN32) | ||
set(_MKL_COMPILER_REDIST_PATH ${MKL_INCLUDE_DIRS}/../../redist/ia32/compiler) | ||
endif() | ||
endif() | ||
endif() | ||
|
||
# On Linux and Apple take libraries for redistribution from the same location that is used for linking | ||
if(UNIX) | ||
set(_MKL_COMPILER_REDIST_PATH ${_MKL_COMPILER_LIB_PATH}) | ||
endif() | ||
|
||
if(WIN32) | ||
set(MKL_COMPILER_LIBRARIES libiomp5md.dll) | ||
set(MKL_LIBRARIES ${MKL_LIBRARIES} mkl_intel_lp64 mkl_core mkl_intel_thread libiomp5md) | ||
elseif(APPLE) | ||
set(MKL_COMPILER_LIBRARIES libiomp5.dylib) | ||
# generated by https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor | ||
# with the following options: OSX; Clang; Intel64; static; 32 bit integer; OpenMP; Intel OpenMP | ||
set(MKL_LIBRARIES ${MKL_LIBRARIES} libmkl_intel_lp64.a libmkl_intel_thread.a libmkl_core.a iomp5 pthread m dl) | ||
else() | ||
set(MKL_COMPILER_LIBRARIES libiomp5.so) | ||
# a --start-group / --end-group pair is required when linking with static MKL on GNU. | ||
# see https://software.intel.com/en-us/forums/topic/280974#comment-1478780 | ||
# and https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor | ||
set(MKL_LIBRARIES ${MKL_LIBRARIES} | ||
"-Wl,--start-group" | ||
libmkl_intel_lp64.a libmkl_core.a libmkl_intel_thread.a | ||
"-Wl,--end-group" | ||
"-Wl,--exclude-libs,libmkl_intel_lp64.a,--exclude-libs,libmkl_core.a,--exclude-libs,libmkl_intel_thread.a,--exclude-libs,iomp5" | ||
iomp5 dl pthread m) | ||
endif() | ||
|
||
set(MKL_LIB_DIR "${_MKL_LIB_PATH}" | ||
CACHE PATH "Full path of MKL library directory") | ||
set(MKL_COMPILER_LIB_DIR "${_MKL_COMPILER_LIB_PATH}" | ||
CACHE PATH "Full path of MKL compiler library directory") | ||
set(MKL_COMPILER_REDIST_PATH "${_MKL_COMPILER_REDIST_PATH}" | ||
CACHE PATH "Full path of MKL compiler redistributable library directory") | ||
|
||
link_directories(${MKL_LIB_DIR} ${MKL_COMPILER_LIB_DIR}) | ||
|
||
set(HAVE_MKL 1) | ||
|
||
endif(MKL_INCLUDE_DIRS) | ||
endif(NOT HAVE_MKL) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters