CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
231 lines
7.8 KiB
CMake
231 lines
7.8 KiB
CMake
# Copyright (c) Advanced Micro Devices, Inc.
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
include_guard(GLOBAL)
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Options
|
|
# ------------------------------------------------------------------------------
|
|
|
|
set(ROCPROFSYS_PROFILER_HUB_GIT_REPOSITORY
|
|
"https://github.com/ROCm/rocm-systems.git"
|
|
CACHE STRING
|
|
"Git repository URL for profiler-hub fallback sparse checkout"
|
|
)
|
|
|
|
set(ROCPROFSYS_PROFILER_HUB_GIT_TAG
|
|
"0e57a383b016cfd75b02e83dfb2adcd55f395b42"
|
|
CACHE STRING
|
|
"Git commit for profiler-hub fallback sparse checkout (pinned to the #8610 merge commit that fixes profiler-hub's export-set and schema-API build failures)"
|
|
)
|
|
|
|
set(ROCPROFSYS_PROFILER_HUB_GIT_SUBDIR
|
|
"profilers/profiler-hub"
|
|
CACHE STRING
|
|
"Subdirectory inside the repository that contains profiler-hub"
|
|
)
|
|
|
|
option(ROCPROFSYS_PROFILER_HUB_ENABLE_LOGGING "Enable profiler-hub logging" OFF)
|
|
option(ROCPROFSYS_PROFILER_HUB_LINK_STATIC "Link profiler-hub statically" OFF)
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Resolution order:
|
|
# 1. find_package(profiler-hub) - use installed package if present
|
|
# 2. fallback: sparse checkout of ROCPROFSYS_PROFILER_HUB_GIT_SUBDIR from
|
|
# ROCPROFSYS_PROFILER_HUB_GIT_REPOSITORY at ROCPROFSYS_PROFILER_HUB_GIT_TAG
|
|
# ------------------------------------------------------------------------------
|
|
|
|
set(_PROFILER_HUB_IS_EXTERNAL FALSE)
|
|
set(_PROFILER_HUB_SOURCE_DIR "")
|
|
|
|
find_package(profiler-hub QUIET CONFIG)
|
|
|
|
if(profiler-hub_FOUND)
|
|
message(STATUS "[profiler-hub] Using installed package: ${profiler-hub_DIR}")
|
|
set(_PROFILER_HUB_IS_EXTERNAL TRUE)
|
|
else()
|
|
message(
|
|
STATUS
|
|
"[profiler-hub] find_package failed; falling back to "
|
|
"sparse checkout of ${ROCPROFSYS_PROFILER_HUB_GIT_REPOSITORY} "
|
|
"(${ROCPROFSYS_PROFILER_HUB_GIT_TAG})"
|
|
)
|
|
|
|
find_package(Git REQUIRED)
|
|
|
|
set(_PROFILER_HUB_ROOT "${PROJECT_BINARY_DIR}/external/profiler-hub")
|
|
set(_PROFILER_HUB_CHECKOUT "${_PROFILER_HUB_ROOT}/src")
|
|
set(_PROFILER_HUB_SOURCE_DIR
|
|
"${_PROFILER_HUB_CHECKOUT}/${ROCPROFSYS_PROFILER_HUB_GIT_SUBDIR}"
|
|
)
|
|
set(_PROFILER_HUB_STAMP "${_PROFILER_HUB_ROOT}/.checkout.stamp")
|
|
|
|
set(_PROFILER_HUB_NEEDS_CHECKOUT TRUE)
|
|
if(EXISTS "${_PROFILER_HUB_STAMP}")
|
|
file(READ "${_PROFILER_HUB_STAMP}" _stamp_contents)
|
|
if(
|
|
_stamp_contents
|
|
STREQUAL
|
|
"${ROCPROFSYS_PROFILER_HUB_GIT_REPOSITORY}@${ROCPROFSYS_PROFILER_HUB_GIT_TAG}:${ROCPROFSYS_PROFILER_HUB_GIT_SUBDIR}"
|
|
)
|
|
set(_PROFILER_HUB_NEEDS_CHECKOUT FALSE)
|
|
endif()
|
|
endif()
|
|
|
|
if(_PROFILER_HUB_NEEDS_CHECKOUT)
|
|
message(
|
|
STATUS
|
|
"[profiler-hub] Sparse-checking out ${ROCPROFSYS_PROFILER_HUB_GIT_SUBDIR} into ${_PROFILER_HUB_CHECKOUT}"
|
|
)
|
|
|
|
if(EXISTS "${_PROFILER_HUB_CHECKOUT}")
|
|
file(REMOVE_RECURSE "${_PROFILER_HUB_CHECKOUT}")
|
|
endif()
|
|
file(MAKE_DIRECTORY "${_PROFILER_HUB_CHECKOUT}")
|
|
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} init ${_PROFILER_HUB_CHECKOUT}
|
|
RESULT_VARIABLE _git_result
|
|
ERROR_VARIABLE _git_error
|
|
)
|
|
if(NOT _git_result EQUAL 0)
|
|
message(FATAL_ERROR "[profiler-hub] git init failed: ${_git_error}")
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND
|
|
${GIT_EXECUTABLE} remote add origin
|
|
${ROCPROFSYS_PROFILER_HUB_GIT_REPOSITORY}
|
|
WORKING_DIRECTORY ${_PROFILER_HUB_CHECKOUT}
|
|
RESULT_VARIABLE _git_result
|
|
ERROR_VARIABLE _git_error
|
|
)
|
|
if(NOT _git_result EQUAL 0)
|
|
message(FATAL_ERROR "[profiler-hub] git remote add failed: ${_git_error}")
|
|
endif()
|
|
|
|
# fetch (rather than clone --branch) so ROCPROFSYS_PROFILER_HUB_GIT_TAG can be
|
|
# a branch, a tag, or a raw commit SHA; GitHub's smart-HTTP transport allows
|
|
# fetching any reachable commit, not just named refs.
|
|
execute_process(
|
|
COMMAND
|
|
${GIT_EXECUTABLE} fetch --filter=blob:none --depth 1 origin
|
|
${ROCPROFSYS_PROFILER_HUB_GIT_TAG}
|
|
WORKING_DIRECTORY ${_PROFILER_HUB_CHECKOUT}
|
|
RESULT_VARIABLE _git_result
|
|
OUTPUT_VARIABLE _git_output
|
|
ERROR_VARIABLE _git_error
|
|
)
|
|
if(NOT _git_result EQUAL 0)
|
|
message(
|
|
FATAL_ERROR
|
|
"[profiler-hub] git fetch failed (${_git_result}): ${_git_error}\n${_git_output}"
|
|
)
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} sparse-checkout init --cone
|
|
WORKING_DIRECTORY ${_PROFILER_HUB_CHECKOUT}
|
|
RESULT_VARIABLE _git_result
|
|
ERROR_VARIABLE _git_error
|
|
)
|
|
if(NOT _git_result EQUAL 0)
|
|
message(
|
|
FATAL_ERROR
|
|
"[profiler-hub] sparse-checkout init failed: ${_git_error}"
|
|
)
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND
|
|
${GIT_EXECUTABLE} sparse-checkout set
|
|
${ROCPROFSYS_PROFILER_HUB_GIT_SUBDIR}
|
|
WORKING_DIRECTORY ${_PROFILER_HUB_CHECKOUT}
|
|
RESULT_VARIABLE _git_result
|
|
ERROR_VARIABLE _git_error
|
|
)
|
|
if(NOT _git_result EQUAL 0)
|
|
message(
|
|
FATAL_ERROR
|
|
"[profiler-hub] sparse-checkout set failed: ${_git_error}"
|
|
)
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} checkout FETCH_HEAD
|
|
WORKING_DIRECTORY ${_PROFILER_HUB_CHECKOUT}
|
|
RESULT_VARIABLE _git_result
|
|
ERROR_VARIABLE _git_error
|
|
)
|
|
if(NOT _git_result EQUAL 0)
|
|
message(FATAL_ERROR "[profiler-hub] git checkout failed: ${_git_error}")
|
|
endif()
|
|
|
|
if(NOT EXISTS "${_PROFILER_HUB_SOURCE_DIR}/CMakeLists.txt")
|
|
message(
|
|
FATAL_ERROR
|
|
"[profiler-hub] Sparse checkout completed but CMakeLists.txt missing at "
|
|
"${_PROFILER_HUB_SOURCE_DIR}"
|
|
)
|
|
endif()
|
|
|
|
file(
|
|
WRITE "${_PROFILER_HUB_STAMP}"
|
|
"${ROCPROFSYS_PROFILER_HUB_GIT_REPOSITORY}@${ROCPROFSYS_PROFILER_HUB_GIT_TAG}:${ROCPROFSYS_PROFILER_HUB_GIT_SUBDIR}"
|
|
)
|
|
else()
|
|
message(
|
|
STATUS
|
|
"[profiler-hub] Reusing existing sparse checkout at ${_PROFILER_HUB_SOURCE_DIR}"
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT _PROFILER_HUB_IS_EXTERNAL)
|
|
set(PROFILER_HUB_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
|
set(PROFILER_HUB_BUILD_BENCHMARKS OFF CACHE BOOL "" FORCE)
|
|
set(PROFILER_HUB_ENABLE_LOGGING
|
|
${ROCPROFSYS_PROFILER_HUB_ENABLE_LOGGING}
|
|
CACHE BOOL
|
|
""
|
|
FORCE
|
|
)
|
|
|
|
add_subdirectory(
|
|
${_PROFILER_HUB_SOURCE_DIR}
|
|
${PROJECT_BINARY_DIR}/external/profiler-hub/build
|
|
)
|
|
endif()
|
|
|
|
if(ROCPROFSYS_PROFILER_HUB_LINK_STATIC)
|
|
set(_PROFILER_HUB_SUFFIX "-static")
|
|
message(STATUS "[profiler-hub] Linking statically")
|
|
else()
|
|
set(_PROFILER_HUB_SUFFIX "")
|
|
endif()
|
|
|
|
if(_PROFILER_HUB_IS_EXTERNAL)
|
|
set(_PROFILER_HUB_TARGET profiler-hub::profiler-hub${_PROFILER_HUB_SUFFIX})
|
|
else()
|
|
set(_PROFILER_HUB_TARGET profiler-hub${_PROFILER_HUB_SUFFIX})
|
|
endif()
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Interface target
|
|
# ------------------------------------------------------------------------------
|
|
|
|
add_library(rocprofiler-systems-profiler-hub INTERFACE)
|
|
add_library(
|
|
rocprofiler-systems::rocprofiler-systems-profiler-hub
|
|
ALIAS rocprofiler-systems-profiler-hub
|
|
)
|
|
target_link_libraries(rocprofiler-systems-profiler-hub INTERFACE ${_PROFILER_HUB_TARGET})
|
|
|
|
if(NOT _PROFILER_HUB_IS_EXTERNAL)
|
|
target_include_directories(
|
|
rocprofiler-systems-profiler-hub
|
|
SYSTEM
|
|
INTERFACE $<TARGET_PROPERTY:profiler-hub,INTERFACE_INCLUDE_DIRECTORIES>
|
|
)
|
|
endif()
|