forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
143 lines (120 loc) · 4.4 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# On non-Darwin require UUID.
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(UUID_INCLUDE "")
set(UUID_LIBRARIES "")
else()
find_package(UUID REQUIRED)
set(UUID_INCLUDE "-I${UUID_INCLUDE_DIRS}")
endif()
# Figure out if we can track VC revisions.
# FIXME: Copied from Clang.
function(find_first_existing_file out_var)
foreach(file ${ARGN})
if(EXISTS "${file}")
set(${out_var} "${file}" PARENT_SCOPE)
return()
endif()
endforeach()
endfunction()
macro(find_first_existing_vc_file out_var path)
find_first_existing_file(${out_var}
"${path}/.git/logs/HEAD" # Git
"${path}/.svn/wc.db" # SVN 1.7
"${path}/.svn/entries" # SVN 1.6
)
endmacro()
set(get_svn_script "${LLVM_MAIN_SRC_DIR}/cmake/modules/GetSVN.cmake")
function(generate_revision_inc revision_inc_var name dir)
find_first_existing_vc_file(dep_file "${dir}")
if(DEFINED dep_file)
# Create custom target to generate the VC revision include.
set(revision_inc "${CMAKE_CURRENT_BINARY_DIR}/${name}Revision.inc")
string(TOUPPER ${name} upper_name)
add_custom_command(OUTPUT "${revision_inc}"
DEPENDS "${dep_file}" "${get_svn_script}"
COMMAND
${CMAKE_COMMAND} "-DFIRST_SOURCE_DIR=${dir}"
"-DFIRST_NAME=${upper_name}"
"-DHEADER_FILE=${revision_inc}"
-P "${get_svn_script}")
# Mark the generated header as being generated.
set_source_files_properties("${revision_inc}"
PROPERTIES GENERATED TRUE
HEADER_FILE_ONLY TRUE)
set(${revision_inc_var} ${revision_inc} PARENT_SCOPE)
endif()
endfunction()
generate_revision_inc(llvm_revision_inc LLVM "${LLVM_MAIN_SRC_DIR}")
generate_revision_inc(clang_revision_inc Clang "${CLANG_MAIN_SRC_DIR}")
generate_revision_inc(swift_revision_inc Swift "${SWIFT_SOURCE_DIR}")
set(version_inc_files
${llvm_revision_inc} ${clang_revision_inc} ${swift_revision_inc})
add_swift_library(swiftBasic
Cache.cpp
ClusteredBitVector.cpp
Demangle.cpp
DemangleWrappers.cpp
DiagnosticConsumer.cpp
DiverseStack.cpp
EditorPlaceholder.cpp
FileSystem.cpp
JSONSerialization.cpp
LangOptions.cpp
Platform.cpp
PrettyStackTrace.cpp
PrefixMap.cpp
PrimitiveParsing.cpp
Program.cpp
Punycode.cpp
PunycodeUTF8.cpp
QuotedString.cpp
Remangle.cpp
SourceLoc.cpp
StringExtras.cpp
TaskQueue.cpp
ThreadSafeRefCounted.cpp
Unicode.cpp
UUID.cpp
Version.cpp
${version_inc_files}
# Platform-specific TaskQueue implementations
Unix/TaskQueue.inc
# Platform-agnostic fallback TaskQueue implementation
Default/TaskQueue.inc
UnicodeExtendedGraphemeClusters.cpp.gyb
C_COMPILE_FLAGS ${UUID_INCLUDE}
LINK_LIBRARIES ${UUID_LIBRARIES}
COMPONENT_DEPENDS support)
message(STATUS "Swift version: ${SWIFT_VERSION}")
message(STATUS "Swift vendor: ${SWIFT_VENDOR}")
string(REGEX REPLACE "([0-9]+)\\.[0-9]+(\\.[0-9]+)?" "\\1" SWIFT_VERSION_MAJOR
${SWIFT_VERSION})
string(REGEX REPLACE "[0-9]+\\.([0-9]+)(\\.[0-9]+)?" "\\1" SWIFT_VERSION_MINOR
${SWIFT_VERSION})
set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS
" -DSWIFT_VERSION=${SWIFT_VERSION} -DSWIFT_VERSION_MAJOR=${SWIFT_VERSION_MAJOR} -DSWIFT_VERSION_MINOR=${SWIFT_VERSION_MINOR}")
if ("${SWIFT_VERSION}" MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" SWIFT_VERSION_PATCHLEVEL
${SWIFT_VERSION})
set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS
" -DSWIFT_HAS_VERSION_PATCHLEVEL=1 -DSWIFT_VERSION_PATCHLEVEL=${SWIFT_VERSION_PATCHLEVEL}")
else()
set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS
" -DSWIFT_HAS_VERSION_PATCHLEVEL=0")
endif()
if(NOT "${SWIFT_VENDOR}" STREQUAL "")
set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS
" -DSWIFT_VENDOR=\"\\\"${SWIFT_VENDOR}\\\"\"")
endif()
set(SWIFT_COMPILER_VERSION "" CACHE STRING
"The string that identifies the SCM commit(s) for this build")
message(STATUS "Swift compiler version: ${SWIFT_COMPILER_VERSION}")
message(STATUS "Embedded clang compiler version: ${CLANG_COMPILER_VERSION}")
if(SWIFT_COMPILER_VERSION)
set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS
" -DSWIFT_COMPILER_VERSION=\"\\\"${SWIFT_COMPILER_VERSION}\\\"\"")
endif()
if(CLANG_COMPILER_VERSION)
set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS
" -DCLANG_COMPILER_VERSION=\"\\\"${CLANG_COMPILER_VERSION}\\\"\"")
endif()