1 # Copyright (C) 2018-2019 Intel Corporation
3 # SPDX-License-Identifier: Apache-2.0
6 function(set_ie_threading_interface_for TARGET_NAME)
7 set(IE_THREAD_DEFINE "IE_THREAD_SEQ")
9 if (THREADING STREQUAL "TBB")
10 if (NOT (IE_MAIN_SOURCE_DIR))
11 set(incl_path ${IE_EXTERNAL_DIR}/tbb/include)
13 set(lib_rel_path ${IE_LIB_REL_DIR})
14 set(lib_dbg_path ${IE_LIB_DBG_DIR})
16 set(lib_rel_path ${IE_EXTERNAL_DIR}/tbb/lib)
17 set(lib_dbg_path ${lib_rel_path})
20 set(incl_path ${TBB}/include)
21 set(lib_rel_path ${TBB}/lib)
22 set(lib_dbg_path ${lib_rel_path})
25 if (NOT TBB_INCLUDE_DIRS OR NOT TBB_LIBRARIES_RELEASE OR NOT TBB_LIBRARIES_DEBUG)
26 find_path(TBB_INCLUDE_DIRS tbb/tbb.h ${incl_path} NO_DEFAULT_PATH)
27 find_library(TBB_LIBRARIES_RELEASE tbb ${lib_rel_path} NO_DEFAULT_PATH)
28 find_library(TBB_LIBRARIES_DEBUG tbb_debug ${lib_dbg_path} NO_DEFAULT_PATH)
29 ext_message(STATUS "TBB include: ${TBB_INCLUDE_DIRS}")
30 ext_message(STATUS "TBB Release lib: ${TBB_LIBRARIES_RELEASE}")
31 ext_message(STATUS "TBB Debug lib: ${TBB_LIBRARIES_DEBUG}")
34 if (NOT TBB_INCLUDE_DIRS OR NOT TBB_LIBRARIES_RELEASE OR NOT TBB_LIBRARIES_DEBUG)
35 ext_message(WARNING "TBB not found. TBB support will be disabled. ${IE_THREAD_DEFINE} is defined")
37 set(IE_THREAD_DEFINE "IE_THREAD_TBB")
38 target_include_directories(${TARGET_NAME} PUBLIC ${TBB_INCLUDE_DIRS})
40 target_link_libraries(${TARGET_NAME} PUBLIC "-nodefaultlib:vcomp")
41 target_link_libraries(${TARGET_NAME} PUBLIC "$<$<CONFIG:DEBUG>:${TBB_LIBRARIES_DEBUG}>;$<$<NOT:$<CONFIG:DEBUG>>:${TBB_LIBRARIES_RELEASE}>")
43 if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
44 target_link_libraries(${TARGET_NAME} PUBLIC ${TBB_LIBRARIES_DEBUG})
46 target_link_libraries(${TARGET_NAME} PUBLIC ${TBB_LIBRARIES_RELEASE})
50 elseif (THREADING STREQUAL "OMP")
52 set(omp_lib_name libiomp5md)
54 set(omp_lib_name iomp5)
57 if (NOT(IE_MAIN_SOURCE_DIR))
59 set(lib_rel_path ${IE_LIB_REL_DIR})
60 set(lib_dbg_path ${IE_LIB_DBG_DIR})
62 set(lib_rel_path ${IE_EXTERNAL_DIR}/omp/lib)
63 set(lib_dbg_path ${lib_rel_path})
66 set(lib_rel_path ${OMP}/lib)
67 set(lib_dbg_path ${lib_rel_path})
70 if (NOT OMP_LIBRARIES_RELEASE OR NOT OMP_LIBRARIES_DEBUG)
71 find_library(OMP_LIBRARIES_RELEASE ${omp_lib_name} ${lib_rel_path} NO_DEFAULT_PATH)
72 find_library(OMP_LIBRARIES_DEBUG ${omp_lib_name} ${lib_dbg_path} NO_DEFAULT_PATH)
73 ext_message(STATUS "OMP Release lib: ${OMP_LIBRARIES_RELEASE}")
74 ext_message(STATUS "OMP Debug lib: ${OMP_LIBRARIES_DEBUG}")
77 if (NOT OMP_LIBRARIES_RELEASE OR NOT OMP_LIBRARIES_DEBUG)
78 ext_message(WARNING "Intel OpenMP not found. Intel OpenMP support will be disabled. ${IE_THREAD_DEFINE} is defined")
80 set(IE_THREAD_DEFINE "IE_THREAD_OMP")
83 target_compile_options(${TARGET_NAME} PUBLIC ${OpenMP_CXX_FLAGS} /openmp)
84 target_compile_options(${TARGET_NAME} PUBLIC ${OpenMP_CXX_FLAGS} /Qopenmp)
86 target_link_libraries(${TARGET_NAME} PUBLIC "-nodefaultlib:vcomp")
87 target_link_libraries(${TARGET_NAME} PUBLIC "$<$<CONFIG:DEBUG>:${OMP_LIBRARIES_DEBUG}>;$<$<NOT:$<CONFIG:DEBUG>>:${OMP_LIBRARIES_RELEASE}>")
89 target_compile_options(${TARGET_NAME} PUBLIC ${OpenMP_CXX_FLAGS} -fopenmp)
90 if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
91 target_link_libraries(${TARGET_NAME} PUBLIC ${OMP_LIBRARIES_DEBUG})
93 target_link_libraries(${TARGET_NAME} PUBLIC ${OMP_LIBRARIES_RELEASE})
100 target_compile_definitions(${TARGET_NAME} PUBLIC -DIE_THREAD=${IE_THREAD_DEFINE})
102 if (NOT THREADING STREQUAL "SEQ")
103 find_package(Threads REQUIRED)
104 target_link_libraries(${TARGET_NAME} PUBLIC ${CMAKE_THREAD_LIBS_INIT})
106 endfunction(set_ie_threading_interface_for)