@@ -20,21 +20,35 @@ if (NOT SPIRVToLLVMTranslator_FOUND)
20
20
21
21
FetchContent_GetProperties (spirv-llvm-translator )
22
22
if (NOT spirv-llvm-translator_POPULATED )
23
+ set (LLVM_CONFIG ${LLVM_LIBRARY_DIR} /../bin/llvm-config )
24
+ set (LLVM_DIR "${LLVM_LIBRARY_DIR} /cmake/llvm" CACHE PATH "Path to LLVM build dir " FORCE )
25
+ set (LLVM_SPIRV_BUILD_EXTERNAL YES CACHE BOOL "Build SPIRV-LLVM Translator as external" FORCE )
26
+
23
27
FetchContent_MakeAvailable (spirv-llvm-translator )
24
28
25
29
# FIXME: Don't apply patch when Agama driver is updated.
26
30
execute_process (
27
- COMMAND git apply ${CMAKE_CURRENT_LIST_DIR} /3122.patch
31
+ COMMAND git apply --check ${CMAKE_CURRENT_LIST_DIR} /3122.patch
28
32
WORKING_DIRECTORY ${spirv-llvm-translator_SOURCE_DIR}
33
+ ERROR_QUIET
29
34
RESULT_VARIABLE PATCH_RESULT
30
35
)
36
+ if (PATCH_RESULT EQUAL 0 )
37
+ execute_process (
38
+ COMMAND git apply ${CMAKE_CURRENT_LIST_DIR} /3122.patch
39
+ WORKING_DIRECTORY ${spirv-llvm-translator_SOURCE_DIR}
40
+ RESULT_VARIABLE PATCH_RESULT
41
+ )
42
+ else ()
43
+ execute_process ( # Check if the patch is already applied
44
+ COMMAND git apply --reverse --check ${CMAKE_CURRENT_LIST_DIR} /3122.patch
45
+ WORKING_DIRECTORY ${spirv-llvm-translator_SOURCE_DIR}
46
+ RESULT_VARIABLE PATCH_RESULT
47
+ )
48
+ endif ()
31
49
if (NOT PATCH_RESULT EQUAL 0 )
32
50
message (FATAL_ERROR "Failed to apply 3122.patch to SPIRV-LLVM-Translator" )
33
51
endif ()
34
-
35
- set (LLVM_CONFIG ${LLVM_LIBRARY_DIR} /../bin/llvm-config )
36
- set (LLVM_DIR "${LLVM_LIBRARY_DIR} /cmake/llvm" CACHE PATH "Path to LLVM build dir " FORCE )
37
- set (LLVM_SPIRV_BUILD_EXTERNAL YES CACHE BOOL "Build SPIRV-LLVM Translator as external" FORCE )
38
52
endif ()
39
53
40
54
set (SPIRVToLLVMTranslator_INCLUDE_DIR "${SPIRVToLLVMTranslator_SOURCE_DIR} /include"
0 commit comments