File: CMakeLists.txt

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,998,520 kB
  • sloc: cpp: 6,951,680; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,009; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,167; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (65 lines) | stat: -rw-r--r-- 2,440 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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${CMAKE_EXECUTABLE_SUFFIX}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-dis${CMAKE_EXECUTABLE_SUFFIX}"
    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${CMAKE_EXECUTABLE_SUFFIX}" "${LLVM_RUNTIME_OUTPUT_INTDIR}/spirv-val${CMAKE_EXECUTABLE_SUFFIX}"
    DEPENDS SPIRVTools
    )
endif ()