From 58f0c62ea6745f777f2edd91147300b749ca3972 Mon Sep 17 00:00:00 2001 From: "Yang, Haonan" Date: Fri, 5 Jul 2024 14:03:54 +0800 Subject: [PATCH 1/4] Do not apply patches if sub non-git repo is located in a git repo. --- CMakeLists.txt | 6 ++---- cmake/modules/CMakeFunctions.cmake | 17 +++++++++-------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e972e6f..db2da893 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -155,13 +155,11 @@ if(NOT USE_PREBUILT_LLVM) apply_patches(${LLVM_MONOREPO_DIR} "${LLVM_PATCHES_DIRS}" ${LLVM_BASE_REVISION} - ${TARGET_BRANCH} - ret) + ${TARGET_BRANCH}) apply_patches(${SPIRV_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/patches/spirv ${SPIRV_BASE_REVISION} - ${TARGET_BRANCH} - ret) + ${TARGET_BRANCH}) endif(NOT USE_PREBUILT_LLVM) # diff --git a/cmake/modules/CMakeFunctions.cmake b/cmake/modules/CMakeFunctions.cmake index e4067bd8..ed7b5e9e 100644 --- a/cmake/modules/CMakeFunctions.cmake +++ b/cmake/modules/CMakeFunctions.cmake @@ -87,7 +87,7 @@ endfunction() # Then all patches from the `patches_dir` are committed to the `target_branch`. # Does nothing if the `target_branch` is already checked out in the `repo_dir`. # -function(apply_patches repo_dir patches_dir base_revision target_branch ret) +function(apply_patches repo_dir patches_dir base_revision target_branch) foreach(patches_dir ${patches_dir}) file(GLOB patches_in_dir ${patches_dir}/*.patch) list(APPEND patches ${patches_in_dir}) @@ -97,7 +97,13 @@ function(apply_patches repo_dir patches_dir base_revision target_branch ret) return() endif() - message(STATUS "[OPENCL-CLANG] Patching repository ${repo_dir}") + # Check if it's a git repo + if(EXISTS "${repo_dir}/.git") + message(STATUS "[OPENCL-CLANG] Patching repository ${repo_dir}") + else() + message(STATUS "[OPENCL-CLANG][Warning] ${repo_dir} is not a git repository, therefore, local patches are not applied") + return() + endif() # Check if the target branch already exists execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --verify --no-revs -q ${target_branch} @@ -105,11 +111,6 @@ function(apply_patches repo_dir patches_dir base_revision target_branch ret) RESULT_VARIABLE patches_needed OUTPUT_QUIET ) - if(patches_needed EQUAL 128) # not a git repo - set(${ret} True PARENT_SCOPE) - message(STATUS "[OPENCL-CLANG][Warning] ${repo_dir} is not a git repository, therefore, local patches are not applied") - return() - endif() if(patches_needed EQUAL 1) # The target branch doesn't exist list(SORT patches) is_valid_revision(${repo_dir} ${base_revision} exists_base_rev) @@ -159,7 +160,7 @@ function(apply_patches repo_dir patches_dir base_revision target_branch ret) ) endif() if (NOT (ret_check_out OR ret_apply_patch)) - set(${ret} True PARENT_SCOPE) + message(STATUS "[OPENCL-CLANG] Applied patch successfully!") else() message(FATAL_ERROR "[OPENCL-CLANG] Failed to apply patch!") endif() From 75b69419e42c179eb9b3e1b7a3eac5f405d7f2f4 Mon Sep 17 00:00:00 2001 From: "Yang, Haonan" Date: Mon, 8 Jul 2024 14:08:38 +0800 Subject: [PATCH 2/4] Add option to control patch apply. --- CMakeLists.txt | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index db2da893..abd797aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -152,14 +152,20 @@ if(NOT USE_PREBUILT_LLVM) get_filename_component(LLVM_MONOREPO_DIR ${LLVM_SOURCE_DIR} DIRECTORY) set(LLVM_PATCHES_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/patches/llvm ${CMAKE_CURRENT_SOURCE_DIR}/patches/clang) - apply_patches(${LLVM_MONOREPO_DIR} - "${LLVM_PATCHES_DIRS}" - ${LLVM_BASE_REVISION} - ${TARGET_BRANCH}) - apply_patches(${SPIRV_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/patches/spirv - ${SPIRV_BASE_REVISION} - ${TARGET_BRANCH}) + option(APPLY_PATCHES "option to apply patches" ON) + if(APPLY_PATCHES) + message(STATUS "APPLY_PATCHES is enabled.") + apply_patches(${LLVM_MONOREPO_DIR} + "${LLVM_PATCHES_DIRS}" + ${LLVM_BASE_REVISION} + ${TARGET_BRANCH}) + apply_patches(${SPIRV_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/patches/spirv + ${SPIRV_BASE_REVISION} + ${TARGET_BRANCH}) + else() + message(STATUS "APPLY_PATCHES is disabled, skip patch apply process.") + endif() endif(NOT USE_PREBUILT_LLVM) # From 01d01e93648b16cb2beaa6dd78d750197fb6ebe6 Mon Sep 17 00:00:00 2001 From: "Yang, Haonan" Date: Tue, 9 Jul 2024 09:31:30 +0800 Subject: [PATCH 3/4] Apply suggestions. --- CMakeLists.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index abd797aa..7f019f49 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,10 @@ if(LLVM_USE_HOST_TOOLS AND OPENCL_CLANG_BUILD_EXTERNAL) llvm_create_cross_target(${PROJECT_NAME} NATIVE "" Release) endif() +option(LLVMSPIRV_INCLUDED_IN_LLVM + "Set to ON if libLLVMSPIRVLib is linked into libLLVM" ON) +option(APPLY_PATCHES "option to apply patches" ON) + if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) set(USE_PREBUILT_LLVM ON) @@ -61,8 +65,6 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) - option(LLVMSPIRV_INCLUDED_IN_LLVM - "Set to ON if libLLVMSPIRVLib is linked into libLLVM" ON) if(LLVMSPIRV_INCLUDED_IN_LLVM) message(STATUS "[OPENCL-CLANG] Assuming that libLLVMSPIRVLib is linked into libLLVM") else(LLVMSPIRV_INCLUDED_IN_LLVM) @@ -152,7 +154,6 @@ if(NOT USE_PREBUILT_LLVM) get_filename_component(LLVM_MONOREPO_DIR ${LLVM_SOURCE_DIR} DIRECTORY) set(LLVM_PATCHES_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/patches/llvm ${CMAKE_CURRENT_SOURCE_DIR}/patches/clang) - option(APPLY_PATCHES "option to apply patches" ON) if(APPLY_PATCHES) message(STATUS "APPLY_PATCHES is enabled.") apply_patches(${LLVM_MONOREPO_DIR} From 43b098983d10f0b1c68b9ffa50970fe8b18d89ed Mon Sep 17 00:00:00 2001 From: "Yang, Haonan" Date: Tue, 9 Jul 2024 09:37:33 +0800 Subject: [PATCH 4/4] Apply suggestions. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f019f49..638b0dcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,7 +42,7 @@ endif() option(LLVMSPIRV_INCLUDED_IN_LLVM "Set to ON if libLLVMSPIRVLib is linked into libLLVM" ON) -option(APPLY_PATCHES "option to apply patches" ON) +option(APPLY_PATCHES "Apply local patches" ON) if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) set(USE_PREBUILT_LLVM ON)