@@ -11,32 +11,59 @@ else()
1111 set (UUID_INCLUDE "${UUID_INCLUDE_DIRS} " )
1212endif ()
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)
3458endfunction ()
3559
3660generate_revision_inc(llvm_revision_inc LLVM "${LLVM_MAIN_SRC_DIR} " )
3761generate_revision_inc(clang_revision_inc Clang "${CLANG_MAIN_SRC_DIR} " )
3862generate_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+
4067add_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