Skip to content

Commit ab5c682

Browse files
committed
Revert "Revert "build: simplify version tracking logic""
This reverts commit be37141. Add a small fix in the dereferencing.
1 parent de9ffcb commit ab5c682

File tree

1 file changed

+17
-41
lines changed

1 file changed

+17
-41
lines changed

lib/Basic/CMakeLists.txt

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

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()
14+
function(generate_revision_inc revision_inc_var name dir)
15+
find_first_existing_vc_file("${dir}" ${name}_vc)
2416

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()
17+
# Create custom target to generate the VC revision include.
18+
set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/${name}Revision.inc")
3219

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

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()
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}")
5228

5329
# Mark the generated header as being generated.
54-
set_source_files_properties("${revision_inc}"
30+
set_source_files_properties("${version_inc}"
5531
PROPERTIES GENERATED TRUE
5632
HEADER_FILE_ONLY TRUE)
57-
set(${revision_inc_var} ${revision_inc} PARENT_SCOPE)
33+
set(${revision_inc_var} ${version_inc} PARENT_SCOPE)
5834
endfunction()
5935

6036
generate_revision_inc(llvm_revision_inc LLVM "${LLVM_MAIN_SRC_DIR}")
6137
generate_revision_inc(clang_revision_inc Clang "${CLANG_MAIN_SRC_DIR}")
6238
generate_revision_inc(swift_revision_inc Swift "${SWIFT_SOURCE_DIR}")
6339

64-
set(version_inc_files
65-
${llvm_revision_inc} ${clang_revision_inc} ${swift_revision_inc})
66-
6740
add_swift_host_library(swiftBasic STATIC
6841
AnyValue.cpp
6942
Cache.cpp
@@ -95,7 +68,10 @@ add_swift_host_library(swiftBasic STATIC
9568
Unicode.cpp
9669
UUID.cpp
9770
Version.cpp
98-
${version_inc_files}
71+
72+
${llvm_revision_inc}
73+
${clang_revision_inc}
74+
${swift_revision_inc}
9975

10076
# Platform-specific TaskQueue implementations
10177
Unix/TaskQueue.inc

0 commit comments

Comments
 (0)