[cmake] Add LLVM_FORCE_VC_REVISION option (#67125)

This patch adds a LLVM_FORCE_VC_REVISION option to force a custom
VC revision to be included instead of trying to fetch one from a
git command. This is helpful in environments where git is not
available or is non-functional but the vc revision is available
through some other means.
This commit is contained in:
David Truby 2023-09-25 14:32:52 +01:00 committed by GitHub
parent 5bfd5c60bf
commit 247b7d0684
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 36 additions and 2 deletions

View File

@ -39,6 +39,8 @@ add_custom_command(OUTPUT "${version_inc}"
"-DHEADER_FILE=${version_inc}"
"-DLLVM_VC_REPOSITORY=${llvm_vc_repository}"
"-DLLVM_VC_REVISION=${llvm_vc_revision}"
"-DLLVM_FORCE_VC_REVISION=${LLVM_FORCE_VC_REVISION}"
"-DLLVM_FORCE_VC_REPOSITORY=${LLVM_FORCE_VC_REPOSITORY}"
-P "${generate_vcs_version_script}")
# Mark the generated header as being generated.

View File

@ -12,7 +12,7 @@ endif()
if(flang_vc AND LLVM_APPEND_VC_REV)
set(flang_source_dir ${FLANG_SOURCE_DIR})
endif()
# Create custom target to generate the VC revision include.
add_custom_command(OUTPUT "${version_inc}"
DEPENDS "${llvm_vc}" "${flang_vc}" "${generate_vcs_version_script}"
@ -20,6 +20,8 @@ add_custom_command(OUTPUT "${version_inc}"
"-DLLVM_SOURCE_DIR=${llvm_source_dir}"
"-DFLANG_SOURCE_DIR=${flang_source_dir}"
"-DHEADER_FILE=${version_inc}"
"-DLLVM_FORCE_VC_REVISION=${LLVM_FORCE_VC_REVISION}"
"-DLLVM_FORCE_VC_REPOSITORY=${LLVM_FORCE_VC_REPOSITORY}"
-P "${generate_vcs_version_script}")
# Mark the generated header as being generated.

View File

@ -13,6 +13,8 @@ add_custom_command(OUTPUT "${version_inc}"
COMMAND ${CMAKE_COMMAND} "-DNAMES=LLD"
"-DLLD_SOURCE_DIR=${lld_source_dir}"
"-DHEADER_FILE=${version_inc}"
"-DLLVM_FORCE_VC_REVISION=${LLVM_FORCE_VC_REVISION}"
"-DLLVM_FORCE_VC_REPOSITORY=${LLVM_FORCE_VC_REPOSITORY}"
-P "${generate_vcs_version_script}")
# Mark the generated header as being generated.

View File

@ -17,6 +17,8 @@ add_custom_command(OUTPUT "${vcs_version_inc}"
COMMAND ${CMAKE_COMMAND} "-DNAMES=LLDB"
"-DLLDB_SOURCE_DIR=${lldb_source_dir}"
"-DHEADER_FILE=${vcs_version_inc}"
"-DLLVM_FORCE_VC_REVISION=${LLVM_FORCE_VC_REVISION}"
"-DLLVM_FORCE_VC_REPOSITORY=${LLVM_FORCE_VC_REPOSITORY}"
-P "${generate_vcs_version_script}")
set_source_files_properties("${vcs_version_inc}"

View File

@ -325,6 +325,12 @@ include(VersionFromVCS)
option(LLVM_APPEND_VC_REV
"Embed the version control system revision in LLVM" ON)
set(LLVM_FORCE_VC_REVISION
"" CACHE STRING "Force custom VC revision for LLVM_APPEND_VC_REV")
set(LLVM_FORCE_VC_REPOSITORY
"" CACHE STRING "Force custom VC repository for LLVM_APPEND_VC_REV")
option(LLVM_TOOL_LLVM_DRIVER_BUILD "Enables building the llvm multicall tool" OFF)
set(PACKAGE_NAME LLVM)

View File

@ -36,7 +36,14 @@ function(append_info name revision repository)
endfunction()
foreach(name IN LISTS NAMES)
if(${name}_VC_REPOSITORY AND ${name}_VC_REVISION)
if(LLVM_FORCE_VC_REVISION AND LLVM_FORCE_VC_REPOSITORY)
set(revision ${LLVM_FORCE_VC_REVISION})
set(repository ${LLVM_FORCE_VC_REPOSITORY})
elseif(LLVM_FORCE_VC_REVISION)
set(revision ${LLVM_FORCE_VC_REVISION})
elseif(LLVM_FORCE_VC_REPOSITORY)
set(repository ${LLVM_FORCE_VC_REPOSITORY})
elseif(${name}_VC_REPOSITORY AND ${name}_VC_REVISION)
set(revision ${${name}_VC_REVISION})
set(repository ${${name}_VC_REPOSITORY})
elseif(DEFINED ${name}_SOURCE_DIR)

View File

@ -334,6 +334,15 @@ enabled sub-projects. Nearly all of these variable names begin with
need revision info can disable this option to avoid re-linking most binaries
after a branch switch. Defaults to ON.
**LLVM_FORCE_VC_REVISION**:STRING
Force a specific Git revision id rather than calling to git to determine it.
This is useful in environments where git is not available or non-functional
but the VC revision is available through other means.
**LLVM_FORCE_VC_REPOSITORY**:STRING
Set the git repository to include in version info rather than calling git to
determine it.
**LLVM_BUILD_32_BITS**:BOOL
Build 32-bit executables and libraries on 64-bit systems. This option is
available only on some 64-bit Unix systems. Defaults to OFF.

View File

@ -28,6 +28,8 @@ if (fake_version_inc)
COMMAND ${CMAKE_COMMAND} "-DNAMES=LLVM"
"-DLLVM_SOURCE_DIR=${llvm_source_dir}"
"-DHEADER_FILE=${version_inc}"
"-DLLVM_FORCE_VC_REVISION=${LLVM_FORCE_VC_REVISION}"
"-DLLVM_FORCE_VC_REPOSITORY=${LLVM_FORCE_VC_REPOSITORY}"
-P "${generate_vcs_version_script}")
else()
add_custom_command(OUTPUT "${version_inc}"
@ -35,6 +37,8 @@ else()
COMMAND ${CMAKE_COMMAND} "-DNAMES=LLVM"
"-DLLVM_SOURCE_DIR=${llvm_source_dir}"
"-DHEADER_FILE=${version_inc}"
"-DLLVM_FORCE_VC_REVISION=${LLVM_FORCE_VC_REVISION}"
"-DLLVM_FORCE_VC_REPOSITORY=${LLVM_FORCE_VC_REPOSITORY}"
-P "${generate_vcs_version_script}")
endif()