@@ -250,6 +250,36 @@ if(NOT TBB_FOUND)
250250 PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH
251251 PATH_SUFFIXES ${TBB_LIB_PATH_SUFFIX} )
252252
253+ # On Windows platforms also looks for .dll binaries.
254+ # If we find some, assume TBB is built as a shared library with the .lib/.dll pair,
255+ # otherwise assume it is built as a static library
256+ set (TBB_${_comp} _TARGET_TYPE SHARED)
257+ if (WIN32 )
258+ find_library (TBB_${_comp} _SHARED_LIBRARY_RELEASE
259+ NAMES ${_lib_name}${CMAKE_SHARED_LIBRARY_SUFFIX}
260+ HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR}
261+ PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH
262+ PATH_SUFFIXES
263+ "bin" ${TBB_LIB_PATH_SUFFIX}
264+ )
265+
266+ find_library (TBB_${_comp} _SHARED_LIBRARY_RELEASE
267+ NAMES ${_lib_name}${CMAKE_SHARED_LIBRARY_SUFFIX}
268+ HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR}
269+ PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH
270+ PATH_SUFFIXES
271+ "bin" ${TBB_LIB_PATH_SUFFIX}
272+ )
273+
274+ if (TBB_${_comp} _LIBRARY_RELEASE AND TBB_${_comp} _SHARED_LIBRARY_RELEASE)
275+ set (TBB_${_comp} _TARGET_TYPE SHARED)
276+ elseif (TBB_${_comp} _LIBRARY_DEBUG AND TBB_${_comp} _SHARED_LIBRARY_DEBUG)
277+ set (TBB_${_comp} _TARGET_TYPE SHARED)
278+ else ()
279+ set (TBB_${_comp} _TARGET_TYPE STATIC )
280+ endif ()
281+ endif ()
282+
253283 if (TBB_${_comp} _LIBRARY_DEBUG)
254284 list (APPEND TBB_LIBRARIES_DEBUG "${TBB_${_comp} _LIBRARY_DEBUG}" )
255285 endif ()
@@ -270,6 +300,7 @@ if(NOT TBB_FOUND)
270300 mark_as_advanced (TBB_${_comp} _LIBRARY_RELEASE)
271301 mark_as_advanced (TBB_${_comp} _LIBRARY_DEBUG)
272302 mark_as_advanced (TBB_${_comp} _LIBRARY)
303+ mark_as_advanced (TBB_${_comp} _TARGET_TYPE)
273304
274305 endif ()
275306 endforeach ()
@@ -302,26 +333,52 @@ if(NOT TBB_FOUND)
302333 ##################################
303334
304335 if (NOT CMAKE_VERSION VERSION_LESS 3.0 AND TBB_FOUND)
305- add_library (TBB::tbb SHARED IMPORTED )
306- set_target_properties (TBB::tbb PROPERTIES
307- INTERFACE_INCLUDE_DIRECTORIES ${TBB_INCLUDE_DIRS}
308- IMPORTED_LOCATION ${TBB_LIBRARIES} )
309- if (TBB_LIBRARIES_RELEASE AND TBB_LIBRARIES_DEBUG)
310- set_target_properties (TBB::tbb PROPERTIES
311- INTERFACE_COMPILE_DEFINITIONS "$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:TBB_USE_DEBUG=1>"
312- IMPORTED_LOCATION_DEBUG ${TBB_LIBRARIES_DEBUG}
313- IMPORTED_LOCATION_RELWITHDEBINFO ${TBB_LIBRARIES_DEBUG}
314- IMPORTED_LOCATION_RELEASE ${TBB_LIBRARIES_RELEASE}
315- IMPORTED_LOCATION_MINSIZEREL ${TBB_LIBRARIES_RELEASE}
316- )
317- elseif (TBB_LIBRARIES_RELEASE)
318- set_target_properties (TBB::tbb PROPERTIES IMPORTED_LOCATION ${TBB_LIBRARIES_RELEASE} )
319- else ()
320- set_target_properties (TBB::tbb PROPERTIES
321- INTERFACE_COMPILE_DEFINITIONS "${TBB_DEFINITIONS_DEBUG} "
322- IMPORTED_LOCATION ${TBB_LIBRARIES_DEBUG}
323- )
324- endif ()
336+
337+ foreach (_comp ${TBB_SEARCH_COMPONENTS} )
338+ if (";${TBB_FIND_COMPONENTS} ;tbb" MATCHES ";${_comp} ;" )
339+
340+ add_library (TBB::${_comp} ${TBB_${_comp} _TARGET_TYPE} IMPORTED )
341+ set_property (TARGET TBB::${_comp} APPEND PROPERTY
342+ INTERFACE_INCLUDE_DIRECTORIES ${TBB_INCLUDE_DIRS}
343+ )
344+
345+ if (TBB_${_comp} _LIBRARY_DEBUG)
346+ set_property (TARGET TBB::${_comp} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
347+ set_property (TARGET TBB::${_comp} APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:TBB_USE_DEBUG=1>" )
348+
349+ if (WIN32 AND TBB_${_comp} _SHARED_LIBRARY_DEBUG)
350+ set_target_properties (TBB::${_comp} PROPERTIES
351+ IMPORTED_IMPLIB_LOCATION_DEBUG ${TBB_${_comp} _LIBRARY_DEBUG}
352+ IMPORTED_IMPLIB_LOCATION_RELWITHDEBINFO ${TBB_${_comp} _LIBRARY_DEBUG}
353+
354+ IMPORTED_LOCATION_DEBUG ${TBB_${_comp} _SHARED_LIBRARY_DEBUG}
355+ IMPORTED_LOCATION_RELWITHDEBINFO ${TBB_${_comp} _SHARED_LIBRARY_DEBUG})
356+ else ()
357+ set_target_properties (TBB::${_comp} PROPERTIES
358+ IMPORTED_LOCATION_DEBUG ${TBB_${_comp} _LIBRARY_DEBUG}
359+ IMPORTED_LOCATION_RELWITHDEBINFO ${TBB_${_comp} _LIBRARY_DEBUG})
360+ endif ()
361+ endif ()
362+
363+ if (TBB_${_comp} _LIBRARY_RELEASE)
364+ set_property (TARGET TBB::${_comp} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
365+
366+ if (WIN32 AND TBB_${_comp} _SHARED_LIBRARY_RELEASE)
367+ set_target_properties (TBB::${_comp} PROPERTIES
368+ IMPORTED_IMPLIB_LOCATION_RELEASE ${TBB_${_comp} _LIBRARY_RELEASE}
369+ IMPORTED_IMPLIB_LOCATION_MINSIZEREL ${TBB_${_comp} _LIBRARY_RELEASE}
370+
371+ IMPORTED_LOCATION_RELEASE ${TBB_${_comp} _SHARED_LIBRARY_RELEASE}
372+ IMPORTED_LOCATION_MINSIZEREL ${TBB_${_comp} _SHARED_LIBRARY_RELEASE})
373+ else ()
374+ set_target_properties (TBB::${_comp} PROPERTIES
375+ IMPORTED_LOCATION_RELEASE ${TBB_${_comp} _LIBRARY_RELEASE}
376+ IMPORTED_LOCATION_MINSIZEREL ${TBB_${_comp} _LIBRARY_RELEASE})
377+ endif ()
378+ endif ()
379+
380+ endif ()
381+ endforeach ()
325382 endif ()
326383
327384 mark_as_advanced (TBB_INCLUDE_DIRS TBB_LIBRARIES)
0 commit comments