Files
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

180 lines
5.7 KiB
CMake
Executable File

# ######################################################################################################################
# Copyright (C) 2023 Advanced Micro Devices, Inc.
# ######################################################################################################################
include(CMakeParseArguments)
cmake_policy(SET CMP0011 NEW)
set(SCRIPT_CMAKE_ARGS)
# cmake-lint: disable=E1120
foreach(IDX RANGE ${CMAKE_ARGC})
list(APPEND SCRIPT_CMAKE_ARGS ${CMAKE_ARGV${IDX}})
endforeach()
cmake_parse_arguments(SCRIPT_ARGS "" "" "-P" ${SCRIPT_CMAKE_ARGS})
set(ARGS ${SCRIPT_ARGS_-P})
list(LENGTH ARGS ARGC)
string(RANDOM _TEST_RAND)
list(GET ARGS 1 TEST)
set(TEST_DIR ${CMAKE_CURRENT_LIST_DIR})
list(GET ARGS 2 TMP_DIR_ROOT)
set(TMP_DIR ${TMP_DIR_ROOT}-${_TEST_RAND})
file(MAKE_DIRECTORY ${TMP_DIR})
set(PREFIX ${TMP_DIR}/usr)
set(BUILDS_DIR ${TMP_DIR}/builds)
macro(rocm_cmake_read_test_argument CMAKE_VAR VAR_TYPE)
if(DEFINED ROCM_${CMAKE_VAR} AND NOT ${ROCM_${CMAKE_VAR}} STREQUAL "")
if(${CMAKE_VAR} STREQUAL "CMAKE_GENERATOR")
list(APPEND ADDITIONAL_CONFIGURE_ARGS -G "${ROCM_${CMAKE_VAR}}")
else()
list(APPEND ADDITIONAL_CONFIGURE_ARGS -D "${CMAKE_VAR}=${ROCM_${CMAKE_VAR}}")
endif()
endif()
endmacro()
rocm_cmake_read_test_argument(CMAKE_MAKE_PROGRAM FILEPATH)
rocm_cmake_read_test_argument(CMAKE_GENERATOR STRING)
rocm_cmake_read_test_argument(CMAKE_GENERATOR_INSTANCE STRING)
rocm_cmake_read_test_argument(CMAKE_GENERATOR_PLATFORM STRING)
rocm_cmake_read_test_argument(CMAKE_GENERATOR_TOOLSET STRING)
rocm_cmake_read_test_argument(CMAKE_PREFIX_PATH PATH)
rocm_cmake_read_test_argument(CMAKE_PROGRAM_PATH PATH)
# cmake-lint: disable=C0103
macro(test_expect_eq X Y)
if(NOT "${X}" STREQUAL "${Y}")
message(FATAL_ERROR "EXPECT FAILURE: ${X} != ${Y} ${ARGN}")
endif()
endmacro()
macro(test_expect_undef X)
if(DEFINED "${X}")
message(FATAL_ERROR "EXPECT FAILURE: ${X} IS DEFINED ${ARGN}")
endif()
endmacro()
macro(test_expect_matches X Y)
if("${X}" STREQUAL "" OR NOT "${X}" MATCHES "${Y}")
message(FATAL_ERROR "EXPECT FAILURE: ${X} NOT MATCHES ${Y} ${ARGN}")
endif()
endmacro()
macro(test_expect_not_matches X Y)
if("${X}" MATCHES "${Y}")
message(FATAL_ERROR "EXPECT FAILURE: ${X} MATCHES ${Y} ${ARGN}")
endif()
endmacro()
macro(test_expect_file FILE)
if(NOT EXISTS ${FILE})
message(FATAL_ERROR "EXPECT FILE: ${FILE}")
endif()
endmacro()
macro(test_expect_installed_file FILE)
if(NOT EXISTS "${PREFIX}/${FILE}")
message(FATAL_ERROR "EXPECT INSTALLED FILE: ${FILE}")
endif()
endmacro()
macro(test_expect_no_file FILE)
if(EXISTS ${FILE})
message(FATAL_ERROR "EXPECT NO FILE: ${FILE}")
endif()
endmacro()
macro(test_exec)
string(REPLACE ";" " " EXEC_COMMAND "${ARGN}")
string(REPLACE "|" "\;" EXEC_COMMAND "${EXEC_COMMAND}")
string(REPLACE "|" "\;" REAL_EXEC_COMMAND "${ARGN}")
execute_process(${REAL_EXEC_COMMAND} RESULT_VARIABLE test_exec_RESULT)
if(NOT test_exec_RESULT EQUAL 0)
message(FATAL_ERROR "Process failed: ${EXEC_COMMAND}")
endif()
endmacro()
macro(use_rocm_cmake)
list(APPEND CMAKE_MODULE_PATH ${PREFIX}/share/rocmcmakebuildtools/cmake)
endmacro()
function(configure_dir DIR)
set(options)
set(oneValueArgs BUILD_DIR_VAR)
set(multiValueArgs CMAKE_ARGS TARGETS)
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
string(RANDOM BUILD_RAND)
set(BUILD_DIR ${BUILDS_DIR}/${BUILD_RAND})
if(NOT EXISTS ${BUILD_DIR})
file(MAKE_DIRECTORY ${BUILD_DIR})
endif()
test_exec(COMMAND ${CMAKE_COMMAND} -Werror=dev ${ADDITIONAL_CONFIGURE_ARGS} -DCMAKE_PREFIX_PATH=${PREFIX}
-DCMAKE_INSTALL_PREFIX=${PREFIX} -DROCM_ERROR_TOOLCHAIN_VAR=On ${PARSE_CMAKE_ARGS} ${DIR}
WORKING_DIRECTORY ${BUILD_DIR})
foreach(TARGET ${PARSE_TARGETS})
if("${TARGET}" STREQUAL all)
test_exec(COMMAND ${CMAKE_COMMAND} --build ${BUILD_DIR})
else()
test_exec(COMMAND ${CMAKE_COMMAND} --build ${BUILD_DIR} --target ${TARGET})
endif()
endforeach()
if(PARSE_BUILD_DIR_VAR)
set(${PARSE_BUILD_DIR_VAR} ${BUILD_DIR} PARENT_SCOPE)
else()
file(REMOVE_RECURSE ${BUILD_DIR})
endif()
endfunction()
function(install_dir DIR)
set(options)
set(oneValueArgs)
set(multiValueArgs CMAKE_ARGS TARGETS)
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
configure_dir(
${DIR}
TARGETS all ${PARSE_TARGETS} install
CMAKE_ARGS ${PARSE_CMAKE_ARGS} -DROCM_SYMLINK_LIBS=OFF)
endfunction()
function(write_version_cmake DIR VERSION CONTENT)
configure_file(${TEST_DIR}/version/CMakeLists.txt ${DIR}/CMakeLists.txt @ONLY)
file(COPY ${TEST_DIR}/version/LICENSE DESTINATION ${DIR})
endfunction()
function(test_check_package)
set(options)
set(oneValueArgs NAME HEADER TARGET CHECK_TARGET)
set(multiValueArgs)
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(HEADER_FLAG)
if(PARSE_HEADER)
set(HEADER_FLAG -DPKG_HEADER=${PARSE_HEADER})
endif()
set(TARGET ${PARSE_NAME})
if(PARSE_TARGET)
set(TARGET ${PARSE_TARGET})
endif()
set(CHECK_TARGET ${TARGET})
if(PARSE_CHECK_TARGET)
set(CHECK_TARGET ${PARSE_CHECK_TARGET})
endif()
install_dir(${TEST_DIR}/findpackagecheck CMAKE_ARGS -DPKG=${PARSE_NAME} -DPKG_TARGET=${TARGET}
-DCHECK_TARGET=${CHECK_TARGET} ${HEADER_FLAG})
endfunction()
install_dir(${TEST_DIR}/../)
include(${TEST})
file(REMOVE_RECURSE ${TMP_DIR})