@@ -11,32 +11,59 @@ else()
11
11
set (UUID_INCLUDE "${UUID_INCLUDE_DIRS} " )
12
12
endif ()
13
13
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 ()
16
24
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 ()
19
32
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" )
21
34
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 ()
28
52
29
53
# Mark the generated header as being generated.
30
- set_source_files_properties ("${version_inc } "
54
+ set_source_files_properties ("${revision_inc } "
31
55
PROPERTIES GENERATED TRUE
32
56
HEADER_FILE_ONLY TRUE )
33
- set (${revision_inc_var} ${version_inc } PARENT_SCOPE)
57
+ set (${revision_inc_var} ${revision_inc } PARENT_SCOPE)
34
58
endfunction ()
35
59
36
60
generate_revision_inc(llvm_revision_inc LLVM "${LLVM_MAIN_SRC_DIR} " )
37
61
generate_revision_inc(clang_revision_inc Clang "${CLANG_MAIN_SRC_DIR} " )
38
62
generate_revision_inc(swift_revision_inc Swift "${SWIFT_SOURCE_DIR} " )
39
63
64
+ set (version_inc_files
65
+ ${llvm_revision_inc} ${clang_revision_inc} ${swift_revision_inc} )
66
+
40
67
add_swift_host_library(swiftBasic STATIC
41
68
AnyValue.cpp
42
69
Cache .cpp
@@ -68,10 +95,7 @@ add_swift_host_library(swiftBasic STATIC
68
95
Unicode.cpp
69
96
UUID.cpp
70
97
Version .cpp
71
-
72
- ${llvm_revision_inc}
73
- ${clang_revision_inc}
74
- ${swift_revision_inc}
98
+ ${version_inc_files}
75
99
76
100
# Platform-specific TaskQueue implementations
77
101
Unix /TaskQueue.inc
0 commit comments