find_package(MKL QUIET) if(TARGET caffe2::mkl) return() endif() add_library(caffe2::mkl INTERFACE IMPORTED) target_include_directories(caffe2::mkl INTERFACE ${MKL_INCLUDE_DIR}) target_link_libraries(caffe2::mkl INTERFACE ${MKL_LIBRARIES}) foreach(MKL_LIB IN LISTS MKL_LIBRARIES) if(EXISTS "${MKL_LIB}") get_filename_component(MKL_LINK_DIR "${MKL_LIB}" DIRECTORY) if(IS_DIRECTORY "${MKL_LINK_DIR}") target_link_directories(caffe2::mkl INTERFACE "${MKL_LINK_DIR}") endif() endif() endforeach() # TODO: This is a hack, it will not pick up architecture dependent # MKL libraries correctly; see https://github.com/pytorch/pytorch/issues/73008 set_property( TARGET caffe2::mkl PROPERTY INTERFACE_LINK_DIRECTORIES ${MKL_ROOT}/lib ${MKL_ROOT}/lib/intel64 ${MKL_ROOT}/lib/intel64_win ${MKL_ROOT}/lib/win-x64) if(UNIX) if(USE_STATIC_MKL) foreach(MKL_LIB_PATH IN LISTS MKL_LIBRARIES) if(NOT EXISTS "${MKL_LIB_PATH}") continue() endif() get_filename_component(MKL_LIB_NAME "${MKL_LIB_PATH}" NAME) # Match archive libraries starting with "libmkl_" if(MKL_LIB_NAME MATCHES "^libmkl_" AND MKL_LIB_NAME MATCHES ".a$") target_link_options(caffe2::mkl INTERFACE "-Wl,--exclude-libs,${MKL_LIB_NAME}") endif() endforeach() endif() endif()