1find_package(MKL QUIET) 2 3if(TARGET caffe2::mkl) 4 return() 5endif() 6 7add_library(caffe2::mkl INTERFACE IMPORTED) 8target_include_directories(caffe2::mkl INTERFACE ${MKL_INCLUDE_DIR}) 9target_link_libraries(caffe2::mkl INTERFACE ${MKL_LIBRARIES}) 10foreach(MKL_LIB IN LISTS MKL_LIBRARIES) 11 if(EXISTS "${MKL_LIB}") 12 get_filename_component(MKL_LINK_DIR "${MKL_LIB}" DIRECTORY) 13 if(IS_DIRECTORY "${MKL_LINK_DIR}") 14 target_link_directories(caffe2::mkl INTERFACE "${MKL_LINK_DIR}") 15 endif() 16 endif() 17endforeach() 18 19# TODO: This is a hack, it will not pick up architecture dependent 20# MKL libraries correctly; see https://github.com/pytorch/pytorch/issues/73008 21set_property( 22 TARGET caffe2::mkl PROPERTY INTERFACE_LINK_DIRECTORIES 23 ${MKL_ROOT}/lib ${MKL_ROOT}/lib/intel64 ${MKL_ROOT}/lib/intel64_win ${MKL_ROOT}/lib/win-x64) 24 25if(UNIX) 26 if(USE_STATIC_MKL) 27 foreach(MKL_LIB_PATH IN LISTS MKL_LIBRARIES) 28 if(NOT EXISTS "${MKL_LIB_PATH}") 29 continue() 30 endif() 31 32 get_filename_component(MKL_LIB_NAME "${MKL_LIB_PATH}" NAME) 33 34 # Match archive libraries starting with "libmkl_" 35 if(MKL_LIB_NAME MATCHES "^libmkl_" AND MKL_LIB_NAME MATCHES ".a$") 36 target_link_options(caffe2::mkl INTERFACE "-Wl,--exclude-libs,${MKL_LIB_NAME}") 37 endif() 38 endforeach() 39 endif() 40endif() 41