brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 5db7aec Raw
82 lines · plain
1option(LLVM_INCLUDE_SPIRV_TOOLS_TESTS "Include tests that use SPIRV-Tools" Off)2mark_as_advanced(LLVM_INCLUDE_SPIRV_TOOLS_TESTS)3 4if (NOT LLVM_INCLUDE_SPIRV_TOOLS_TESTS)5  return()6endif ()7 8# SPIRV_DIS, SPIRV_VAL, SPIRV_AS and SPIRV_LINK variables can be used to provide paths to existing9# spirv-dis, spirv-val, spirv-as, and spirv-link binaries, respectively. Otherwise, build them from10# SPIRV-Tools source.11if (NOT SPIRV_DIS OR NOT SPIRV_VAL OR NOT SPIRV_AS OR NOT SPIRV_LINK)12  include(ExternalProject)13 14  set(BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/SPIRVTools-bin)15 16  ExternalProject_Add(SPIRVTools17    GIT_REPOSITORY https://github.com/KhronosGroup/SPIRV-Tools.git18    GIT_TAG main19    BINARY_DIR ${BINARY_DIR}20    BUILD_COMMAND ${CMAKE_COMMAND} --build ${BINARY_DIR} --target spirv-dis spirv-val spirv-as spirv-link21    BUILD_BYPRODUCTS ${BINARY_DIR}/tools/spirv-dis ${BINARY_DIR}/tools/spirv-val ${BINARY_DIR}/tools/spirv-as ${BINARY_DIR}/tools/spirv-link22    DOWNLOAD_COMMAND git clone https://github.com/KhronosGroup/SPIRV-Tools.git SPIRVTools &&23      cd SPIRVTools &&24      ${Python3_EXECUTABLE} utils/git-sync-deps25    UPDATE_COMMAND git pull origin main &&26      ${Python3_EXECUTABLE} utils/git-sync-deps27    # Don't auto-update on every build.28    UPDATE_DISCONNECTED 129    # Allow manual updating with an explicit SPIRVTools-update target.30    STEP_TARGETS update31    # Install handled below.32    INSTALL_COMMAND ""33    )34endif ()35 36if (CMAKE_HOST_UNIX)37  set(LLVM_LINK_OR_COPY create_symlink)38else ()39  set(LLVM_LINK_OR_COPY copy)40endif ()41 42# Link the provided or just built binaries.43if (SPIRV_DIS)44  add_custom_target(spirv-dis45    COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${SPIRV_DIS}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-dis")46else ()47  add_custom_target(spirv-dis48    COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${BINARY_DIR}/tools/spirv-dis${CMAKE_EXECUTABLE_SUFFIX}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-dis${CMAKE_EXECUTABLE_SUFFIX}"49    DEPENDS SPIRVTools50    )51endif ()52 53if (SPIRV_VAL)54  add_custom_target(spirv-val55    COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${SPIRV_VAL}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-val")56else ()57  add_custom_target(spirv-val58    COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${BINARY_DIR}/tools/spirv-val${CMAKE_EXECUTABLE_SUFFIX}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-val${CMAKE_EXECUTABLE_SUFFIX}"59    DEPENDS SPIRVTools60    )61endif ()62 63if (SPIRV_AS)64  add_custom_target(spirv-as65    COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${SPIRV_AS}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-as")66else ()67  add_custom_target(spirv-as68    COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${BINARY_DIR}/tools/spirv-as${CMAKE_EXECUTABLE_SUFFIX}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-as${CMAKE_EXECUTABLE_SUFFIX}"69    DEPENDS SPIRVTools70    )71endif ()72 73if (SPIRV_LINK)74  add_custom_target(spirv-link75    COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${SPIRV_LINK}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-link")76else ()77  add_custom_target(spirv-link78    COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${BINARY_DIR}/tools/spirv-link${CMAKE_EXECUTABLE_SUFFIX}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-link${CMAKE_EXECUTABLE_SUFFIX}"79    DEPENDS SPIRVTools80    )81endif ()82