Files
TheRock/rocm-libraries/projects/hipcub/cmake/ROCMExportTargetsHeaderOnly.cmake
T
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

149 lines
5.7 KiB
CMake

# MIT License
#
# Copyright (c) 2017-2019 Advanced Micro Devices, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
# This file is a worksaround for issues rocm-cmake packaging style and PyTorch.
# TODO: remove when there is a fix for this issue in either rocm-cmake or PyTorch.
include(CMakeParseArguments)
include(GNUInstallDirs)
include(ROCMPackageConfigHelpers)
include(ROCMInstallTargets)
set(ROCM_INSTALL_LIBDIR lib)
function(rocm_write_package_template_function_if FILENAME NAME CHECK_VARIABLE)
string(REPLACE ";" " " ARGS "${ARGN}")
file(APPEND ${FILENAME}
"
if(NOT (DEFINED ${CHECK_VARIABLE} AND ${CHECK_VARIABLE}) )
${NAME}(${ARGS})
endif()
")
endfunction()
function(rocm_export_targets_header_only)
set(options)
set(oneValueArgs NAMESPACE EXPORT NAME COMPATIBILITY PREFIX)
set(multiValueArgs TARGETS DEPENDS INCLUDE)
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(PACKAGE_NAME ${PROJECT_NAME})
if(PARSE_NAME)
set(PACKAGE_NAME ${PARSE_NAME})
endif()
string(TOUPPER ${PACKAGE_NAME} PACKAGE_NAME_UPPER)
string(TOLOWER ${PACKAGE_NAME} PACKAGE_NAME_LOWER)
set(TARGET_FILE ${PACKAGE_NAME_LOWER}-targets)
if(PARSE_EXPORT)
set(TARGET_FILE ${PARSE_EXPORT})
endif()
set(CONFIG_NAME ${PACKAGE_NAME_LOWER}-config)
set(TARGET_VERSION ${PROJECT_VERSION})
if(PARSE_PREFIX)
set(PREFIX_DIR ${PARSE_PREFIX})
set(PREFIX_ARG PREFIX ${PREFIX_DIR})
set(BIN_INSTALL_DIR ${PREFIX_DIR}/${CMAKE_INSTALL_BINDIR})
set(LIB_INSTALL_DIR ${PREFIX_DIR}/${ROCM_INSTALL_LIBDIR})
set(INCLUDE_INSTALL_DIR ${PREFIX_DIR}/${CMAKE_INSTALL_INCLUDEDIR})
else()
set(BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR})
set(LIB_INSTALL_DIR ${ROCM_INSTALL_LIBDIR})
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
endif()
set(CONFIG_PACKAGE_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/${PACKAGE_NAME_LOWER})
set(CONFIG_TEMPLATE "${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME_LOWER}-config.cmake.in")
file(WRITE ${CONFIG_TEMPLATE} "
@PACKAGE_INIT@
")
foreach(NAME ${PACKAGE_NAME} ${PACKAGE_NAME_UPPER} ${PACKAGE_NAME_LOWER})
rocm_write_package_template_function(${CONFIG_TEMPLATE} set_and_check ${NAME}_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
rocm_write_package_template_function(${CONFIG_TEMPLATE} set_and_check ${NAME}_INCLUDE_DIRS "@PACKAGE_INCLUDE_INSTALL_DIR@")
endforeach()
rocm_write_package_template_function(${CONFIG_TEMPLATE} set_and_check ${PACKAGE_NAME}_TARGET_FILE "@PACKAGE_CONFIG_PACKAGE_INSTALL_DIR@/${TARGET_FILE}.cmake")
if(PARSE_DEPENDS)
rocm_list_split(PARSE_DEPENDS PACKAGE DEPENDS_LIST)
foreach(DEPEND ${DEPENDS_LIST})
rocm_write_package_template_function(${CONFIG_TEMPLATE} find_dependency ${${DEPEND}})
endforeach()
endif()
foreach(INCLUDE ${PARSE_INCLUDE})
rocm_install(FILES ${INCLUDE} DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR})
get_filename_component(INCLUDE_BASE ${INCLUDE} NAME)
rocm_write_package_template_function(${CONFIG_TEMPLATE} include "\${CMAKE_CURRENT_LIST_DIR}/${INCLUDE_BASE}")
endforeach()
if(PARSE_TARGETS)
rocm_write_package_template_function(${CONFIG_TEMPLATE} include "\${${PACKAGE_NAME}_TARGET_FILE}")
foreach(NAME ${PACKAGE_NAME} ${PACKAGE_NAME_UPPER} ${PACKAGE_NAME_LOWER})
rocm_write_package_template_function_if(${CONFIG_TEMPLATE} set PYTORCH_FOUND_HIP ${NAME}_LIBRARIES ${PARSE_TARGETS})
rocm_write_package_template_function_if(${CONFIG_TEMPLATE} set PYTORCH_FOUND_HIP ${NAME}_LIBRARY ${PARSE_TARGETS})
endforeach()
endif()
rocm_configure_package_config_file(
${CONFIG_TEMPLATE}
${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}.cmake
INSTALL_DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR}
${PREFIX_ARG}
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR CONFIG_PACKAGE_INSTALL_DIR
)
set(COMPATIBILITY_ARG SameMajorVersion)
if(PARSE_COMPATIBILITY)
set(COMPATIBILITY_ARG ${PARSE_COMPATIBILITY})
endif()
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}-version.cmake
VERSION ${TARGET_VERSION}
COMPATIBILITY ${COMPATIBILITY_ARG}
)
set(NAMESPACE_ARG)
if(PARSE_NAMESPACE)
set(NAMESPACE_ARG "NAMESPACE;${PARSE_NAMESPACE}")
endif()
rocm_install( EXPORT ${TARGET_FILE}
DESTINATION
${CONFIG_PACKAGE_INSTALL_DIR}
${NAMESPACE_ARG}
)
rocm_install( FILES
${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}.cmake
${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}-version.cmake
DESTINATION
${CONFIG_PACKAGE_INSTALL_DIR})
endfunction()