- Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathCMakeLists.txt
129 lines (109 loc) · 4.42 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
include(CheckSymbolExists)
# Append our own modules to the module path.
list(APPENDCMAKE_MODULE_PATH
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
if(CMAKE_SOURCE_DIRSTREQUALCMAKE_CURRENT_SOURCE_DIR)
message(SEND_ERROR "SourceKit cannot be built standalone")
endif()
set(SOURCEKIT_SWIFT_SWAP_COMPILER FALSE)
include(SwiftWindowsSupport)
swift_swap_compiler_if_needed("SourceKit")
if (DARWIN_TOOLCHAIN_VERSION)
set(SOURCEKIT_VERSION_STRING "${DARWIN_TOOLCHAIN_VERSION}")
else()
set(SOURCEKIT_VERSION_STRING "${SWIFT_COMPILER_VERSION}")
endif()
set(SOURCEKIT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(SOURCEKIT_BINARY_DIR${SWIFT_BINARY_DIR})
set(SOURCEKIT_RUNTIME_OUTPUT_INTDIR "${SWIFT_RUNTIME_OUTPUT_INTDIR}")
set(SOURCEKIT_LIBRARY_OUTPUT_INTDIR "${SWIFT_LIBRARY_OUTPUT_INTDIR}")
check_symbol_exists(dispatch_block_create "dispatch/dispatch.h" HAVE_DISPATCH_BLOCK_CREATE)
configure_file(
${SOURCEKIT_SOURCE_DIR}/include/SourceKit/Config/config.h.cmake
${SOURCEKIT_BINARY_DIR}/include/SourceKit/Config/config.h)
set(SOURCEKIT_DEPLOYMENT_OS "${SWIFT_HOST_VARIANT}")
set(SOURCEKIT_DEPLOYMENT_TARGET "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_DEPLOYMENT_VERSION}")
set(SOURCEKIT_TOOLCHAIN_NAME "${SWIFT_DARWIN_XCRUN_TOOLCHAIN}")
if("${SOURCEKIT_TOOLCHAIN_NAME}"MATCHES"XcodeDefault")
set(SOURCEKIT_TOOLCHAIN_NAME "default")
endif()
if("${CMAKE_SYSTEM_NAME}"STREQUAL"Darwin"ANDNOTCMAKE_CROSSCOMPILING)
set(CMAKE_OSX_SYSROOT "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_PATH}")
set(CMAKE_OSX_ARCHITECTURES "${SWIFT_HOST_VARIANT_ARCH}")
set(CMAKE_OSX_DEPLOYMENT_TARGET "")
endif()
# If we were don't have XPC, just build inproc.
if(NOT"${CMAKE_SYSTEM_NAME}"STREQUAL"Darwin"ORNOT HAVE_XPC_H)
set(SWIFT_SOURCEKIT_USE_INPROC_LIBRARY TRUE)
endif()
# Now include AddSwiftSourceKit
include(AddSwiftSourceKit)
if("${CMAKE_SYSTEM_NAME}"STREQUAL"Darwin")
# Choose a deployment target if none was set.
if (NOT SOURCEKIT_DEPLOYMENT_TARGET)
execute_process(COMMAND sw_vers -productVersion
OUTPUT_VARIABLE SOURCEKIT_DEPLOYMENT_TARGET
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REGEX MATCH "[0-9]+\\.[0-9]+" SOURCEKIT_DEPLOYMENT_TARGET "${SOURCEKIT_DEPLOYMENT_TARGET}")
endif()
# Sadly there are two OS naming conventions.
# xcrun SDK name: macosx iphoneos iphonesimulator (+ "internal" or version)
# triple name: macosx ios ios-simulator
if (SOURCEKIT_DEPLOYMENT_OS MATCHES"^iphoneos")
set(version_min_os "ios")
set(triple_os "ios")
set(SOURCEKIT_DEFAULT_TARGET_SDK "IOS")
elseif (SOURCEKIT_DEPLOYMENT_OS MATCHES"^iphonesimulator")
set(version_min_os "ios-simulator")
set(triple_os "ios")
set(SOURCEKIT_DEFAULT_TARGET_SDK "IOS_SIMULATOR")
elseif (SOURCEKIT_DEPLOYMENT_OS MATCHES"^macosx")
set(version_min_os "macosx")
set(triple_os "macosx")
set(SOURCEKIT_DEFAULT_TARGET_SDK "OSX")
else()
message(FATAL_ERROR "Can't understand SOURCEKIT_DEPLOYMENT_OS '${SOURCEKIT_DEPLOYMENT_OS}';")
endif()
# Add deployment target to C/C++ compiler and linker flags.
# FIXME: CMAKE_OSX_DEPLOYMENT_TARGET falls over when used for iOS versions.
if (XCODE)
if (SOURCEKIT_DEPLOYMENT_OS MATCHES"^macosx")
set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET ${SOURCEKIT_DEPLOYMENT_TARGET})
else()
set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${SOURCEKIT_DEPLOYMENT_TARGET})
endif()
endif()
endif()
include_directories(BEFORE
${SOURCEKIT_BINARY_DIR}/include
${SOURCEKIT_SOURCE_DIR}/include
${SOURCEKIT_BINARY_DIR}/tools/SourceKit/include
)
if(NOT"${CMAKE_SYSTEM_NAME}"STREQUAL"Darwin")
string(TOUPPER "${CMAKE_SYSTEM_NAME}" SOURCEKIT_DEFAULT_TARGET_SDK)
endif()
if(SWIFT_BUILD_HOST_DISPATCH)
if(SWIFT_HOST_VARIANT_SDK STREQUAL"WINDOWS")
set(SOURCEKIT_RUNTIME_DIR bin)
else()
set(SOURCEKIT_RUNTIME_DIR lib)
endif()
add_dependencies(sourcekit-inproc BlocksRuntime dispatch)
if("${SWIFT_HOST_VARIANT_SDK}"MATCHES"OSX|WINDOWS")
swift_install_in_component(FILES
$<TARGET_FILE:dispatch>
$<TARGET_FILE:BlocksRuntime>
DESTINATION${SOURCEKIT_RUNTIME_DIR}
COMPONENT sourcekit-inproc)
endif()
if(SWIFT_HOST_VARIANT_SDK STREQUAL"WINDOWS")
swift_install_in_component(FILES
$<TARGET_LINKER_FILE:dispatch>
$<TARGET_LINKER_FILE:BlocksRuntime>
DESTINATION lib
COMPONENT sourcekit-inproc)
endif()
endif()
add_subdirectory(include)
add_subdirectory(lib)
add_subdirectory(tools)