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
356 lines
12 KiB
CMake
356 lines
12 KiB
CMake
#
|
|
#
|
|
# External dependencies
|
|
#
|
|
#
|
|
include(rocprofiler_utilities)
|
|
|
|
cmake_policy(PUSH)
|
|
cmake_policy(SET CMP0077 NEW) # option() honors normal variables
|
|
|
|
set(CMAKE_MESSAGE_INDENT "[${PROJECT_NAME}][external] ")
|
|
|
|
set(BUILD_TESTING OFF)
|
|
set(BUILD_SHARED_LIBS OFF)
|
|
set(BUILD_OBJECT_LIBS OFF) # Specific to PTL
|
|
set(BUILD_STATIC_LIBS ON)
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
set(CMAKE_CXX_VISIBILITY_PRESET "hidden")
|
|
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
|
|
|
# filesystem library
|
|
if(ROCPROFILER_BUILD_GHC_FS)
|
|
# checkout submodule if not already checked out or clone repo if no .gitmodules file
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/filesystem
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/gulrak/filesystem.git
|
|
REPO_BRANCH "v1.5.14")
|
|
|
|
target_compile_definitions(
|
|
rocprofiler-sdk-cxx-filesystem
|
|
INTERFACE $<BUILD_INTERFACE:ROCPROFILER_HAS_GHC_LIB_FILESYSTEM=1>)
|
|
target_include_directories(
|
|
rocprofiler-sdk-cxx-filesystem SYSTEM
|
|
INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/filesystem/include>)
|
|
endif()
|
|
|
|
if(ROCPROFILER_BUILD_TESTS)
|
|
if(ROCPROFILER_BUILD_GTEST)
|
|
# checkout submodule if not already checked out or clone repo if no .gitmodules
|
|
# file
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/googletest
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/google/googletest.git
|
|
REPO_BRANCH "main")
|
|
|
|
set(BUILD_GMOCK ON)
|
|
set(INSTALL_GTEST OFF)
|
|
add_subdirectory(googletest EXCLUDE_FROM_ALL)
|
|
|
|
if(NOT TARGET GTest::gtest)
|
|
message(FATAL_ERROR "missing GTest::gtest")
|
|
endif()
|
|
|
|
target_link_libraries(rocprofiler-sdk-gtest INTERFACE GTest::gtest)
|
|
target_include_directories(
|
|
rocprofiler-sdk-gtest SYSTEM
|
|
INTERFACE ${CMAKE_CURRENT_LIST_DIR}/googletest/googletest/include
|
|
${CMAKE_CURRENT_LIST_DIR}/googlemock/googlemock/include)
|
|
|
|
mark_as_advanced(INSTALL_GTEST)
|
|
mark_as_advanced(BUILD_GMOCK)
|
|
mark_as_advanced(GTEST_HAS_ABSL)
|
|
else()
|
|
find_package(GTest REQUIRED)
|
|
target_link_libraries(rocprofiler-sdk-gtest INTERFACE GTest::gtest)
|
|
endif()
|
|
endif()
|
|
|
|
if(ROCPROFILER_BUILD_ABSEIL)
|
|
# checkout submodule if not already checked out or clone repo if no .gitmodules file
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/abseil-cpp
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/abseil/abseil-cpp.git
|
|
REPO_BRANCH "lts_2026_01_07")
|
|
|
|
set(ABSL_PROPAGATE_CXX_STD ON)
|
|
set(ABSL_BUILD_TESTING OFF)
|
|
set(ABSL_USE_GOOGLETEST_HEAD OFF)
|
|
add_subdirectory(abseil-cpp EXCLUDE_FROM_ALL)
|
|
|
|
target_link_libraries(
|
|
rocprofiler-sdk-abseil
|
|
INTERFACE $<BUILD_INTERFACE:absl::log>
|
|
$<BUILD_INTERFACE:absl::log_initialize>
|
|
$<BUILD_INTERFACE:absl::check>
|
|
$<BUILD_INTERFACE:absl::log_globals>
|
|
$<BUILD_INTERFACE:absl::vlog_is_on>
|
|
$<BUILD_INTERFACE:absl::failure_signal_handler>)
|
|
else()
|
|
find_package(absl REQUIRED)
|
|
target_link_libraries(
|
|
rocprofiler-sdk-abseil
|
|
INTERFACE absl::log absl::log_initialize absl::check absl::log_globals
|
|
absl::vlog_is_on absl::failure_signal_handler)
|
|
endif()
|
|
|
|
if(ROCPROFILER_BUILD_FMT)
|
|
# checkout submodule if not already checked out or clone repo if no .gitmodules file
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/fmt
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/fmtlib/fmt.git
|
|
REPO_BRANCH "master")
|
|
|
|
set(FMT_TEST OFF)
|
|
set(FMT_DEBUG_POSTFIX "")
|
|
add_subdirectory(fmt EXCLUDE_FROM_ALL)
|
|
|
|
target_link_libraries(rocprofiler-sdk-fmt INTERFACE $<BUILD_INTERFACE:fmt::fmt>)
|
|
target_include_directories(
|
|
rocprofiler-sdk-fmt SYSTEM
|
|
INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/fmt/include>)
|
|
else()
|
|
find_package(fmt REQUIRED)
|
|
target_link_libraries(rocprofiler-sdk-fmt INTERFACE fmt::fmt)
|
|
endif()
|
|
|
|
if(NOT TARGET PTL::ptl-static)
|
|
# checkout submodule if not already checked out or clone repo if no .gitmodules file
|
|
rocprofiler_checkout_git_submodule(
|
|
RELATIVE_PATH external/ptl
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/jrmadsen/PTL.git
|
|
REPO_BRANCH rocprofiler)
|
|
|
|
set(PTL_USE_TBB OFF)
|
|
set(PTL_USE_GPU OFF)
|
|
set(PTL_USE_LOCKS ON)
|
|
set(PTL_BUILD_EXAMPLES OFF)
|
|
set(PTL_DEVELOPER_INSTALL OFF)
|
|
add_subdirectory(ptl EXCLUDE_FROM_ALL)
|
|
endif()
|
|
|
|
if(ROCPROFILER_BUILD_YAML_CPP)
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/yaml-cpp
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/jbeder/yaml-cpp.git
|
|
REPO_BRANCH "master")
|
|
|
|
add_subdirectory(yaml-cpp EXCLUDE_FROM_ALL)
|
|
|
|
target_link_libraries(rocprofiler-sdk-yaml-cpp
|
|
INTERFACE $<BUILD_INTERFACE:yaml-cpp::yaml-cpp>)
|
|
target_include_directories(
|
|
rocprofiler-sdk-yaml-cpp
|
|
INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/yaml-cpp/include>)
|
|
else()
|
|
find_package(yaml-cpp 0.8.0 REQUIRED)
|
|
target_link_libraries(rocprofiler-sdk-yaml-cpp INTERFACE yaml-cpp::yaml-cpp)
|
|
endif()
|
|
|
|
# checkout submodule if not already checked out or clone repo if no .gitmodules file
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/cereal
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/jrmadsen/cereal.git
|
|
REPO_BRANCH "rocprofiler")
|
|
|
|
target_compile_definitions(rocprofiler-sdk-cereal
|
|
INTERFACE $<BUILD_INTERFACE:CEREAL_THREAD_SAFE=1>)
|
|
target_include_directories(
|
|
rocprofiler-sdk-cereal
|
|
INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/cereal/include>)
|
|
|
|
# doxygen-awesome
|
|
if(ROCPROFILER_BUILD_DOCS)
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/doxygen-awesome-css
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
TEST_FILE Makefile
|
|
REPO_URL https://github.com/jothepro/doxygen-awesome-css.git
|
|
REPO_BRANCH "main")
|
|
endif()
|
|
|
|
# perfetto
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/perfetto
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
TEST_FILE meson.build
|
|
REPO_URL https://github.com/google/perfetto
|
|
REPO_BRANCH "v44.0")
|
|
|
|
add_library(rocprofiler-sdk-perfetto-static-library STATIC)
|
|
target_sources(
|
|
rocprofiler-sdk-perfetto-static-library
|
|
PRIVATE ${PROJECT_SOURCE_DIR}/external/perfetto/sdk/perfetto.h
|
|
${PROJECT_SOURCE_DIR}/external/perfetto/sdk/perfetto.cc)
|
|
target_include_directories(
|
|
rocprofiler-sdk-perfetto-static-library SYSTEM
|
|
INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/perfetto/sdk>)
|
|
set_target_properties(
|
|
rocprofiler-sdk-perfetto-static-library
|
|
PROPERTIES POSITION_INDEPENDENT_CODE ON OUTPUT_NAME rocprofiler-sdk-perfetto)
|
|
target_link_libraries(
|
|
rocprofiler-sdk-perfetto
|
|
INTERFACE $<BUILD_INTERFACE:rocprofiler-sdk-perfetto-static-library>)
|
|
|
|
# ELFIO
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/elfio
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/serge1/ELFIO.git
|
|
REPO_BRANCH "Release_3.12")
|
|
|
|
set(ELFIO_BUILD_EXAMPLES OFF)
|
|
set(ELFIO_BUILD_TESTS OFF)
|
|
add_subdirectory(elfio EXCLUDE_FROM_ALL)
|
|
if(TARGET rocprofiler-sdk-elfio)
|
|
get_target_property(ELFIO_INCLUDE_DIR elfio::elfio INTERFACE_INCLUDE_DIRECTORIES)
|
|
target_include_directories(rocprofiler-sdk-elfio SYSTEM
|
|
INTERFACE ${ELFIO_INCLUDE_DIR})
|
|
endif()
|
|
|
|
#
|
|
# OTF2
|
|
#
|
|
add_subdirectory(otf2)
|
|
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/json
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/nlohmann/json.git
|
|
REPO_BRANCH "develop")
|
|
|
|
#
|
|
# JSON
|
|
#
|
|
add_subdirectory(json)
|
|
target_include_directories(
|
|
rocprofiler-sdk-json SYSTEM
|
|
INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/json/include>)
|
|
|
|
#
|
|
# SQLite3
|
|
#
|
|
if(ROCPROFILER_BUILD_SQLITE3)
|
|
# checkout submodule if not already checked out or clone repo if no .gitmodules file
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/sqlite
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
TEST_FILE configure
|
|
REPO_URL https://github.com/sqlite/sqlite
|
|
REPO_BRANCH "version-3.47.0")
|
|
|
|
find_program(
|
|
MAKE_COMMAND
|
|
NAMES make gmake
|
|
PATH_SUFFIXES bin REQUIRED)
|
|
|
|
include(ExternalProject)
|
|
externalproject_add(
|
|
rocprofiler-sdk-sqlite-build
|
|
PREFIX ${PROJECT_BINARY_DIR}/external/sqlite/build
|
|
SOURCE_DIR ${PROJECT_SOURCE_DIR}/external/sqlite
|
|
BUILD_IN_SOURCE 0
|
|
CONFIGURE_COMMAND
|
|
<SOURCE_DIR>/configure --prefix=${PROJECT_BINARY_DIR}/external/sqlite/install
|
|
--libdir=${PROJECT_BINARY_DIR}/external/sqlite/install/lib
|
|
--enable-tempstore=yes --enable-all --disable-tcl --with-pic CFLAGS=-O3\ -g1
|
|
BUILD_COMMAND ${MAKE_COMMAND} install -s
|
|
INSTALL_COMMAND "")
|
|
|
|
target_link_libraries(
|
|
rocprofiler-sdk-sqlite3
|
|
INTERFACE
|
|
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/external/sqlite/install/lib/libsqlite3.so>
|
|
)
|
|
target_include_directories(
|
|
rocprofiler-sdk-sqlite3 SYSTEM
|
|
INTERFACE $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/external/sqlite/install/include>
|
|
)
|
|
add_dependencies(rocprofiler-sdk-sqlite3 rocprofiler-sdk-sqlite-build)
|
|
else()
|
|
find_package(SQLite3 REQUIRED)
|
|
target_link_libraries(rocprofiler-sdk-sqlite3 INTERFACE SQLite::SQLite3)
|
|
endif()
|
|
|
|
#
|
|
# PyBind11
|
|
#
|
|
if(ROCPROFILER_BUILD_PYBIND11)
|
|
# checkout submodule if not already checked out or clone repo if no .gitmodules file
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/pybind11
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/pybind/pybind11.git
|
|
REPO_BRANCH "v2.9.2")
|
|
|
|
target_include_directories(
|
|
rocprofiler-sdk-pybind11 SYSTEM
|
|
INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/external/pybind11/include>)
|
|
else()
|
|
find_package(pybind11 REQUIRED)
|
|
target_link_libraries(rocprofiler-sdk-pybind11 INTERFACE pybind11::pybind11)
|
|
endif()
|
|
|
|
#
|
|
# GOTCHA
|
|
#
|
|
if(ROCPROFILER_BUILD_GOTCHA)
|
|
# checkout submodule if not already checked out or clone repo if no .gitmodules file
|
|
rocprofiler_checkout_git_submodule(
|
|
RECURSIVE
|
|
RELATIVE_PATH external/gotcha
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
REPO_URL https://github.com/jrmadsen/GOTCHA.git
|
|
REPO_BRANCH "rocprofiler")
|
|
|
|
function(add_gotcha_subdirectory)
|
|
set(GOTCHA_ENABLE_TESTS OFF)
|
|
set(GOTCHA_ENABLE_WARNING_ERROR OFF)
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
|
|
"${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/rocprofiler-sdk")
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
|
|
"${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/rocprofiler-sdk")
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
|
|
"${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/rocprofiler-sdk")
|
|
add_subdirectory(gotcha EXCLUDE_FROM_ALL)
|
|
add_dependencies(rocprofiler-sdk-gotcha gotcha)
|
|
install(
|
|
TARGETS gotcha
|
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/rocprofiler-sdk"
|
|
COMPONENT rocpd
|
|
OPTIONAL)
|
|
endfunction()
|
|
|
|
add_gotcha_subdirectory()
|
|
|
|
target_link_libraries(rocprofiler-sdk-gotcha INTERFACE gotcha::gotcha)
|
|
else()
|
|
find_package(gotcha REQUIRED)
|
|
if(TARGET gotcha::gotcha)
|
|
target_link_libraries(rocprofiler-sdk-gotcha INTERFACE gotcha::gotcha)
|
|
elseif(TARGET gotcha)
|
|
target_link_libraries(rocprofiler-sdk-gotcha INTERFACE gotcha)
|
|
endif()
|
|
endif()
|
|
|
|
cmake_policy(POP)
|