Skip to content

Commit 33bdcd1

Browse files
committed
[tbb] use proper CMake target
1 parent 3dd9e00 commit 33bdcd1

File tree

9 files changed

+146
-340
lines changed

9 files changed

+146
-340
lines changed

builtins/tbb/CMakeLists.txt

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
set(tbb_url ${lcgpackages}/oneTBB-2021.9.0.tar.gz)
2-
set(tbb_sha256 1ce48f34dada7837f510735ff1172f6e2c261b09460e3bf773b49791d247d24e)
1+
set(ROOT_TBB_URL ${lcgpackages}/oneTBB-2021.9.0.tar.gz)
2+
set(ROOT_TBB_HASH 1ce48f34dada7837f510735ff1172f6e2c261b09460e3bf773b49791d247d24e)
33

44
if(MSVC)
55
if(CMAKE_GENERATOR MATCHES Ninja)
@@ -13,25 +13,24 @@ if(MSVC)
1313
set(tbbsuffix "_debug")
1414
endif()
1515
endif()
16-
set(TBB_LIBRARIES ${CMAKE_BINARY_DIR}/lib/tbb12${tbbsuffix}.lib)
17-
set(TBB_CXXFLAGS "-D__TBB_NO_IMPLICIT_LINKAGE=1")
16+
set(ROOT_TBB_LIBRARY ${CMAKE_BINARY_DIR}/lib/tbb12${tbbsuffix}.lib)
1817
install(DIRECTORY ${CMAKE_BINARY_DIR}/bin/ DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries FILES_MATCHING PATTERN "tbb*.dll")
1918
install(DIRECTORY ${CMAKE_BINARY_DIR}/lib/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries FILES_MATCHING PATTERN "tbb*.lib")
2019
else()
2120
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
2221
set(tbbsuffix "_debug")
2322
endif()
24-
set(TBB_LIBRARIES ${CMAKE_BINARY_DIR}/lib/libtbb${tbbsuffix}${CMAKE_SHARED_LIBRARY_SUFFIX})
23+
set(ROOT_TBB_LIBRARY ${CMAKE_BINARY_DIR}/lib/libtbb${tbbsuffix}${CMAKE_SHARED_LIBRARY_SUFFIX})
2524
install(DIRECTORY ${CMAKE_BINARY_DIR}/lib/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries FILES_MATCHING PATTERN "libtbb*")
2625
endif()
2726
if(tbb_build)
2827
set(TBB_EXTRA_BUILD_ARGS --config ${tbb_build})
2928
endif()
3029

3130
ExternalProject_Add(
32-
TBB
33-
URL ${tbb_url}
34-
URL_HASH SHA256=${tbb_sha256}
31+
BUILTIN_TBB
32+
URL ${ROOT_TBB_URL}
33+
URL_HASH SHA256=${ROOT_TBB_HASH}
3534
INSTALL_DIR ${CMAKE_BINARY_DIR}
3635
CMAKE_ARGS -G ${CMAKE_GENERATOR}
3736
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
@@ -41,6 +40,7 @@ ExternalProject_Add(
4140
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
4241
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
4342
-DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_BINARY_DIR}/include
43+
-DCMAKE_INSTALL_BINDIR=${CMAKE_BINARY_DIR}/bin
4444
-DCMAKE_INSTALL_LIBDIR=${CMAKE_BINARY_DIR}/lib
4545
-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}
4646
-DTBBMALLOC_BUILD=OFF
@@ -51,18 +51,31 @@ ExternalProject_Add(
5151
BUILD_COMMAND ${CMAKE_COMMAND} --build . ${TBB_EXTRA_BUILD_ARGS}
5252
INSTALL_COMMAND ${CMAKE_COMMAND} --install . ${TBB_EXTRA_BUILD_ARGS}
5353
LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 LOG_OUTPUT_ON_FAILURE 1
54-
BUILD_BYPRODUCTS ${TBB_LIBRARIES}
54+
BUILD_BYPRODUCTS ${ROOT_TBB_LIBRARY}
5555
TIMEOUT 600
5656
)
5757

58+
set(ROOT_TBB_INCLUDE_DIR ${CMAKE_BINARY_DIR}/ginclude)
59+
5860
ExternalProject_Add_Step(
59-
TBB tbb2externals
60-
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/include/tbb ${CMAKE_BINARY_DIR}/ginclude/tbb
61-
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/include/oneapi ${CMAKE_BINARY_DIR}/ginclude/oneapi
61+
BUILTIN_TBB tbb2externals
62+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/include/tbb ${ROOT_TBB_INCLUDE_DIR}/tbb
63+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/include/oneapi ${ROOT_TBB_INCLUDE_DIR}/oneapi
6264
DEPENDEES install
6365
)
64-
set(TBB_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/ginclude PARENT_SCOPE)
65-
set(TBB_CXXFLAGS "-DTBB_SUPPRESS_DEPRECATED_MESSAGES=1" PARENT_SCOPE)
66-
# The following line is needed to generate the proper dependency with: BUILTINS TBB (in Imt)
67-
# and generated with this syntax: add_dependencies(${library} ${${arg1}_TARGET})
68-
set(TBB_TARGET TBB PARENT_SCOPE)
66+
67+
file(MAKE_DIRECTORY ${ROOT_TBB_INCLUDE_DIR})
68+
add_library(TBB::tbb IMPORTED STATIC GLOBAL)
69+
add_dependencies(TBB::tbb BUILTIN_TBB)
70+
set_target_properties(TBB::tbb PROPERTIES
71+
IMPORTED_LOCATION ${ROOT_TBB_LIBRARY}
72+
INTERFACE_INCLUDE_DIRECTORIES ${ROOT_TBB_INCLUDE_DIR})
73+
target_compile_definitions(TBB::tbb INTERFACE TBB_SUPPRESS_DEPRECATED_MESSAGES=1)
74+
if(MSVC)
75+
target_compile_definitions(TBB::tbb INTERFACE __TBB_NO_IMPLICIT_LINKAGE=1)
76+
endif()
77+
78+
set(TBB_FOUND ON PARENT_SCOPE)
79+
set(TBB_VERSION ${ROOT_TBB_VERSION} PARENT_SCOPE)
80+
set(TBB_INCLUDE_DIRS ${ROOT_TBB_INCLUDE_DIR} PARENT_SCOPE)
81+
set(TBB_LIBRARIES ${ROOT_TBB_LIBRARY} PARENT_SCOPE)

0 commit comments

Comments
 (0)