xref: /aosp_15_r20/external/pytorch/cmake/public/mkl.cmake (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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