Skip to content

Commit 9bf5871

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

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
@@ -106,6 +106,7 @@ option(TBB_CPF "Enable preview features of the library" OFF)
106106
option(TBB_FIND_PACKAGE "Enable search for external oneTBB using find_package instead of build from sources" OFF)
107107
option(TBB_DISABLE_HWLOC_AUTOMATIC_SEARCH "Disable HWLOC automatic search by pkg-config tool" OFF)
108108
option(TBB_ENABLE_IPO "Enable Interprocedural Optimization (IPO) during the compilation" ON)
109+
option(TBB_INSTALL "Enable installation" ON)
109110

110111
if (NOT DEFINED BUILD_SHARED_LIBS)
111112
set(BUILD_SHARED_LIBS ON)
@@ -249,34 +250,35 @@ else()
249250
else()
250251
add_subdirectory(src/tbbbind)
251252
endif()
252-
253-
# -------------------------------------------------------------------
254-
# Installation instructions
255-
include(CMakePackageConfigHelpers)
256-
257-
install(DIRECTORY include/
258-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
259-
COMPONENT devel)
260-
261-
install(EXPORT ${PROJECT_NAME}Targets
262-
NAMESPACE TBB::
263-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
264-
COMPONENT devel)
265-
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
266-
"include(\${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}Targets.cmake)\n")
267-
268-
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
269-
COMPATIBILITY AnyNewerVersion)
270-
271-
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
272-
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
273-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
274-
COMPONENT devel)
275-
276-
install(FILES "README.md"
277-
DESTINATION ${CMAKE_INSTALL_DOCDIR}
278-
COMPONENT devel)
279-
# -------------------------------------------------------------------
253+
if (TBB_INSTALL)
254+
# -------------------------------------------------------------------
255+
# Installation instructions
256+
include(CMakePackageConfigHelpers)
257+
258+
install(DIRECTORY include/
259+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
260+
COMPONENT devel)
261+
262+
install(EXPORT ${PROJECT_NAME}Targets
263+
NAMESPACE TBB::
264+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
265+
COMPONENT devel)
266+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
267+
"include(\${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}Targets.cmake)\n")
268+
269+
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
270+
COMPATIBILITY AnyNewerVersion)
271+
272+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
273+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
274+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
275+
COMPONENT devel)
276+
277+
install(FILES "README.md"
278+
DESTINATION ${CMAKE_INSTALL_DOCDIR}
279+
COMPONENT devel)
280+
# -------------------------------------------------------------------
281+
endif()
280282
endif()
281283

282284
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
@@ -124,57 +124,59 @@ target_link_libraries(tbb
124124

125125
tbb_install_target(tbb)
126126

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

167-
if (IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
168-
set(_includedir_for_pc_file "${CMAKE_INSTALL_INCLUDEDIR}")
169-
else()
170-
set(_includedir_for_pc_file "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
171-
endif()
172-
173-
configure_file(${PROJECT_SOURCE_DIR}/integration/pkg-config/tbb.pc.in ${CMAKE_CURRENT_BINARY_DIR}/${TBB_PC_NAME}.pc @ONLY)
174-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TBB_PC_NAME}.pc
175-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/
176-
COMPONENT devel)
177-
178180
if (COMMAND tbb_gen_vars)
179181
tbb_gen_vars(tbb)
180182
endif()

0 commit comments

Comments
 (0)