Skip to content

Commit ce5497d

Browse files
committed
[Backport] Do not apply patches if sub non-git repo is located in a git repo.
1 parent b9cccc4 commit ce5497d

File tree

2 files changed

+33
-20
lines changed

2 files changed

+33
-20
lines changed

CMakeLists.txt

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ if(CMAKE_CROSSCOMPILING AND OPENCL_CLANG_BUILD_EXTERNAL)
3838
llvm_create_cross_target(${PROJECT_NAME} NATIVE "" Release)
3939
endif()
4040

41+
option(LLVMSPIRV_INCLUDED_IN_LLVM
42+
"Set to ON if libLLVMSPIRVLib is linked into libLLVM" ON)
43+
option(APPLY_PATCHES "Apply local patches" ON)
44+
4145
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
4246
set(USE_PREBUILT_LLVM ON)
4347

@@ -59,8 +63,6 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
5963
set(CMAKE_CXX_STANDARD 17)
6064
set(CMAKE_CXX_STANDARD_REQUIRED ON)
6165

62-
option(LLVMSPIRV_INCLUDED_IN_LLVM
63-
"Set to ON if libLLVMSPIRVLib is linked into libLLVM" ON)
6466
if(LLVMSPIRV_INCLUDED_IN_LLVM)
6567
message(STATUS "[OPENCL-CLANG] Assuming that libLLVMSPIRVLib is linked into libLLVM")
6668
else(LLVMSPIRV_INCLUDED_IN_LLVM)
@@ -157,18 +159,25 @@ if(NOT USE_PREBUILT_LLVM)
157159
)
158160
endif()
159161

160-
set(CLANG_BASE_REVISION release/18.x)
162+
set(LLVM_BASE_REVISION release/18.x)
161163
set(SPIRV_BASE_REVISION llvm_release_180)
162164
set(TARGET_BRANCH "ocl-open-180")
163-
164-
apply_patches(${CLANG_SOURCE_DIR}
165-
${CMAKE_CURRENT_SOURCE_DIR}/patches/clang
166-
${CLANG_BASE_REVISION}
167-
${TARGET_BRANCH})
168-
apply_patches(${SPIRV_SOURCE_DIR}
169-
${CMAKE_CURRENT_SOURCE_DIR}/patches/spirv
170-
${SPIRV_BASE_REVISION}
171-
${TARGET_BRANCH})
165+
get_filename_component(LLVM_MONOREPO_DIR ${LLVM_SOURCE_DIR} DIRECTORY)
166+
set(LLVM_PATCHES_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/patches/llvm
167+
${CMAKE_CURRENT_SOURCE_DIR}/patches/clang)
168+
if(APPLY_PATCHES)
169+
message(STATUS "APPLY_PATCHES is enabled.")
170+
apply_patches(${LLVM_MONOREPO_DIR}
171+
"${LLVM_PATCHES_DIRS}"
172+
${LLVM_BASE_REVISION}
173+
${TARGET_BRANCH})
174+
apply_patches(${SPIRV_SOURCE_DIR}
175+
${CMAKE_CURRENT_SOURCE_DIR}/patches/spirv
176+
${SPIRV_BASE_REVISION}
177+
${TARGET_BRANCH})
178+
else()
179+
message(STATUS "APPLY_PATCHES is disabled, skip patch apply process.")
180+
endif()
172181
endif(NOT USE_PREBUILT_LLVM)
173182

174183
#

cmake/modules/CMakeFunctions.cmake

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -93,19 +93,21 @@ function(apply_patches repo_dir patches_dir base_revision target_branch)
9393
return()
9494
endif()
9595

96-
message(STATUS "[OPENCL-CLANG] Patching repository ${repo_dir}")
96+
# Check if it's a git repo
97+
if(EXISTS "${repo_dir}/.git")
98+
message(STATUS "[OPENCL-CLANG] Patching repository ${repo_dir}")
99+
else()
100+
message(STATUS "[OPENCL-CLANG][Warning] ${repo_dir} is not a git repository, therefore, local patches are not applied")
101+
return()
102+
endif()
97103
# Check if the target branch already exists
98104
execute_process(
99105
COMMAND ${GIT_EXECUTABLE} rev-parse --verify --no-revs -q ${target_branch}
100106
WORKING_DIRECTORY ${repo_dir}
101107
RESULT_VARIABLE patches_needed
102108
OUTPUT_QUIET
103109
)
104-
if(patches_needed EQUAL 128) # not a git repo
105-
message(STATUS "[OPENCL-CLANG] ${repo_dir} is not a git repository, therefore, local patches are not applied")
106-
return()
107-
endif()
108-
if(patches_needed EQUAL 1) # The target branch doesn't exist
110+
if(patches_needed EQUAL 1) # The target branch doesn't exist
109111
list(SORT patches)
110112
is_valid_revision(${repo_dir} ${base_revision} exists_base_rev)
111113

@@ -148,8 +150,10 @@ function(apply_patches repo_dir patches_dir base_revision target_branch)
148150
OUTPUT_QUIET
149151
)
150152
endif()
151-
if (ret_check_out OR ret_apply_patch)
152-
message(FATAL_ERROR "[OPENCL-CLANG] Failed to apply patch!")
153+
if (NOT (ret_check_out OR ret_apply_patch))
154+
message(STATUS "[OPENCL-CLANG] Applied patch successfully!")
155+
else()
156+
message(FATAL_ERROR "[OPENCL-CLANG] Failed to apply patch!")
153157
endif()
154158
endfunction()
155159

0 commit comments

Comments
 (0)