Skip to content

Commit 3f1f948

Browse files
committed
CMake: add option TBB_INSTALL
Signed-off-by: Vladislav Shchapov <[email protected]>
1 parent 9f59fcf commit 3f1f948

File tree

4 files changed

+105
-98
lines changed

4 files changed

+105
-98
lines changed

CMakeLists.txt

+30-28
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ option(TBB_FIND_PACKAGE "Enable search for external oneTBB using find_package in
112112
option(TBB_DISABLE_HWLOC_AUTOMATIC_SEARCH "Disable HWLOC automatic search by pkg-config tool" ${CMAKE_CROSSCOMPILING})
113113
option(TBB_ENABLE_IPO "Enable Interprocedural Optimization (IPO) during the compilation" ON)
114114
option(TBB_FUZZ_TESTING "Enable fuzz testing" OFF)
115+
option(TBB_INSTALL "Enable installation" ON)
115116

116117
if (NOT DEFINED BUILD_SHARED_LIBS)
117118
set(BUILD_SHARED_LIBS ON)
@@ -255,34 +256,35 @@ else()
255256
else()
256257
add_subdirectory(src/tbbbind)
257258
endif()
258-
259-
# -------------------------------------------------------------------
260-
# Installation instructions
261-
include(CMakePackageConfigHelpers)
262-
263-
install(DIRECTORY include/
264-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
265-
COMPONENT devel)
266-
267-
install(EXPORT ${PROJECT_NAME}Targets
268-
NAMESPACE TBB::
269-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
270-
COMPONENT devel)
271-
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
272-
"include(\${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}Targets.cmake)\n")
273-
274-
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
275-
COMPATIBILITY AnyNewerVersion)
276-
277-
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
278-
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
279-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
280-
COMPONENT devel)
281-
282-
install(FILES "README.md"
283-
DESTINATION ${CMAKE_INSTALL_DOCDIR}
284-
COMPONENT devel)
285-
# -------------------------------------------------------------------
259+
if (TBB_INSTALL)
260+
# -------------------------------------------------------------------
261+
# Installation instructions
262+
include(CMakePackageConfigHelpers)
263+
264+
install(DIRECTORY include/
265+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
266+
COMPONENT devel)
267+
268+
install(EXPORT ${PROJECT_NAME}Targets
269+
NAMESPACE TBB::
270+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
271+
COMPONENT devel)
272+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
273+
"include(\${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}Targets.cmake)\n")
274+
275+
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
276+
COMPATIBILITY AnyNewerVersion)
277+
278+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
279+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
280+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
281+
COMPONENT devel)
282+
283+
install(FILES "README.md"
284+
DESTINATION ${CMAKE_INSTALL_DOCDIR}
285+
COMPONENT devel)
286+
# -------------------------------------------------------------------
287+
endif()
286288
endif()
287289

288290
if (TBB_TEST)

cmake/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ TBBMALLOC_BUILD:BOOL - Enable Intel(R) oneAPI Threading Building Blocks (oneTBB)
1414
TBBMALLOC_PROXY_BUILD:BOOL - Enable Intel(R) oneAPI Threading Building Blocks (oneTBB) memory allocator proxy build (requires TBBMALLOC_BUILD. ON by default)
1515
TBB4PY_BUILD:BOOL - Enable Intel(R) oneAPI Threading Building Blocks (oneTBB) Python module build (OFF by default)
1616
TBB_CPF:BOOL - Enable preview features of the library (OFF by default)
17+
TBB_INSTALL:BOOL - Enable installation (ON by default)
1718
TBB_INSTALL_VARS:BOOL - Enable auto-generated vars installation(packages generated by `cpack` and `make install` will also include the vars script)(OFF by default)
1819
TBB_VALGRIND_MEMCHECK:BOOL - Enable scan for memory leaks using Valgrind (OFF by default)
1920
TBB_DISABLE_HWLOC_AUTOMATIC_SEARCH - Disable HWLOC automatic search by pkg-config tool (OFF by default)

cmake/utils.cmake

+23-21
Original file line numberDiff line numberDiff line change
@@ -23,31 +23,33 @@ macro(tbb_remove_compile_flag flag)
2323
endmacro()
2424

2525
macro(tbb_install_target target)
26-
install(TARGETS ${target}
27-
EXPORT TBBTargets
28-
LIBRARY
29-
DESTINATION ${CMAKE_INSTALL_LIBDIR}
30-
NAMELINK_SKIP
31-
COMPONENT runtime
32-
RUNTIME
33-
DESTINATION ${CMAKE_INSTALL_BINDIR}
34-
COMPONENT runtime
35-
ARCHIVE
36-
DESTINATION ${CMAKE_INSTALL_LIBDIR}
37-
COMPONENT devel)
38-
39-
if (BUILD_SHARED_LIBS)
26+
if (TBB_INSTALL)
4027
install(TARGETS ${target}
28+
EXPORT TBBTargets
4129
LIBRARY
4230
DESTINATION ${CMAKE_INSTALL_LIBDIR}
43-
NAMELINK_ONLY
31+
NAMELINK_SKIP
32+
COMPONENT runtime
33+
RUNTIME
34+
DESTINATION ${CMAKE_INSTALL_BINDIR}
35+
COMPONENT runtime
36+
ARCHIVE
37+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
4438
COMPONENT devel)
45-
endif()
46-
if (MSVC AND BUILD_SHARED_LIBS)
47-
install(FILES $<TARGET_PDB_FILE:${target}>
48-
DESTINATION ${CMAKE_INSTALL_BINDIR}
49-
COMPONENT devel
50-
OPTIONAL)
39+
40+
if (BUILD_SHARED_LIBS)
41+
install(TARGETS ${target}
42+
LIBRARY
43+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
44+
NAMELINK_ONLY
45+
COMPONENT devel)
46+
endif()
47+
if (MSVC AND BUILD_SHARED_LIBS)
48+
install(FILES $<TARGET_PDB_FILE:${target}>
49+
DESTINATION ${CMAKE_INSTALL_BINDIR}
50+
COMPONENT devel
51+
OPTIONAL)
52+
endif()
5153
endif()
5254
endmacro()
5355

src/tbb/CMakeLists.txt

+51-49
Original file line numberDiff line numberDiff line change
@@ -128,57 +128,59 @@ target_link_libraries(tbb
128128

129129
tbb_install_target(tbb)
130130

131-
if (MSVC)
132-
# Create a copy of target linker file (tbb<ver>[_debug].lib) with legacy name (tbb[_debug].lib)
133-
# to support previous user experience for linkage.
134-
install(FILES
135-
$<TARGET_LINKER_FILE:tbb>
136-
DESTINATION lib
137-
CONFIGURATIONS RelWithDebInfo Release MinSizeRel
138-
RENAME tbb.lib
139-
COMPONENT devel
140-
)
141-
142-
install(FILES
143-
$<TARGET_LINKER_FILE:tbb>
144-
DESTINATION lib
145-
CONFIGURATIONS Debug
146-
RENAME tbb_debug.lib
147-
COMPONENT devel
148-
)
149-
endif()
150-
151-
set(_tbb_pc_lib_name tbb)
152-
153-
if (WIN32)
154-
set(_tbb_pc_lib_name ${_tbb_pc_lib_name}${TBB_BINARY_VERSION})
155-
endif()
156-
157-
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
158-
set(TBB_PC_NAME tbb)
159-
else()
160-
set(TBB_PC_NAME tbb32)
161-
endif()
162-
163-
set(_prefix_for_pc_file "${CMAKE_INSTALL_PREFIX}")
164-
165-
if (IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
166-
set(_libdir_for_pc_file "${CMAKE_INSTALL_LIBDIR}")
167-
else()
168-
set(_libdir_for_pc_file "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
131+
if (TBB_INSTALL)
132+
if (MSVC)
133+
# Create a copy of target linker file (tbb<ver>[_debug].lib) with legacy name (tbb[_debug].lib)
134+
# to support previous user experience for linkage.
135+
install(FILES
136+
$<TARGET_LINKER_FILE:tbb>
137+
DESTINATION lib
138+
CONFIGURATIONS RelWithDebInfo Release MinSizeRel
139+
RENAME tbb.lib
140+
COMPONENT devel
141+
)
142+
143+
install(FILES
144+
$<TARGET_LINKER_FILE:tbb>
145+
DESTINATION lib
146+
CONFIGURATIONS Debug
147+
RENAME tbb_debug.lib
148+
COMPONENT devel
149+
)
150+
endif()
151+
152+
set(_tbb_pc_lib_name tbb)
153+
154+
if (WIN32)
155+
set(_tbb_pc_lib_name ${_tbb_pc_lib_name}${TBB_BINARY_VERSION})
156+
endif()
157+
158+
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
159+
set(TBB_PC_NAME tbb)
160+
else()
161+
set(TBB_PC_NAME tbb32)
162+
endif()
163+
164+
set(_prefix_for_pc_file "${CMAKE_INSTALL_PREFIX}")
165+
166+
if (IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
167+
set(_libdir_for_pc_file "${CMAKE_INSTALL_LIBDIR}")
168+
else()
169+
set(_libdir_for_pc_file "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
170+
endif()
171+
172+
if (IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
173+
set(_includedir_for_pc_file "${CMAKE_INSTALL_INCLUDEDIR}")
174+
else()
175+
set(_includedir_for_pc_file "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
176+
endif()
177+
178+
configure_file(${PROJECT_SOURCE_DIR}/integration/pkg-config/tbb.pc.in ${CMAKE_CURRENT_BINARY_DIR}/${TBB_PC_NAME}.pc @ONLY)
179+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TBB_PC_NAME}.pc
180+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/
181+
COMPONENT devel)
169182
endif()
170183

171-
if (IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
172-
set(_includedir_for_pc_file "${CMAKE_INSTALL_INCLUDEDIR}")
173-
else()
174-
set(_includedir_for_pc_file "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
175-
endif()
176-
177-
configure_file(${PROJECT_SOURCE_DIR}/integration/pkg-config/tbb.pc.in ${CMAKE_CURRENT_BINARY_DIR}/${TBB_PC_NAME}.pc @ONLY)
178-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TBB_PC_NAME}.pc
179-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/
180-
COMPONENT devel)
181-
182184
if (COMMAND tbb_gen_vars)
183185
tbb_gen_vars(tbb)
184186
endif()

0 commit comments

Comments
 (0)