From 4fa2fd8b666f3c4d26b184be59df3b85650142c7 Mon Sep 17 00:00:00 2001 From: Aleksandar Janicijevic Date: Wed, 8 Apr 2026 14:45:16 -0400 Subject: [PATCH 01/23] Adding TBB to third-party/sysdeps --- profiler/CMakeLists.txt | 2 +- third-party/sysdeps/linux/CMakeLists.txt | 2 ++ third-party/sysdeps/linux/artifact.toml | 4 ++++ third-party/sysdeps/linux/tbb/CMakeLists.txt | 21 ++++++++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 third-party/sysdeps/linux/tbb/CMakeLists.txt diff --git a/profiler/CMakeLists.txt b/profiler/CMakeLists.txt index 04e8cce41dc..52ae84e7b0c 100644 --- a/profiler/CMakeLists.txt +++ b/profiler/CMakeLists.txt @@ -297,7 +297,6 @@ if(THEROCK_ENABLE_ROCPROFV3) CMAKE_ARGS -DHIP_PLATFORM=amd -DROCPROFSYS_BUILD_ELFUTILS=ON - -DROCPROFSYS_BUILD_TBB=ON -DROCPROFSYS_BUILD_LIBIBERTY=ON -DROCPROFSYS_BUILD_BOOST=ON -DROCPROFSYS_BUILD_DYNINST=ON @@ -329,6 +328,7 @@ if(THEROCK_ENABLE_ROCPROFV3) ${THEROCK_BUNDLED_LIBDRM} ${THEROCK_BUNDLED_SQLITE3} ${_openmpi_optional_dep} + therock-tbb ) therock_cmake_subproject_glob_c_sources(rocprofiler-systems SUBDIRS . diff --git a/third-party/sysdeps/linux/CMakeLists.txt b/third-party/sysdeps/linux/CMakeLists.txt index dcc619f8de2..6fb50245a6a 100644 --- a/third-party/sysdeps/linux/CMakeLists.txt +++ b/third-party/sysdeps/linux/CMakeLists.txt @@ -18,6 +18,7 @@ add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../common/zlib" "${CMAKE_CURRENT_B add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../common/zstd" "${CMAKE_CURRENT_BINARY_DIR}/zstd") # System deps that depend on the above. +add_subdirectory(tbb) add_subdirectory(elfutils) # MPFR depends on GMP. add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../common/mpfr" "${CMAKE_CURRENT_BINARY_DIR}/mpfr") @@ -39,6 +40,7 @@ therock_provide_artifact(sysdeps run SUBPROJECT_DEPS therock-bzip2 + therock-tbb therock-elfutils therock-libbacktrace therock-libcap diff --git a/third-party/sysdeps/linux/artifact.toml b/third-party/sysdeps/linux/artifact.toml index 6018e22515c..9970511a69a 100644 --- a/third-party/sysdeps/linux/artifact.toml +++ b/third-party/sysdeps/linux/artifact.toml @@ -13,6 +13,10 @@ include = [ ] [components.lib."third-party/sysdeps/linux/bzip2/build/stage"] +# tbb +[components.lib."third-party/sysdeps/linux/tbb/build/stage"] +[components.dev."third-party/sysdeps/linux/tbb/build/stage"] + # elfutils [components.lib."third-party/sysdeps/linux/elfutils/build/stage"] [components.dev."third-party/sysdeps/linux/elfutils/build/stage"] diff --git a/third-party/sysdeps/linux/tbb/CMakeLists.txt b/third-party/sysdeps/linux/tbb/CMakeLists.txt new file mode 100644 index 00000000000..987a5218bbd --- /dev/null +++ b/third-party/sysdeps/linux/tbb/CMakeLists.txt @@ -0,0 +1,21 @@ +therock_subproject_fetch(therock-tbb-sources + CMAKE_PROJECT + # Originally mirrored from: https://github.com/uxlfoundation/oneTBB/archive/refs/tags/v2022.3.0.tar.gz + URL https://rocm-third-party-deps.s3.us-east-2.amazonaws.com/oneTBB-2022.3.0.tar.gz + URL_HASH SHA256=01598a46c1162c27253a0de0236f520fd8ee8166e9ebb84a4243574f88e6e50a +) + +therock_cmake_subproject_declare(therock-tbb + BACKGROUND_BUILD + EXCLUDE_FROM_ALL + NO_MERGE_COMPILE_COMMANDS + OUTPUT_ON_FAILURE + EXTERNAL_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/source" + CMAKE_ARGS + -DTBB_TEST=OFF +) + +therock_cmake_subproject_provide_package(therock-tbb TBB lib/cmake) +therock_cmake_subproject_activate(therock-tbb) + +add_dependencies(therock-third-party therock-tbb) From adba60ee723f55a0eb4d1426ba5c33dc2393be1d Mon Sep 17 00:00:00 2001 From: Aleksandar Janicijevic Date: Wed, 8 Apr 2026 15:33:49 -0400 Subject: [PATCH 02/23] Removed dependency of therock-third-party on therock-tbb --- third-party/sysdeps/linux/tbb/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/third-party/sysdeps/linux/tbb/CMakeLists.txt b/third-party/sysdeps/linux/tbb/CMakeLists.txt index 987a5218bbd..79037090839 100644 --- a/third-party/sysdeps/linux/tbb/CMakeLists.txt +++ b/third-party/sysdeps/linux/tbb/CMakeLists.txt @@ -17,5 +17,3 @@ therock_cmake_subproject_declare(therock-tbb therock_cmake_subproject_provide_package(therock-tbb TBB lib/cmake) therock_cmake_subproject_activate(therock-tbb) - -add_dependencies(therock-third-party therock-tbb) From eee4bd7b2f13b9c33703a96d682991b8512b67ec Mon Sep 17 00:00:00 2001 From: Aleksandar Janicijevic Date: Wed, 8 Apr 2026 17:04:29 -0400 Subject: [PATCH 03/23] Disabled AMDGPU targets for TBB --- third-party/sysdeps/linux/tbb/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/third-party/sysdeps/linux/tbb/CMakeLists.txt b/third-party/sysdeps/linux/tbb/CMakeLists.txt index 79037090839..79cdaefdd4e 100644 --- a/third-party/sysdeps/linux/tbb/CMakeLists.txt +++ b/third-party/sysdeps/linux/tbb/CMakeLists.txt @@ -15,5 +15,6 @@ therock_cmake_subproject_declare(therock-tbb -DTBB_TEST=OFF ) +set(_disable_amdgpu_targets ON) therock_cmake_subproject_provide_package(therock-tbb TBB lib/cmake) therock_cmake_subproject_activate(therock-tbb) From ee803486b668239b396afe98666b65fc2cc6dbd8 Mon Sep 17 00:00:00 2001 From: Aleksandar Janicijevic Date: Wed, 8 Apr 2026 17:43:14 -0400 Subject: [PATCH 04/23] Set THEROCK_BUNDLED_TBB; added copyright notice --- CMakeLists.txt | 2 ++ profiler/CMakeLists.txt | 2 +- third-party/sysdeps/linux/tbb/CMakeLists.txt | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6119398bfbd..d6a2197d530 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -369,6 +369,7 @@ endif() ################################################################################ set(THEROCK_BUNDLED_BZIP2) +set(THEROCK_BUNDLED_TBB) set(THEROCK_BUNDLED_ELFUTILS) set(THEROCK_BUNDLED_EXPAT) set(THEROCK_BUNDLED_GMP) @@ -396,6 +397,7 @@ if(THEROCK_BUNDLE_SYSDEPS) message(FATAL_ERROR "Building with THEROCK_BUNDLE_SYSDEPS=ON on Linux requires (easiest: `pip install meson`)") endif() set(THEROCK_BUNDLED_BZIP2 therock-bzip2) + set(THEROCK_BUNDLED_TBB therock-tbb) set(THEROCK_BUNDLED_ELFUTILS therock-elfutils) set(THEROCK_BUNDLED_EXPAT therock-expat) set(THEROCK_BUNDLED_GMP therock-gmp) diff --git a/profiler/CMakeLists.txt b/profiler/CMakeLists.txt index 52ae84e7b0c..367d54a71af 100644 --- a/profiler/CMakeLists.txt +++ b/profiler/CMakeLists.txt @@ -328,7 +328,7 @@ if(THEROCK_ENABLE_ROCPROFV3) ${THEROCK_BUNDLED_LIBDRM} ${THEROCK_BUNDLED_SQLITE3} ${_openmpi_optional_dep} - therock-tbb + ${THEROCK_BUNDLED_TBB} ) therock_cmake_subproject_glob_c_sources(rocprofiler-systems SUBDIRS . diff --git a/third-party/sysdeps/linux/tbb/CMakeLists.txt b/third-party/sysdeps/linux/tbb/CMakeLists.txt index 79cdaefdd4e..50275acbb5b 100644 --- a/third-party/sysdeps/linux/tbb/CMakeLists.txt +++ b/third-party/sysdeps/linux/tbb/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright Advanced Micro Devices, Inc. +# SPDX-License-Identifier: MIT + therock_subproject_fetch(therock-tbb-sources CMAKE_PROJECT # Originally mirrored from: https://github.com/uxlfoundation/oneTBB/archive/refs/tags/v2022.3.0.tar.gz From 4cdc8f9ceb2b83baff0d9c627fad99d7828187ac Mon Sep 17 00:00:00 2001 From: Aleksandar Janicijevic Date: Wed, 8 Apr 2026 18:25:12 -0400 Subject: [PATCH 05/23] Set target property to disable AMDGPU for TBB --- third-party/sysdeps/linux/tbb/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/third-party/sysdeps/linux/tbb/CMakeLists.txt b/third-party/sysdeps/linux/tbb/CMakeLists.txt index 50275acbb5b..560ad7655b5 100644 --- a/third-party/sysdeps/linux/tbb/CMakeLists.txt +++ b/third-party/sysdeps/linux/tbb/CMakeLists.txt @@ -18,6 +18,9 @@ therock_cmake_subproject_declare(therock-tbb -DTBB_TEST=OFF ) -set(_disable_amdgpu_targets ON) +set_target_properties(therock-tbb PROPERTIES + ARG_DISABLE_AMDGPU_TARGETS ON +) + therock_cmake_subproject_provide_package(therock-tbb TBB lib/cmake) therock_cmake_subproject_activate(therock-tbb) From 9ceddfcf70077c55b859b6a230642f0bbf4fa351 Mon Sep 17 00:00:00 2001 From: Aleksandar Janicijevic Date: Wed, 8 Apr 2026 19:05:05 -0400 Subject: [PATCH 06/23] Added USE_DIST_AMDGPU_TARGETS to therock-tbb subproject declaration --- third-party/sysdeps/linux/tbb/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/third-party/sysdeps/linux/tbb/CMakeLists.txt b/third-party/sysdeps/linux/tbb/CMakeLists.txt index 560ad7655b5..11bccccc5d8 100644 --- a/third-party/sysdeps/linux/tbb/CMakeLists.txt +++ b/third-party/sysdeps/linux/tbb/CMakeLists.txt @@ -9,6 +9,7 @@ therock_subproject_fetch(therock-tbb-sources ) therock_cmake_subproject_declare(therock-tbb + USE_DIST_AMDGPU_TARGETS BACKGROUND_BUILD EXCLUDE_FROM_ALL NO_MERGE_COMPILE_COMMANDS From 22251bd8456de253bb546fff486f27cb15db7de1 Mon Sep 17 00:00:00 2001 From: Aleksandar Janicijevic Date: Wed, 8 Apr 2026 19:08:39 -0400 Subject: [PATCH 07/23] Removed ARG_DISABLE_AMDGPU_TARGETS property --- third-party/sysdeps/linux/tbb/CMakeLists.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/third-party/sysdeps/linux/tbb/CMakeLists.txt b/third-party/sysdeps/linux/tbb/CMakeLists.txt index 11bccccc5d8..d5459253dde 100644 --- a/third-party/sysdeps/linux/tbb/CMakeLists.txt +++ b/third-party/sysdeps/linux/tbb/CMakeLists.txt @@ -19,9 +19,5 @@ therock_cmake_subproject_declare(therock-tbb -DTBB_TEST=OFF ) -set_target_properties(therock-tbb PROPERTIES - ARG_DISABLE_AMDGPU_TARGETS ON -) - therock_cmake_subproject_provide_package(therock-tbb TBB lib/cmake) therock_cmake_subproject_activate(therock-tbb) From ebb1ffc790aaa932a069708fd98f3fa8a35d50f5 Mon Sep 17 00:00:00 2001 From: Aleksandar Janicijevic Date: Thu, 9 Apr 2026 16:51:44 -0400 Subject: [PATCH 08/23] Addressed review comments --- CMakeLists.txt | 4 ++-- profiler/CMakeLists.txt | 2 +- third-party/sysdeps/linux/CMakeLists.txt | 4 ++-- third-party/sysdeps/linux/artifact.toml | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d6a2197d530..6a15af80f43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -369,7 +369,6 @@ endif() ################################################################################ set(THEROCK_BUNDLED_BZIP2) -set(THEROCK_BUNDLED_TBB) set(THEROCK_BUNDLED_ELFUTILS) set(THEROCK_BUNDLED_EXPAT) set(THEROCK_BUNDLED_GMP) @@ -384,6 +383,7 @@ set(THEROCK_BUNDLED_MPFR) set(THEROCK_BUNDLED_NCURSES) set(THEROCK_BUNDLED_NUMACTL) set(THEROCK_BUNDLED_SQLITE3) +set(THEROCK_BUNDLED_TBB) set(THEROCK_BUNDLED_ZLIB) set(THEROCK_BUNDLED_ZSTD) set(THEROCK_BUNDLED_AMDMESA) @@ -397,7 +397,6 @@ if(THEROCK_BUNDLE_SYSDEPS) message(FATAL_ERROR "Building with THEROCK_BUNDLE_SYSDEPS=ON on Linux requires (easiest: `pip install meson`)") endif() set(THEROCK_BUNDLED_BZIP2 therock-bzip2) - set(THEROCK_BUNDLED_TBB therock-tbb) set(THEROCK_BUNDLED_ELFUTILS therock-elfutils) set(THEROCK_BUNDLED_EXPAT therock-expat) set(THEROCK_BUNDLED_GMP therock-gmp) @@ -412,6 +411,7 @@ if(THEROCK_BUNDLE_SYSDEPS) set(THEROCK_BUNDLED_NCURSES therock-ncurses) set(THEROCK_BUNDLED_NUMACTL therock-numactl) set(THEROCK_BUNDLED_SQLITE3 therock-sqlite3) + set(THEROCK_BUNDLED_TBB therock-tbb) set(THEROCK_BUNDLED_ZLIB therock-zlib) set(THEROCK_BUNDLED_ZSTD therock-zstd) if(THEROCK_ENABLE_SYSDEPS_AMD_MESA) diff --git a/profiler/CMakeLists.txt b/profiler/CMakeLists.txt index 367d54a71af..93dc83de5b5 100644 --- a/profiler/CMakeLists.txt +++ b/profiler/CMakeLists.txt @@ -327,8 +327,8 @@ if(THEROCK_ENABLE_ROCPROFV3) rocprofiler-sdk ${THEROCK_BUNDLED_LIBDRM} ${THEROCK_BUNDLED_SQLITE3} - ${_openmpi_optional_dep} ${THEROCK_BUNDLED_TBB} + ${_openmpi_optional_dep} ) therock_cmake_subproject_glob_c_sources(rocprofiler-systems SUBDIRS . diff --git a/third-party/sysdeps/linux/CMakeLists.txt b/third-party/sysdeps/linux/CMakeLists.txt index 6fb50245a6a..7a524be6c81 100644 --- a/third-party/sysdeps/linux/CMakeLists.txt +++ b/third-party/sysdeps/linux/CMakeLists.txt @@ -18,12 +18,12 @@ add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../common/zlib" "${CMAKE_CURRENT_B add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../common/zstd" "${CMAKE_CURRENT_BINARY_DIR}/zstd") # System deps that depend on the above. -add_subdirectory(tbb) add_subdirectory(elfutils) # MPFR depends on GMP. add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../common/mpfr" "${CMAKE_CURRENT_BINARY_DIR}/mpfr") # libpciaccess for PCI device access. add_subdirectory(libpciaccess) +add_subdirectory(tbb) # hwloc depends on numactl and libpciaccess. add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../common/hwloc" "${CMAKE_CURRENT_BINARY_DIR}/hwloc") @@ -40,7 +40,6 @@ therock_provide_artifact(sysdeps run SUBPROJECT_DEPS therock-bzip2 - therock-tbb therock-elfutils therock-libbacktrace therock-libcap @@ -50,6 +49,7 @@ therock_provide_artifact(sysdeps therock-libnl therock-numactl therock-sqlite3 + therock-tbb therock-zlib therock-zstd ) diff --git a/third-party/sysdeps/linux/artifact.toml b/third-party/sysdeps/linux/artifact.toml index 9970511a69a..e506121e144 100644 --- a/third-party/sysdeps/linux/artifact.toml +++ b/third-party/sysdeps/linux/artifact.toml @@ -13,10 +13,6 @@ include = [ ] [components.lib."third-party/sysdeps/linux/bzip2/build/stage"] -# tbb -[components.lib."third-party/sysdeps/linux/tbb/build/stage"] -[components.dev."third-party/sysdeps/linux/tbb/build/stage"] - # elfutils [components.lib."third-party/sysdeps/linux/elfutils/build/stage"] [components.dev."third-party/sysdeps/linux/elfutils/build/stage"] @@ -57,6 +53,10 @@ include = [ [components.lib."third-party/sysdeps/linux/sqlite3/build/stage"] [components.dev."third-party/sysdeps/linux/sqlite3/build/stage"] +# tbb +[components.lib."third-party/sysdeps/linux/tbb/build/stage"] +[components.dev."third-party/sysdeps/linux/tbb/build/stage"] + # zlib [components.lib."third-party/sysdeps/linux/zlib/build/stage"] [components.dev."third-party/sysdeps/linux/zlib/build/stage"] From 850e8a1b328c72a1b78e80ff97f56c8f6a8701e1 Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Tue, 21 Apr 2026 17:01:55 -0400 Subject: [PATCH 09/23] Updated therock-tbb CMake configuration to specify binary directory, source directory, and installation paths for ROCm sysdeps. Adjusted package provision path for TBB. --- third-party/sysdeps/linux/tbb/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third-party/sysdeps/linux/tbb/CMakeLists.txt b/third-party/sysdeps/linux/tbb/CMakeLists.txt index d5459253dde..d9a526d87b6 100644 --- a/third-party/sysdeps/linux/tbb/CMakeLists.txt +++ b/third-party/sysdeps/linux/tbb/CMakeLists.txt @@ -19,5 +19,5 @@ therock_cmake_subproject_declare(therock-tbb -DTBB_TEST=OFF ) -therock_cmake_subproject_provide_package(therock-tbb TBB lib/cmake) +therock_cmake_subproject_provide_package(therock-tbb TBB lib/rocm_sysdeps/lib/cmake/TBB) therock_cmake_subproject_activate(therock-tbb) From a1d0575b5cc507b4a13243160249510748493e52 Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Tue, 21 Apr 2026 17:02:59 -0400 Subject: [PATCH 10/23] libtbb libraries were not being installed properly. --- third-party/sysdeps/linux/tbb/CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/third-party/sysdeps/linux/tbb/CMakeLists.txt b/third-party/sysdeps/linux/tbb/CMakeLists.txt index d9a526d87b6..73089a52f16 100644 --- a/third-party/sysdeps/linux/tbb/CMakeLists.txt +++ b/third-party/sysdeps/linux/tbb/CMakeLists.txt @@ -15,8 +15,18 @@ therock_cmake_subproject_declare(therock-tbb NO_MERGE_COMPILE_COMMANDS OUTPUT_ON_FAILURE EXTERNAL_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/source" + BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/build" CMAKE_ARGS + -DSOURCE_DIR="${CMAKE_CURRENT_BINARY_DIR}/source" -DTBB_TEST=OFF + INSTALL_DESTINATION + lib/rocm_sysdeps + INTERFACE_LINK_DIRS + lib/rocm_sysdeps/lib + INTERFACE_INSTALL_RPATH_DIRS + lib/rocm_sysdeps/lib + INTERFACE_PKG_CONFIG_DIRS + lib/rocm_sysdeps/lib/pkgconfig ) therock_cmake_subproject_provide_package(therock-tbb TBB lib/rocm_sysdeps/lib/cmake/TBB) From 4d50a6aa21a8dd90290d0bfac7b46370c08660cc Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Wed, 22 Apr 2026 00:39:23 -0400 Subject: [PATCH 11/23] Update INSTALL_RPATH_DIRS Add `../llvm/lib` and `../rocm_sysdeps/lib`, so libraries under `rocprofiler-systems/lib` can find their dependent libraries. --- profiler/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/profiler/CMakeLists.txt b/profiler/CMakeLists.txt index 93dc83de5b5..41b778d2842 100644 --- a/profiler/CMakeLists.txt +++ b/profiler/CMakeLists.txt @@ -313,7 +313,10 @@ if(THEROCK_ENABLE_ROCPROFV3) INSTALL_RPATH_DIRS "lib" "lib/rocprofiler-systems" - "llvm/lib" + "lib/llvm/lib" + "lib/rocm_sysdeps/lib" + "lib/../llvm/lib" # For Dyninst libraries to find dependencies in /lib/llvm/lib + "lib/../rocm_sysdeps/lib" # For Dyninst libraries to find dependencies in rocm_sysdeps/lib CMAKE_INCLUDES therock_explicit_finders.cmake BUILD_DEPS From eced8ffa0a84307d738ac8f7bb4fbde2631f7076 Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Wed, 22 Apr 2026 00:57:17 -0400 Subject: [PATCH 12/23] Create a post hook to correct set RPATH of internal libraries --- profiler/CMakeLists.txt | 2 -- profiler/post_hook_rocprofiler-systems.cmake | 29 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 profiler/post_hook_rocprofiler-systems.cmake diff --git a/profiler/CMakeLists.txt b/profiler/CMakeLists.txt index 41b778d2842..b400a08d96d 100644 --- a/profiler/CMakeLists.txt +++ b/profiler/CMakeLists.txt @@ -315,8 +315,6 @@ if(THEROCK_ENABLE_ROCPROFV3) "lib/rocprofiler-systems" "lib/llvm/lib" "lib/rocm_sysdeps/lib" - "lib/../llvm/lib" # For Dyninst libraries to find dependencies in /lib/llvm/lib - "lib/../rocm_sysdeps/lib" # For Dyninst libraries to find dependencies in rocm_sysdeps/lib CMAKE_INCLUDES therock_explicit_finders.cmake BUILD_DEPS diff --git a/profiler/post_hook_rocprofiler-systems.cmake b/profiler/post_hook_rocprofiler-systems.cmake new file mode 100644 index 00000000000..e8461cd4bca --- /dev/null +++ b/profiler/post_hook_rocprofiler-systems.cmake @@ -0,0 +1,29 @@ +# Copyright Advanced Micro Devices, Inc. +# SPDX-License-Identifier: MIT + +# Dyninst and rocprofiler-systems internal libraries live in lib/rocprofiler-systems. +# Set the RPATH origin per-target so that (for example) lib/rocm_sysdeps/lib resolves as +# $ORIGIN/../rocm_sysdeps/lib rather than $ORIGIN/rocm_sysdeps/lib. +set(_rocprofsys_lib_targets + common + dynElf + dynDwarf + dyninstAPI + dyninstAPI_RT + dynC_API + instructionAPI + parseAPI + patchAPI + pcontrol + stackwalk + symtabAPI + gotcha +) + +foreach(_target ${_rocprofsys_lib_targets}) + if(TARGET "${_target}") + set_target_properties("${_target}" PROPERTIES + THEROCK_INSTALL_RPATH_ORIGIN lib/rocprofiler-systems + ) + endif() +endforeach() From 8b77ea9db19eb3db84e935b235e23924e0864afa Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Tue, 28 Apr 2026 17:00:25 -0400 Subject: [PATCH 13/23] Refactor TBB sysdep to optional pattern, matching fa6c993 TBB was added as a core sysdep but should follow the optional sysdep pattern established in fa6c993: gated behind THEROCK_ENABLE_SYSDEPS_TBB, with its own artifact descriptor and BUILD_TOPOLOGY entry. - Move add_subdirectory(tbb) and therock_provide_artifact(sysdeps-tbb) inside an THEROCK_ENABLE_SYSDEPS_TBB guard in linux/CMakeLists.txt - Remove TBB from the core sysdeps artifact.toml; add artifact-tbb.toml - Gate THEROCK_BUNDLED_TBB in root CMakeLists.txt behind the same flag - Add sysdeps-tbb entry to BUILD_TOPOLOGY.toml (required by topology validator) Co-Authored-By: Claude Sonnet 4.6 --- BUILD_TOPOLOGY.toml | 9 ++++++++- CMakeLists.txt | 4 +++- profiler/CMakeLists.txt | 4 ++++ third-party/sysdeps/linux/CMakeLists.txt | 16 ++++++++++++++-- third-party/sysdeps/linux/artifact-tbb.toml | 3 +++ third-party/sysdeps/linux/artifact.toml | 4 ---- 6 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 third-party/sysdeps/linux/artifact-tbb.toml diff --git a/BUILD_TOPOLOGY.toml b/BUILD_TOPOLOGY.toml index a8e7eb20413..008f799dfb5 100644 --- a/BUILD_TOPOLOGY.toml +++ b/BUILD_TOPOLOGY.toml @@ -391,6 +391,13 @@ artifact_deps = [] feature_group = "CORE" disable_platforms = ["windows"] +[artifacts.sysdeps-tbb] +artifact_group = "third-party-sysdeps" +type = "target-neutral" +artifact_deps = [] +feature_group = "CORE" +disable_platforms = ["windows"] + [artifacts.sysdeps-hwloc] artifact_group = "third-party-sysdeps" type = "target-neutral" @@ -719,7 +726,7 @@ disable_platforms = ["windows"] [artifacts.rocprofiler-systems] artifact_group = "profiler-apps" type = "target-neutral" -artifact_deps = ["amd-llvm", "core-hip", "rocprofiler-sdk", "core-amdsmi", "spdlog", "openmpi"] +artifact_deps = ["amd-llvm", "core-hip", "rocprofiler-sdk", "core-amdsmi", "spdlog", "openmpi", "sysdeps-tbb"] feature_name = "ROCPROFSYS" feature_group = "PROFILER" disable_platforms = ["windows"] diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a045dea468..f3834336335 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -410,7 +410,6 @@ if(THEROCK_BUNDLE_SYSDEPS) set(THEROCK_BUNDLED_LIBNL therock-libnl) set(THEROCK_BUNDLED_NUMACTL therock-numactl) set(THEROCK_BUNDLED_SQLITE3 therock-sqlite3) - set(THEROCK_BUNDLED_TBB therock-tbb) set(THEROCK_BUNDLED_ZLIB therock-zlib) set(THEROCK_BUNDLED_ZSTD therock-zstd) # Optional sysdeps (gated on their artifact feature flags) @@ -429,6 +428,9 @@ if(THEROCK_BUNDLE_SYSDEPS) if(THEROCK_ENABLE_SYSDEPS_NCURSES) set(THEROCK_BUNDLED_NCURSES therock-ncurses) endif() + if(THEROCK_ENABLE_SYSDEPS_TBB) + set(THEROCK_BUNDLED_TBB therock-tbb) + endif() if(THEROCK_ENABLE_SYSDEPS_AMD_MESA) set(THEROCK_BUNDLED_AMDMESA therock-amd-mesa) endif() diff --git a/profiler/CMakeLists.txt b/profiler/CMakeLists.txt index b400a08d96d..f4928a41fd0 100644 --- a/profiler/CMakeLists.txt +++ b/profiler/CMakeLists.txt @@ -268,6 +268,7 @@ if(THEROCK_ENABLE_ROCPROFV3) string(REPLACE ";" "\\;" _ROCPROFSYS_GFX_TARGETS_ESCAPED "${THEROCK_TEST_AMDGPU_TARGETS}") endif() + # Detect Python versions to support Python bindings for rocprofiler-systems therock_detect_python_versions(_rocprofsys_detected_python_executables _rocprofsys_detected_python_versions) if(NOT _rocprofsys_detected_python_versions OR NOT _rocprofsys_detected_python_executables) message(STATUS "No python versions detected for rocprofiler-systems, disabling Python support") @@ -278,11 +279,13 @@ if(THEROCK_ENABLE_ROCPROFV3) set(_ROCPROFSYS_USE_PYTHON ON) # Build root dirs from detected executables. set(_ROCPROFSYS_PYTHON_ROOT_DIRS) + foreach(_exe IN LISTS _rocprofsys_detected_python_executables) cmake_path(GET _exe PARENT_PATH _bin_dir) cmake_path(GET _bin_dir PARENT_PATH _root_dir) list(APPEND _ROCPROFSYS_PYTHON_ROOT_DIRS "${_root_dir}") endforeach() + list(JOIN _ROCPROFSYS_PYTHON_ROOT_DIRS "\;" _ROCPROFSYS_PYTHON_ROOT_DIRS_STR) list(JOIN _rocprofsys_detected_python_versions "\;" _ROCPROFSYS_PYTHON_VERSIONS_STR) message(STATUS "Detected Python versions for rocprofiler-systems: ${_ROCPROFSYS_PYTHON_VERSIONS_STR}") @@ -299,6 +302,7 @@ if(THEROCK_ENABLE_ROCPROFV3) -DROCPROFSYS_BUILD_ELFUTILS=ON -DROCPROFSYS_BUILD_LIBIBERTY=ON -DROCPROFSYS_BUILD_BOOST=ON + -DROCPROFSYS_BUILD_TBB=OFF -DROCPROFSYS_BUILD_DYNINST=ON -DROCPROFSYS_BUILD_FOR_THEROCK=ON # TODO: Will be deprecated -DROCPROFSYS_INSTALL_TESTING="${THEROCK_BUILD_TESTING}" diff --git a/third-party/sysdeps/linux/CMakeLists.txt b/third-party/sysdeps/linux/CMakeLists.txt index df25599fa6c..af2458fa9ae 100644 --- a/third-party/sysdeps/linux/CMakeLists.txt +++ b/third-party/sysdeps/linux/CMakeLists.txt @@ -19,7 +19,6 @@ add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../common/zstd" "${CMAKE_CURRENT_B # Core system deps that depend on the above. add_subdirectory(elfutils) -add_subdirectory(tbb) therock_provide_artifact(sysdeps TARGET_NEUTRAL @@ -40,7 +39,6 @@ therock_provide_artifact(sysdeps therock-libnl therock-numactl therock-sqlite3 - therock-tbb therock-zlib therock-zstd ) @@ -133,6 +131,20 @@ if(THEROCK_ENABLE_SYSDEPS_LIBPCIACCESS) ) endif() +# Optional sysdep: TBB (Threading Building Blocks) +if(THEROCK_ENABLE_SYSDEPS_TBB) + add_subdirectory(tbb) + therock_provide_artifact(sysdeps-tbb + TARGET_NEUTRAL + DESCRIPTOR artifact-tbb.toml + COMPONENTS + dev + lib + SUBPROJECT_DEPS + therock-tbb + ) +endif() + # Optional sysdep: hwloc (depends on numactl and libpciaccess) if(THEROCK_ENABLE_SYSDEPS_HWLOC) add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../common/hwloc" "${CMAKE_CURRENT_BINARY_DIR}/hwloc") diff --git a/third-party/sysdeps/linux/artifact-tbb.toml b/third-party/sysdeps/linux/artifact-tbb.toml new file mode 100644 index 00000000000..36c5d5f29ba --- /dev/null +++ b/third-party/sysdeps/linux/artifact-tbb.toml @@ -0,0 +1,3 @@ +# tbb +[components.lib."third-party/sysdeps/linux/tbb/build/stage"] +[components.dev."third-party/sysdeps/linux/tbb/build/stage"] diff --git a/third-party/sysdeps/linux/artifact.toml b/third-party/sysdeps/linux/artifact.toml index e506121e144..6018e22515c 100644 --- a/third-party/sysdeps/linux/artifact.toml +++ b/third-party/sysdeps/linux/artifact.toml @@ -53,10 +53,6 @@ include = [ [components.lib."third-party/sysdeps/linux/sqlite3/build/stage"] [components.dev."third-party/sysdeps/linux/sqlite3/build/stage"] -# tbb -[components.lib."third-party/sysdeps/linux/tbb/build/stage"] -[components.dev."third-party/sysdeps/linux/tbb/build/stage"] - # zlib [components.lib."third-party/sysdeps/linux/zlib/build/stage"] [components.dev."third-party/sysdeps/linux/zlib/build/stage"] From 471a66ee0d0c67d1b168b1435cebafde7764e720 Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Tue, 28 Apr 2026 22:56:20 -0400 Subject: [PATCH 14/23] Add patch scripts for tbb --- docs/development/dependencies.md | 12 ++ third-party/sysdeps/linux/tbb/CMakeLists.txt | 117 +++++++++++++----- .../sysdeps/linux/tbb/patch_install.sh | 49 ++++++++ third-party/sysdeps/linux/tbb/patch_source.sh | 30 +++++ third-party/sysdeps/linux/tbb/version.lds | 3 + 5 files changed, 183 insertions(+), 28 deletions(-) create mode 100644 third-party/sysdeps/linux/tbb/patch_install.sh create mode 100644 third-party/sysdeps/linux/tbb/patch_source.sh create mode 100644 third-party/sysdeps/linux/tbb/version.lds diff --git a/docs/development/dependencies.md b/docs/development/dependencies.md index 1560896b7cb..3fb3b32018a 100644 --- a/docs/development/dependencies.md +++ b/docs/development/dependencies.md @@ -54,6 +54,7 @@ project wide: - `THEROCK_BUNDLED_LIBNL` - `THEROCK_BUNDLED_NUMACTL` - `THEROCK_BUNDLED_SQLITE3` + - `THEROCK_BUNDLED_TBB` - `THEROCK_BUNDLED_ZLIB` - `THEROCK_BUNDLED_ZSTD` - Sub-projects must arrange for any libraries that depend on these to add the @@ -201,6 +202,17 @@ SIMDe (SIMD Everywhere) is a header-only portability library for SIMD intrinsics - Import library: `SQLite::SQLite3` - Alternatives: none +## TBB + +oneAPI Threading Building Blocks. Optional sysdep; only bundled when +`THEROCK_ENABLE_SYSDEPS_TBB=ON`. + +Supported sub-libraries: `tbb`, `tbbmalloc`, `tbbmalloc_proxy`. + +- Canonical method: `find_package(TBB CONFIG)` +- Import libraries: `TBB::tbb`, `TBB::tbbmalloc`, `TBB::tbbmalloc_proxy` +- Alternatives: `pkg_check_modules(TBB tbb)` + ## zlib - Canonical method: `find_package(ZLIB)` diff --git a/third-party/sysdeps/linux/tbb/CMakeLists.txt b/third-party/sysdeps/linux/tbb/CMakeLists.txt index 73089a52f16..026b5ca9da3 100644 --- a/third-party/sysdeps/linux/tbb/CMakeLists.txt +++ b/third-party/sysdeps/linux/tbb/CMakeLists.txt @@ -1,33 +1,94 @@ # Copyright Advanced Micro Devices, Inc. # SPDX-License-Identifier: MIT -therock_subproject_fetch(therock-tbb-sources - CMAKE_PROJECT - # Originally mirrored from: https://github.com/uxlfoundation/oneTBB/archive/refs/tags/v2022.3.0.tar.gz - URL https://rocm-third-party-deps.s3.us-east-2.amazonaws.com/oneTBB-2022.3.0.tar.gz - URL_HASH SHA256=01598a46c1162c27253a0de0236f520fd8ee8166e9ebb84a4243574f88e6e50a -) +if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + # Super-project block: download sources and declare the sub-project. + set(_source_dir "${CMAKE_CURRENT_BINARY_DIR}/source") + set(_download_stamp "${_source_dir}/download.stamp") -therock_cmake_subproject_declare(therock-tbb - USE_DIST_AMDGPU_TARGETS - BACKGROUND_BUILD - EXCLUDE_FROM_ALL - NO_MERGE_COMPILE_COMMANDS - OUTPUT_ON_FAILURE - EXTERNAL_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/source" - BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/build" - CMAKE_ARGS - -DSOURCE_DIR="${CMAKE_CURRENT_BINARY_DIR}/source" - -DTBB_TEST=OFF - INSTALL_DESTINATION - lib/rocm_sysdeps - INTERFACE_LINK_DIRS - lib/rocm_sysdeps/lib - INTERFACE_INSTALL_RPATH_DIRS - lib/rocm_sysdeps/lib - INTERFACE_PKG_CONFIG_DIRS - lib/rocm_sysdeps/lib/pkgconfig -) + therock_subproject_fetch(therock-tbb-sources + SOURCE_DIR "${_source_dir}" + # Originally mirrored from: https://github.com/uxlfoundation/oneTBB/archive/refs/tags/v2022.3.0.tar.gz + URL https://rocm-third-party-deps.s3.us-east-2.amazonaws.com/oneTBB-2022.3.0.tar.gz + URL_HASH SHA256=01598a46c1162c27253a0de0236f520fd8ee8166e9ebb84a4243574f88e6e50a + TOUCH "${_download_stamp}" + DOWNLOAD_EXTRACT_TIMESTAMP TRUE + ) + + therock_cmake_subproject_declare(therock-tbb + USE_DIST_AMDGPU_TARGETS + BACKGROUND_BUILD + EXCLUDE_FROM_ALL + NO_MERGE_COMPILE_COMMANDS + OUTPUT_ON_FAILURE + EXTERNAL_SOURCE_DIR . + FPRINT_SOURCE_DIR "${_source_dir}" + FPRINT_FILE_GLOBS "${CMAKE_CURRENT_LIST_DIR}/*" + BINARY_DIR build + CMAKE_ARGS + "-DSOURCE_DIR=${_source_dir}" + "-DPATCHELF=${PATCHELF}" + "-DPython3_EXECUTABLE=${Python3_EXECUTABLE}" + INSTALL_DESTINATION + lib/rocm_sysdeps + INTERFACE_LINK_DIRS + lib/rocm_sysdeps/lib + INTERFACE_INSTALL_RPATH_DIRS + lib/rocm_sysdeps/lib + INTERFACE_PKG_CONFIG_DIRS + lib/rocm_sysdeps/lib/pkgconfig + EXTRA_DEPENDS + "${_download_stamp}" + ) + + therock_cmake_subproject_provide_package(therock-tbb TBB lib/rocm_sysdeps/lib/cmake/TBB) + therock_cmake_subproject_activate(therock-tbb) + + therock_test_validate_shared_lib( + PATH build/dist/lib/rocm_sysdeps/lib + LIB_NAMES librocm_sysdeps_tbb.so + ) -therock_cmake_subproject_provide_package(therock-tbb TBB lib/rocm_sysdeps/lib/cmake/TBB) -therock_cmake_subproject_activate(therock-tbb) + return() +endif() + +# Sub-project block: invoked by TheRock's cmake sub-project machinery. +cmake_minimum_required(VERSION 3.25) +project(TBB_BUILD) + +if(NOT PATCHELF) + message(FATAL_ERROR "Missing PATCHELF from super-project") +endif() + +add_custom_target(build ALL + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + # Clean any previous install and create a fresh working copy of the source. + COMMAND + "${CMAKE_COMMAND}" -E rm -rf -- "${CMAKE_INSTALL_PREFIX}" "${CMAKE_CURRENT_BINARY_DIR}/s" + COMMAND + "${CMAKE_COMMAND}" -E copy_directory "${SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/s" + # Patch source: rename library output names to rocm_sysdeps_ prefix. + COMMAND + bash "${CMAKE_CURRENT_SOURCE_DIR}/patch_source.sh" "${CMAKE_CURRENT_BINARY_DIR}/s" + # Configure oneTBB. + COMMAND + "${CMAKE_COMMAND}" + -S "${CMAKE_CURRENT_BINARY_DIR}/s" + -B "${CMAKE_CURRENT_BINARY_DIR}/tbb-build" + -G Ninja + "-DCMAKE_BUILD_TYPE=Release" + "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DTBB_TEST=OFF" + # Build. + COMMAND + "${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/tbb-build" --verbose + # Install. + COMMAND + "${CMAKE_COMMAND}" --install "${CMAKE_CURRENT_BINARY_DIR}/tbb-build" + # Patch install: fix RPATH, relocate .pc, remove upstream cmake config. + COMMAND + "${CMAKE_COMMAND}" -E env + "PATCHELF=${PATCHELF}" -- + bash "${CMAKE_CURRENT_SOURCE_DIR}/patch_install.sh" "${CMAKE_INSTALL_PREFIX}" +) diff --git a/third-party/sysdeps/linux/tbb/patch_install.sh b/third-party/sysdeps/linux/tbb/patch_install.sh new file mode 100644 index 00000000000..74e31c54821 --- /dev/null +++ b/third-party/sysdeps/linux/tbb/patch_install.sh @@ -0,0 +1,49 @@ +#!/usr/bin/bash +# Copyright Advanced Micro Devices, Inc. +# SPDX-License-Identifier: MIT + +# Patches installed TBB libraries for portable sysdeps distribution: +# - Sets RPATH to $ORIGIN on all real (non-symlink) shared libraries. +# - Makes tbb.pc relocatable by replacing the absolute prefix. +# - Removes the upstream cmake config (TheRock provides its own wrapper). +# +# Args: install_dir +# Env: PATCHELF + +set -e + +PREFIX="${1:?Expected install prefix argument}" +PATCHELF="${PATCHELF:?PATCHELF env var required}" + +LIB_DIR="$PREFIX/lib" + +echo "Patching TBB install..." + +# Set RPATH to $ORIGIN on all real (non-symlink) rocm_sysdeps TBB libraries +# and create unprefixed libtbb*.so symlinks (e.g. libtbb.so -> librocm_sysdeps_tbb.so.12). +for lib in "$LIB_DIR"/librocm_sysdeps_tbb*.so.*; do + [ -L "$lib" ] && continue + "$PATCHELF" --set-rpath '$ORIGIN' "$lib" + # Derive the unprefixed name: librocm_sysdeps_tbb.so.12 -> libtbb.so + base=$(basename "$lib") # librocm_sysdeps_tbb.so.12 + unprefixed="${base/rocm_sysdeps_/}" # libtbb.so.12 + symlink="${unprefixed%.so.*}.so" # libtbb.so + ln -sf "$base" "$LIB_DIR/$symlink" +done + +# Make tbb.pc relocatable: replace the absolute build-time prefix with +# a pcfiledir-relative path. .pc files live at $PREFIX/lib/pkgconfig, +# so ${pcfiledir}/../.. resolves back to $PREFIX at runtime. +PC="$LIB_DIR/pkgconfig/tbb.pc" +if [ -f "$PC" ]; then + abs_prefix=$(grep '^prefix=' "$PC" | cut -d= -f2-) + sed -i "s|prefix=${abs_prefix}|prefix=\${pcfiledir}/../..|" "$PC" + sed -i "s|${abs_prefix}/|\${prefix}/|g" "$PC" +fi + +# Remove the upstream cmake config. It references the original (unprefixed) +# library names and would conflict with TheRock's wrapper config provided via +# therock_cmake_subproject_provide_package. +rm -rf "$PREFIX/lib/cmake/TBB" + +echo "Done patching TBB install." diff --git a/third-party/sysdeps/linux/tbb/patch_source.sh b/third-party/sysdeps/linux/tbb/patch_source.sh new file mode 100644 index 00000000000..dc3d80abb27 --- /dev/null +++ b/third-party/sysdeps/linux/tbb/patch_source.sh @@ -0,0 +1,30 @@ +#!/usr/bin/bash +# Copyright Advanced Micro Devices, Inc. +# SPDX-License-Identifier: MIT + +# Patches TBB CMakeLists files to rename library output names with the +# rocm_sysdeps_ prefix, so that installed libraries do not conflict with +# system-installed TBB. Must be run before the cmake configure step. +# +# Args: source_dir + +set -e + +SOURCE_DIR="${1:?Source directory must be given}" + +echo "Patching TBB sources..." + +# tbb: insert OUTPUT_NAME after the SOVERSION line in set_target_properties. +# TBB_BINARY_VERSION is resolved at cmake configure time (evaluates to "12"). +sed -i 's/ SOVERSION \${TBB_BINARY_VERSION}$/ SOVERSION ${TBB_BINARY_VERSION}\n OUTPUT_NAME "rocm_sysdeps_tbb"/' \ + "$SOURCE_DIR/src/tbb/CMakeLists.txt" + +# tbbmalloc: same. TBBMALLOC_BINARY_VERSION evaluates to "2". +sed -i 's/ SOVERSION \${TBBMALLOC_BINARY_VERSION}$/ SOVERSION ${TBBMALLOC_BINARY_VERSION}\n OUTPUT_NAME "rocm_sysdeps_tbbmalloc"/' \ + "$SOURCE_DIR/src/tbbmalloc/CMakeLists.txt" + +# tbbmalloc_proxy: SOVERSION is followed by a closing paren on the same line. +sed -i 's/ SOVERSION \${TBBMALLOC_BINARY_VERSION})$/ SOVERSION ${TBBMALLOC_BINARY_VERSION}\n OUTPUT_NAME "rocm_sysdeps_tbbmalloc_proxy")/' \ + "$SOURCE_DIR/src/tbbmalloc_proxy/CMakeLists.txt" + +echo "Done patching TBB sources." diff --git a/third-party/sysdeps/linux/tbb/version.lds b/third-party/sysdeps/linux/tbb/version.lds new file mode 100644 index 00000000000..47aee2b9549 --- /dev/null +++ b/third-party/sysdeps/linux/tbb/version.lds @@ -0,0 +1,3 @@ +AMDROCM_SYSDEPS_1.0 { + global: *; +}; From b683b4fe93fb17ce66c218e7d36764a17480b4bb Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Wed, 29 Apr 2026 00:25:16 -0400 Subject: [PATCH 15/23] update comments --- third-party/sysdeps/linux/tbb/patch_install.sh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/third-party/sysdeps/linux/tbb/patch_install.sh b/third-party/sysdeps/linux/tbb/patch_install.sh index 74e31c54821..8d64816108a 100644 --- a/third-party/sysdeps/linux/tbb/patch_install.sh +++ b/third-party/sysdeps/linux/tbb/patch_install.sh @@ -19,16 +19,19 @@ LIB_DIR="$PREFIX/lib" echo "Patching TBB install..." -# Set RPATH to $ORIGIN on all real (non-symlink) rocm_sysdeps TBB libraries -# and create unprefixed libtbb*.so symlinks (e.g. libtbb.so -> librocm_sysdeps_tbb.so.12). +# Set RPATH to $ORIGIN on all real (non-symlink) rocm_sysdeps TBB libraries and +# create unprefixed libtbb*.so symlinks pointing at the SONAME symlink +# (e.g. libtbb.so -> librocm_sysdeps_tbb.so.12). for lib in "$LIB_DIR"/librocm_sysdeps_tbb*.so.*; do [ -L "$lib" ] && continue "$PATCHELF" --set-rpath '$ORIGIN' "$lib" - # Derive the unprefixed name: librocm_sysdeps_tbb.so.12 -> libtbb.so - base=$(basename "$lib") # librocm_sysdeps_tbb.so.12 - unprefixed="${base/rocm_sysdeps_/}" # libtbb.so.12 - symlink="${unprefixed%.so.*}.so" # libtbb.so - ln -sf "$base" "$LIB_DIR/$symlink" + # Create unprefixed .so symlink pointing at the SONAME (e.g. libtbb.so -> librocm_sysdeps_tbb.so.12). + # $lib is the real file (librocm_sysdeps_tbb.so.12.17); strip the minor version to get the SONAME. + base=$(basename "$lib") # librocm_sysdeps_tbb.so.12.17 + soname="${base%.*}" # librocm_sysdeps_tbb.so.12 + unprefixed="${soname/rocm_sysdeps_/}" # libtbb.so.12 + symlink="${unprefixed%.so.*}.so" # libtbb.so + ln -sf "$soname" "$LIB_DIR/$symlink" done # Make tbb.pc relocatable: replace the absolute build-time prefix with From 7dead6d7af44be9ca402c96937624144b634630c Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Wed, 29 Apr 2026 00:39:55 -0400 Subject: [PATCH 16/23] Remove unused version.lds from tbb sysdep TBB's own anonymous .def version scripts are incompatible with a named version script; the linker rejects mixing the two. version.lds is not used. Co-Authored-By: Claude Sonnet 4 --- third-party/sysdeps/linux/tbb/version.lds | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 third-party/sysdeps/linux/tbb/version.lds diff --git a/third-party/sysdeps/linux/tbb/version.lds b/third-party/sysdeps/linux/tbb/version.lds deleted file mode 100644 index 47aee2b9549..00000000000 --- a/third-party/sysdeps/linux/tbb/version.lds +++ /dev/null @@ -1,3 +0,0 @@ -AMDROCM_SYSDEPS_1.0 { - global: *; -}; From 4227d42662be08ab651c77ce0e57c835927f5bb1 Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Wed, 29 Apr 2026 00:46:42 -0400 Subject: [PATCH 17/23] Remove unused Python3_EXECUTABLE from tbb subproject args The tbb sub-project build does not use Python. Co-Authored-By: Claude Sonnet 4 --- third-party/sysdeps/linux/tbb/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/third-party/sysdeps/linux/tbb/CMakeLists.txt b/third-party/sysdeps/linux/tbb/CMakeLists.txt index 026b5ca9da3..6a631b2304b 100644 --- a/third-party/sysdeps/linux/tbb/CMakeLists.txt +++ b/third-party/sysdeps/linux/tbb/CMakeLists.txt @@ -28,7 +28,6 @@ if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) CMAKE_ARGS "-DSOURCE_DIR=${_source_dir}" "-DPATCHELF=${PATCHELF}" - "-DPython3_EXECUTABLE=${Python3_EXECUTABLE}" INSTALL_DESTINATION lib/rocm_sysdeps INTERFACE_LINK_DIRS From 3182f8965a72e3c0f45563650149457d2922d40d Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Wed, 29 Apr 2026 00:54:52 -0400 Subject: [PATCH 18/23] Enable nullglob in patch_install.sh for robustness Prevents the glob loop from running on a literal pattern if no matching libraries exist. Co-Authored-By: Claude Sonnet 4 --- third-party/sysdeps/linux/tbb/patch_install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/third-party/sysdeps/linux/tbb/patch_install.sh b/third-party/sysdeps/linux/tbb/patch_install.sh index 8d64816108a..49cea24d7d2 100644 --- a/third-party/sysdeps/linux/tbb/patch_install.sh +++ b/third-party/sysdeps/linux/tbb/patch_install.sh @@ -19,6 +19,8 @@ LIB_DIR="$PREFIX/lib" echo "Patching TBB install..." +shopt -s nullglob + # Set RPATH to $ORIGIN on all real (non-symlink) rocm_sysdeps TBB libraries and # create unprefixed libtbb*.so symlinks pointing at the SONAME symlink # (e.g. libtbb.so -> librocm_sysdeps_tbb.so.12). From 35bae177a9cc71b32731bfd00b8baaa508bcee46 Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Wed, 29 Apr 2026 01:13:10 -0400 Subject: [PATCH 19/23] Add post-sed verification to patch_source.sh Verify that OUTPUT_NAME was actually injected after each sed. If a future oneTBB version changes the CMake layout, the build will fail immediately with a clear message instead of producing wrong library names. Co-Authored-By: Claude Opus 4 --- third-party/sysdeps/linux/tbb/patch_source.sh | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/third-party/sysdeps/linux/tbb/patch_source.sh b/third-party/sysdeps/linux/tbb/patch_source.sh index dc3d80abb27..03da9957e0d 100644 --- a/third-party/sysdeps/linux/tbb/patch_source.sh +++ b/third-party/sysdeps/linux/tbb/patch_source.sh @@ -6,25 +6,39 @@ # rocm_sysdeps_ prefix, so that installed libraries do not conflict with # system-installed TBB. Must be run before the cmake configure step. # +# The sed patterns below are pinned to oneTBB 2022.3.0 and must be +# revalidated when bumping the version. +# # Args: source_dir set -e SOURCE_DIR="${1:?Source directory must be given}" +verify_patch() { + local file="$1" name="$2" + if ! grep -q "OUTPUT_NAME.*rocm_sysdeps_${name}" "$file"; then + echo "ERROR: OUTPUT_NAME patch for ${name} did not apply to ${file}" >&2 + echo "The sed patterns may need updating for this oneTBB version." >&2 + exit 1 + fi +} + echo "Patching TBB sources..." # tbb: insert OUTPUT_NAME after the SOVERSION line in set_target_properties. -# TBB_BINARY_VERSION is resolved at cmake configure time (evaluates to "12"). sed -i 's/ SOVERSION \${TBB_BINARY_VERSION}$/ SOVERSION ${TBB_BINARY_VERSION}\n OUTPUT_NAME "rocm_sysdeps_tbb"/' \ "$SOURCE_DIR/src/tbb/CMakeLists.txt" +verify_patch "$SOURCE_DIR/src/tbb/CMakeLists.txt" "tbb" -# tbbmalloc: same. TBBMALLOC_BINARY_VERSION evaluates to "2". +# tbbmalloc: same. sed -i 's/ SOVERSION \${TBBMALLOC_BINARY_VERSION}$/ SOVERSION ${TBBMALLOC_BINARY_VERSION}\n OUTPUT_NAME "rocm_sysdeps_tbbmalloc"/' \ "$SOURCE_DIR/src/tbbmalloc/CMakeLists.txt" +verify_patch "$SOURCE_DIR/src/tbbmalloc/CMakeLists.txt" "tbbmalloc" # tbbmalloc_proxy: SOVERSION is followed by a closing paren on the same line. sed -i 's/ SOVERSION \${TBBMALLOC_BINARY_VERSION})$/ SOVERSION ${TBBMALLOC_BINARY_VERSION}\n OUTPUT_NAME "rocm_sysdeps_tbbmalloc_proxy")/' \ "$SOURCE_DIR/src/tbbmalloc_proxy/CMakeLists.txt" +verify_patch "$SOURCE_DIR/src/tbbmalloc_proxy/CMakeLists.txt" "tbbmalloc_proxy" echo "Done patching TBB sources." From fa9622838cc0f5a895e752940d57872ee8cdbc31 Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Wed, 29 Apr 2026 01:21:37 -0400 Subject: [PATCH 20/23] Update comments --- third-party/sysdeps/linux/tbb/patch_install.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/third-party/sysdeps/linux/tbb/patch_install.sh b/third-party/sysdeps/linux/tbb/patch_install.sh index 49cea24d7d2..b14e397a8cd 100644 --- a/third-party/sysdeps/linux/tbb/patch_install.sh +++ b/third-party/sysdeps/linux/tbb/patch_install.sh @@ -21,14 +21,10 @@ echo "Patching TBB install..." shopt -s nullglob -# Set RPATH to $ORIGIN on all real (non-symlink) rocm_sysdeps TBB libraries and -# create unprefixed libtbb*.so symlinks pointing at the SONAME symlink -# (e.g. libtbb.so -> librocm_sysdeps_tbb.so.12). +# Set RPATH and create unprefixed symlinks (e.g. libtbb.so -> librocm_sysdeps_tbb.so.12). for lib in "$LIB_DIR"/librocm_sysdeps_tbb*.so.*; do [ -L "$lib" ] && continue "$PATCHELF" --set-rpath '$ORIGIN' "$lib" - # Create unprefixed .so symlink pointing at the SONAME (e.g. libtbb.so -> librocm_sysdeps_tbb.so.12). - # $lib is the real file (librocm_sysdeps_tbb.so.12.17); strip the minor version to get the SONAME. base=$(basename "$lib") # librocm_sysdeps_tbb.so.12.17 soname="${base%.*}" # librocm_sysdeps_tbb.so.12 unprefixed="${soname/rocm_sysdeps_/}" # libtbb.so.12 From 3dbc0a05245b81c5d13c490e0b5bf9fb7710377d Mon Sep 17 00:00:00 2001 From: David Galiffi Date: Wed, 29 Apr 2026 19:40:20 -0400 Subject: [PATCH 21/23] Fetch sysdeps-tbb artifact for rocprofiler-systems tests Dyninst links against librocm_sysdeps_tbb.so.12 at runtime. The sysdeps-tbb artifact is optional and not part of the core sysdeps bundle, so it must be fetched explicitly alongside rocprofiler-systems. Co-Authored-By: Claude Opus 4 --- build_tools/install_rocm_from_artifacts.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build_tools/install_rocm_from_artifacts.py b/build_tools/install_rocm_from_artifacts.py index dbe9d045298..e5e3110db83 100644 --- a/build_tools/install_rocm_from_artifacts.py +++ b/build_tools/install_rocm_from_artifacts.py @@ -446,6 +446,8 @@ def retrieve_artifacts_by_run_id(args): extra_artifacts.append("rocprofiler-systems") # Contains executables (rocprof-sys-run, rocprof-sys-instrument, etc.) argv.append("rocprofiler-systems_run") + # rocprofiler-systems depends on sysdeps-tbb (Dyninst links against it) + extra_artifacts.append("sysdeps-tbb") if args.rocrtst: extra_artifacts.append("rocrtst") # rocrtst depends on sysdeps-hwloc (which depends on sysdeps-libpciaccess) From d45ae6887b120599ac762c7ce21e6787577206e0 Mon Sep 17 00:00:00 2001 From: Aleksandar Janicijevic Date: Wed, 6 May 2026 15:28:11 -0400 Subject: [PATCH 22/23] Removed unnecessary setting, modified requirements-test.txt --- profiler/CMakeLists.txt | 1 - requirements-test.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/profiler/CMakeLists.txt b/profiler/CMakeLists.txt index c3f10fb45b4..a91b93bcb76 100644 --- a/profiler/CMakeLists.txt +++ b/profiler/CMakeLists.txt @@ -306,7 +306,6 @@ if(THEROCK_ENABLE_ROCPROFV3) -DHIP_PLATFORM=amd -DROCPROFSYS_BUILD_LIBIBERTY=ON -DROCPROFSYS_BUILD_BOOST=ON - -DROCPROFSYS_BUILD_TBB=OFF -DROCPROFSYS_BUILD_DYNINST=ON -DROCPROFSYS_BUILD_FOR_THEROCK=ON # TODO: Will be deprecated -DROCPROFSYS_INSTALL_TESTING="${THEROCK_BUILD_TESTING}" diff --git a/requirements-test.txt b/requirements-test.txt index b00307703ab..688fd4218a9 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1,4 +1,4 @@ -boto3==1.39.15 +botocore==1.42.84 pytest==9.0.3 # This versions has subtests built-in. pytest-check==2.5.3 pytest-cov==6.0.0 From 51bb80840ebec718d1fdb48b73890769e671ae59 Mon Sep 17 00:00:00 2001 From: Aleksandar Janicijevic Date: Wed, 6 May 2026 16:08:00 -0400 Subject: [PATCH 23/23] Reverted change --- requirements-test.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-test.txt b/requirements-test.txt index 688fd4218a9..b00307703ab 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1,4 +1,4 @@ -botocore==1.42.84 +boto3==1.39.15 pytest==9.0.3 # This versions has subtests built-in. pytest-check==2.5.3 pytest-cov==6.0.0