Skip to content

Commit a34b044

Browse files
authored
Merge pull request #29545 from apple/revert-29040-version-control
Revert "build: simplify version tracking logic"
2 parents a572c4b + be37141 commit a34b044

File tree

1 file changed

+41
-17
lines changed

1 file changed

+41
-17
lines changed

lib/Basic/CMakeLists.txt

+41-17
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,59 @@ else()
1111
set(UUID_INCLUDE "${UUID_INCLUDE_DIRS}")
1212
endif()
1313

14-
function(generate_revision_inc revision_inc_var name dir)
15-
find_first_existing_vc_file("${dir}" ${name}_vc)
14+
# Figure out if we can track VC revisions.
15+
# FIXME: Copied from Clang.
16+
function(find_first_existing_file out_var)
17+
foreach(file ${ARGN})
18+
if(EXISTS "${file}")
19+
set(${out_var} "${file}" PARENT_SCOPE)
20+
return()
21+
endif()
22+
endforeach()
23+
endfunction()
1624

17-
# Create custom target to generate the VC revision include.
18-
set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/${name}Revision.inc")
25+
macro(find_first_existing_vc_file out_var path)
26+
find_first_existing_file(${out_var}
27+
"${path}/.git/logs/HEAD" # Git
28+
"${path}/.svn/wc.db" # SVN 1.7
29+
"${path}/.svn/entries" # SVN 1.6
30+
)
31+
endmacro()
1932

20-
set(generate_vcs_version_script "${LLVM_MAIN_SRC_DIR}/cmake/modules/GenerateVersionFromVCS.cmake")
33+
set(generate_vcs_version_script "${LLVM_MAIN_SRC_DIR}/cmake/modules/GenerateVersionFromVCS.cmake")
2134

22-
add_custom_command(OUTPUT "${version_inc}"
23-
DEPENDS "${${name}_vc}" "${generate_vcs_version_script}"
24-
COMMAND ${CMAKE_COMMAND} "-DNAMES=$<UPPER_CASE:name>"
25-
"-D$<UPPER_CASE:name>_SOURCE_DIR=${dir}"
26-
"-DHEADER_FILE=${version_inc}"
27-
-P "${generate_vcs_version_script}")
35+
function(generate_revision_inc revision_inc_var name dir)
36+
find_first_existing_vc_file(dep_file "${dir}")
37+
# Create custom target to generate the VC revision include.
38+
set(revision_inc "${CMAKE_CURRENT_BINARY_DIR}/${name}Revision.inc")
39+
string(TOUPPER ${name} upper_name)
40+
if(DEFINED dep_file)
41+
add_custom_command(OUTPUT "${revision_inc}"
42+
DEPENDS "${dep_file}" "${generate_vcs_version_script}"
43+
COMMAND
44+
${CMAKE_COMMAND} "-DNAMES=${upper_name}"
45+
"-D${upper_name}_SOURCE_DIR=${dir}"
46+
"-DHEADER_FILE=${revision_inc}"
47+
-P "${generate_vcs_version_script}")
48+
else()
49+
# Generate an empty Revision.inc file if we are not using git or SVN.
50+
file(WRITE "${revision_inc}" "")
51+
endif()
2852

2953
# Mark the generated header as being generated.
30-
set_source_files_properties("${version_inc}"
54+
set_source_files_properties("${revision_inc}"
3155
PROPERTIES GENERATED TRUE
3256
HEADER_FILE_ONLY TRUE)
33-
set(${revision_inc_var} ${version_inc} PARENT_SCOPE)
57+
set(${revision_inc_var} ${revision_inc} PARENT_SCOPE)
3458
endfunction()
3559

3660
generate_revision_inc(llvm_revision_inc LLVM "${LLVM_MAIN_SRC_DIR}")
3761
generate_revision_inc(clang_revision_inc Clang "${CLANG_MAIN_SRC_DIR}")
3862
generate_revision_inc(swift_revision_inc Swift "${SWIFT_SOURCE_DIR}")
3963

64+
set(version_inc_files
65+
${llvm_revision_inc} ${clang_revision_inc} ${swift_revision_inc})
66+
4067
add_swift_host_library(swiftBasic STATIC
4168
AnyValue.cpp
4269
Cache.cpp
@@ -68,10 +95,7 @@ add_swift_host_library(swiftBasic STATIC
6895
Unicode.cpp
6996
UUID.cpp
7097
Version.cpp
71-
72-
${llvm_revision_inc}
73-
${clang_revision_inc}
74-
${swift_revision_inc}
98+
${version_inc_files}
7599

76100
# Platform-specific TaskQueue implementations
77101
Unix/TaskQueue.inc

0 commit comments

Comments
 (0)