[PATCH] D79400: [CMAKE] Fix build failure when source directory is read only
Pushpinder Singh via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu May 28 22:59:59 PDT 2020
pdhaliwal updated this revision to Diff 267123.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D79400/new/
https://reviews.llvm.org/D79400
Files:
llvm/cmake/modules/AddLLVM.cmake
llvm/include/llvm/Support/CMakeLists.txt
Index: llvm/include/llvm/Support/CMakeLists.txt
===================================================================
--- llvm/include/llvm/Support/CMakeLists.txt
+++ llvm/include/llvm/Support/CMakeLists.txt
@@ -5,12 +5,19 @@
set(generate_vcs_version_script "${LLVM_CMAKE_PATH}/GenerateVersionFromVCS.cmake")
-if(llvm_vc AND LLVM_APPEND_VC_REV)
+if(LLVM_APPEND_VC_REV)
set(llvm_source_dir ${LLVM_MAIN_SRC_DIR})
+
+ # A fake version file and is not expected to exist. It is being used to
+ # force regeneration of VCSRevision.h for source directory with no write
+ # permission available.
+ if (NOT llvm_vc)
+ set(fake_version_inc "${CMAKE_CURRENT_BINARY_DIR}/__FakeVCSRevision.h")
+ endif()
endif()
# Create custom target to generate the VC revision include.
-add_custom_command(OUTPUT "${version_inc}"
+add_custom_command(OUTPUT "${version_inc}" "${fake_version_inc}"
DEPENDS "${llvm_vc}" "${generate_vcs_version_script}"
COMMAND ${CMAKE_COMMAND} "-DNAMES=LLVM"
"-DLLVM_SOURCE_DIR=${llvm_source_dir}"
@@ -22,5 +29,5 @@
PROPERTIES GENERATED TRUE
HEADER_FILE_ONLY TRUE)
-add_custom_target(llvm_vcsrevision_h DEPENDS "${version_inc}")
+add_custom_target(llvm_vcsrevision_h ALL DEPENDS "${version_inc}" "${fake_version_inc}")
set_target_properties(llvm_vcsrevision_h PROPERTIES FOLDER "Misc")
Index: llvm/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm/cmake/modules/AddLLVM.cmake
+++ llvm/cmake/modules/AddLLVM.cmake
@@ -2118,7 +2118,13 @@
get_filename_component(git_dir ${git_output} ABSOLUTE BASE_DIR ${path})
# Some branchless cases (e.g. 'repo') may not yet have .git/logs/HEAD
if (NOT EXISTS "${git_dir}/logs/HEAD")
- file(WRITE "${git_dir}/logs/HEAD" "")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E touch HEAD
+ WORKING_DIRECTORY "${git_dir}/logs"
+ RESULT_VARIABLE touch_head_result
+ ERROR_QUIET)
+ if (NOT touch_head_result EQUAL 0)
+ return()
+ endif()
endif()
set(${out_var} "${git_dir}/logs/HEAD" PARENT_SCOPE)
endif()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79400.267123.patch
Type: text/x-patch
Size: 2192 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200529/c3d112e8/attachment-0001.bin>
More information about the cfe-commits
mailing list