66 lines
2.3 KiB
Text
66 lines
2.3 KiB
Text
|
option(LLVM_INCLUDE_SPIRV_TOOLS_TESTS "Include tests that use SPIRV-Tools" Off)
|
||
|
mark_as_advanced(LLVM_INCLUDE_SPIRV_TOOLS_TESTS)
|
||
|
|
||
|
if (NOT LLVM_INCLUDE_SPIRV_TOOLS_TESTS)
|
||
|
return()
|
||
|
endif ()
|
||
|
|
||
|
if (NOT "SPIRV" IN_LIST LLVM_TARGETS_TO_BUILD)
|
||
|
message(FATAL_ERROR "Building SPIRV-Tools tests is unsupported without the SPIR-V target")
|
||
|
endif ()
|
||
|
|
||
|
# SPIRV_DIS and SPIRV_VAL variables can be used to provide paths to existing
|
||
|
# spirv-dis and spirv-val binaries, respectively. Otherwise, build them from
|
||
|
# SPIRV-Tools source.
|
||
|
if (NOT SPIRV_DIS OR NOT SPIRV_VAL)
|
||
|
include(ExternalProject)
|
||
|
|
||
|
set(BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/SPIRVTools-bin)
|
||
|
|
||
|
ExternalProject_Add(SPIRVTools
|
||
|
GIT_REPOSITORY https://github.com/KhronosGroup/SPIRV-Tools.git
|
||
|
GIT_TAG main
|
||
|
BINARY_DIR ${BINARY_DIR}
|
||
|
BUILD_COMMAND ${CMAKE_COMMAND} --build ${BINARY_DIR} --target spirv-dis spirv-val
|
||
|
BUILD_BYPRODUCTS ${BINARY_DIR}/tools/spirv-dis ${BINARY_DIR}/tools/spirv-val
|
||
|
DOWNLOAD_COMMAND git clone https://github.com/KhronosGroup/SPIRV-Tools.git SPIRVTools &&
|
||
|
cd SPIRVTools &&
|
||
|
${Python3_EXECUTABLE} utils/git-sync-deps
|
||
|
UPDATE_COMMAND git pull origin main &&
|
||
|
${Python3_EXECUTABLE} utils/git-sync-deps
|
||
|
# Don't auto-update on every build.
|
||
|
UPDATE_DISCONNECTED 1
|
||
|
# Allow manual updating with an explicit SPIRVTools-update target.
|
||
|
STEP_TARGETS update
|
||
|
# Install handled below.
|
||
|
INSTALL_COMMAND ""
|
||
|
)
|
||
|
endif ()
|
||
|
|
||
|
if (CMAKE_HOST_UNIX)
|
||
|
set(LLVM_LINK_OR_COPY create_symlink)
|
||
|
else ()
|
||
|
set(LLVM_LINK_OR_COPY copy)
|
||
|
endif ()
|
||
|
|
||
|
# Link the provided or just built spirv-dis and spirv-val binaries.
|
||
|
if (SPIRV_DIS)
|
||
|
add_custom_target(spirv-dis
|
||
|
COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${SPIRV_DIS}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-dis")
|
||
|
else ()
|
||
|
add_custom_target(spirv-dis
|
||
|
COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${BINARY_DIR}/tools/spirv-dis" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-dis"
|
||
|
DEPENDS SPIRVTools
|
||
|
)
|
||
|
endif ()
|
||
|
|
||
|
if (SPIRV_VAL)
|
||
|
add_custom_target(spirv-val
|
||
|
COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${SPIRV_VAL}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-val")
|
||
|
else ()
|
||
|
add_custom_target(spirv-val
|
||
|
COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${BINARY_DIR}/tools/spirv-val" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-val"
|
||
|
DEPENDS SPIRVTools
|
||
|
)
|
||
|
endif ()
|