@@ -137,21 +137,27 @@ if(NOT TBB_FOUND)
137137 set (TBB_ARCHITECTURE "ia32" )
138138 endif ()
139139
140- # Set the TBB search library path search suffix based on the version of VC
140+ # Set the TBB search library/runtime path search suffix based on the version of VC
141141 if (WINDOWS_STORE)
142142 set (TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE} /vc11_ui" )
143+ set (TBB_RUNTIME_PATH_SUFFIX "bin/${TBB_ARCHITECTURE} /vc11_ui" )
143144 elseif (MSVC14)
144145 set (TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE} /vc14" )
146+ set (TBB_RUNTIME_PATH_SUFFIX "bin/${TBB_ARCHITECTURE} /vc14" )
145147 elseif (MSVC12)
146148 set (TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE} /vc12" )
149+ set (TBB_RUNTIME_PATH_SUFFIX "bin/${TBB_ARCHITECTURE} /vc12" )
147150 elseif (MSVC11)
148151 set (TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE} /vc11" )
152+ set (TBB_RUNTIME_PATH_SUFFIX "bin/${TBB_ARCHITECTURE} /vc11" )
149153 elseif (MSVC10)
150154 set (TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE} /vc10" )
155+ set (TBB_RUNTIME_PATH_SUFFIX "bin/${TBB_ARCHITECTURE} /vc10" )
151156 endif ()
152157
153- # Add the library path search suffix for the VC independent version of TBB
158+ # Add the library/runtime path search suffix for the VC independent version of TBB
154159 list (APPEND TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE} /vc_mt" )
160+ list (APPEND TBB_RUNTIME_PATH_SUFFIX "bin/${TBB_ARCHITECTURE} /vc_mt" )
155161
156162 elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
157163 # OS X
@@ -176,12 +182,13 @@ if(NOT TBB_FOUND)
176182 endif ()
177183 endif ()
178184
179- # The above TBB_LIB_PATH_SUFFIX is based on where Intel puts the libraries
185+ # The above TBB_LIB_PATH_SUFFIX/TBB_RUNTIME_PATH_SUFFIX is based on where Intel puts the libraries
180186 # in the package of prebuilt libraries it distributes. However, users may
181- # install these shared libraries into the more conventional "lib" directory
187+ # install these shared libraries into the more conventional "lib"/"bin" directory
182188 # (especially when building from source), so we add that as an additional
183189 # location to search.
184190 list (APPEND TBB_LIB_PATH_SUFFIX "lib" )
191+ list (APPEND TBB_RUNTIME_PATH_SUFFIX "bin" )
185192
186193 ##################################
187194 # Find the TBB include dir
@@ -250,6 +257,32 @@ if(NOT TBB_FOUND)
250257 PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH
251258 PATH_SUFFIXES ${TBB_LIB_PATH_SUFFIX} )
252259
260+ # On Windows platforms also looks for .dll binaries.
261+ # If we find some, assume TBB is built as a shared library with the .lib/.dll pair,
262+ # otherwise assume it is built as a static library
263+ set (TBB_${_comp} _TARGET_TYPE SHARED)
264+ if (WIN32 )
265+ find_file (TBB_${_comp} _SHARED_LIBRARY_RELEASE
266+ NAMES ${CMAKE_SHARED_LIBRARY_PREFIX}${_lib_name}${CMAKE_SHARED_LIBRARY_SUFFIX}
267+ HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR}
268+ PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH
269+ PATH_SUFFIXES ${TBB_RUNTIME_PATH_SUFFIX} )
270+
271+ find_file (TBB_${_comp} _SHARED_LIBRARY_DEBUG
272+ NAMES ${CMAKE_SHARED_LIBRARY_PREFIX}${_lib_name} _debug${CMAKE_SHARED_LIBRARY_SUFFIX}
273+ HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR}
274+ PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH
275+ PATH_SUFFIXES ${TBB_RUNTIME_PATH_SUFFIX} )
276+
277+ if (TBB_${_comp} _LIBRARY_RELEASE AND TBB_${_comp} _SHARED_LIBRARY_RELEASE)
278+ set (TBB_${_comp} _TARGET_TYPE SHARED)
279+ elseif (TBB_${_comp} _LIBRARY_DEBUG AND TBB_${_comp} _SHARED_LIBRARY_DEBUG)
280+ set (TBB_${_comp} _TARGET_TYPE SHARED)
281+ else ()
282+ set (TBB_${_comp} _TARGET_TYPE STATIC )
283+ endif ()
284+ endif ()
285+
253286 if (TBB_${_comp} _LIBRARY_DEBUG)
254287 list (APPEND TBB_LIBRARIES_DEBUG "${TBB_${_comp} _LIBRARY_DEBUG}" )
255288 endif ()
@@ -270,6 +303,7 @@ if(NOT TBB_FOUND)
270303 mark_as_advanced (TBB_${_comp} _LIBRARY_RELEASE)
271304 mark_as_advanced (TBB_${_comp} _LIBRARY_DEBUG)
272305 mark_as_advanced (TBB_${_comp} _LIBRARY)
306+ mark_as_advanced (TBB_${_comp} _TARGET_TYPE)
273307
274308 endif ()
275309 endforeach ()
@@ -302,26 +336,61 @@ if(NOT TBB_FOUND)
302336 ##################################
303337
304338 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 ()
339+
340+ foreach (_comp ${TBB_SEARCH_COMPONENTS} )
341+ if (";${TBB_FIND_COMPONENTS} ;tbb" MATCHES ";${_comp} ;" )
342+
343+ add_library (TBB::${_comp} ${TBB_${_comp} _TARGET_TYPE} IMPORTED )
344+ set_property (TARGET TBB::${_comp} APPEND PROPERTY
345+ INTERFACE_INCLUDE_DIRECTORIES ${TBB_INCLUDE_DIRS}
346+ )
347+
348+ if (WIN32 AND TBB_${_comp} _SHARED_LIBRARY_${TBB_BUILD_TYPE} )
349+ set_target_properties (TBB::${_comp} PROPERTIES
350+ IMPORTED_IMPLIB ${TBB_${_comp} _LIBRARY_${TBB_BUILD_TYPE} }
351+ IMPORTED_LOCATION ${TBB_${_comp} _SHARED_LIBRARY_${TBB_BUILD_TYPE} })
352+ else ()
353+ set_target_properties (TBB::${_comp} PROPERTIES
354+ IMPORTED_LOCATION ${TBB_${_comp} _LIBRARY_${TBB_BUILD_TYPE} })
355+ endif ()
356+
357+ if (TBB_${_comp} _LIBRARY_DEBUG)
358+ set_property (TARGET TBB::${_comp} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
359+ set_property (TARGET TBB::${_comp} APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:TBB_USE_DEBUG=1>" )
360+
361+ if (WIN32 AND TBB_${_comp} _SHARED_LIBRARY_DEBUG)
362+ set_target_properties (TBB::${_comp} PROPERTIES
363+ IMPORTED_IMPLIB_DEBUG ${TBB_${_comp} _LIBRARY_DEBUG}
364+ IMPORTED_IMPLIB_RELWITHDEBINFO ${TBB_${_comp} _LIBRARY_DEBUG}
365+
366+ IMPORTED_LOCATION_DEBUG ${TBB_${_comp} _SHARED_LIBRARY_DEBUG}
367+ IMPORTED_LOCATION_RELWITHDEBINFO ${TBB_${_comp} _SHARED_LIBRARY_DEBUG})
368+ else ()
369+ set_target_properties (TBB::${_comp} PROPERTIES
370+ IMPORTED_LOCATION_DEBUG ${TBB_${_comp} _LIBRARY_DEBUG}
371+ IMPORTED_LOCATION_RELWITHDEBINFO ${TBB_${_comp} _LIBRARY_DEBUG})
372+ endif ()
373+ endif ()
374+
375+ if (TBB_${_comp} _LIBRARY_RELEASE)
376+ set_property (TARGET TBB::${_comp} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
377+
378+ if (WIN32 AND TBB_${_comp} _SHARED_LIBRARY_RELEASE)
379+ set_target_properties (TBB::${_comp} PROPERTIES
380+ IMPORTED_IMPLIB_RELEASE ${TBB_${_comp} _LIBRARY_RELEASE}
381+ IMPORTED_IMPLIB_MINSIZEREL ${TBB_${_comp} _LIBRARY_RELEASE}
382+
383+ IMPORTED_LOCATION_RELEASE ${TBB_${_comp} _SHARED_LIBRARY_RELEASE}
384+ IMPORTED_LOCATION_MINSIZEREL ${TBB_${_comp} _SHARED_LIBRARY_RELEASE})
385+ else ()
386+ set_target_properties (TBB::${_comp} PROPERTIES
387+ IMPORTED_LOCATION_RELEASE ${TBB_${_comp} _LIBRARY_RELEASE}
388+ IMPORTED_LOCATION_MINSIZEREL ${TBB_${_comp} _LIBRARY_RELEASE})
389+ endif ()
390+ endif ()
391+
392+ endif ()
393+ endforeach ()
325394 endif ()
326395
327396 mark_as_advanced (TBB_INCLUDE_DIRS TBB_LIBRARIES)
0 commit comments