@@ -92,6 +92,67 @@ include_directories(BEFORE
92
92
93
93
if ("${CMAKE_SYSTEM_NAME} " STREQUAL "Linux" )
94
94
set (SOURCEKIT_DEFAULT_TARGET_SDK "LINUX" )
95
+ if (SWIFT_BUILD_SOURCEKIT )
96
+ include (ExternalProject )
97
+ ExternalProject_Add (libdispatch
98
+ SOURCE_DIR
99
+ "${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} "
100
+ BINARY_DIR
101
+ "${SWIFT_PATH_TO_LIBDISPATCH_BUILD} "
102
+ CMAKE_ARGS
103
+ -DCMAKE_C_COMPILER=${PATH_TO_CLANG_BUILD}/bin/clang
104
+ -DCMAKE_CXX_COMPILER=${PATH_TO_CLANG_BUILD}/bin/clang++
105
+ -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
106
+ -DCMAKE_SWIFT_COMPILER=$<TARGET_FILE:swift>c
107
+ -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
108
+ -DENABLE_SWIFT=YES
109
+ BUILD_BYPRODUCTS
110
+ ${SWIFT_PATH_TO_LIBDISPATCH_BUILD} /src/${CMAKE_SHARED_LIBRARY_PREFIX}dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
111
+ ${SWIFT_PATH_TO_LIBDISPATCH_BUILD} /${CMAKE_STATIC_LIBRARY_PREFIX}BlocksRuntime${CMAKE_STATIC_LIBRARY_SUFFIX}
112
+ STEP_TARGETS
113
+ configure
114
+ BUILD_ALWAYS
115
+ 1 )
116
+
117
+ # CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
118
+ # the directory existing. Just create the location which will be populated
119
+ # during the installation.
120
+ ExternalProject_Get_Property (libdispatch install_dir )
121
+ file (MAKE_DIRECTORY ${install_dir} /include )
122
+
123
+ # TODO(compnerd) this should be taken care of by the
124
+ # INTERFACE_INCLUDE_DIRECTORIES below
125
+ include_directories (AFTER
126
+ ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} /src/BlocksRuntime
127
+ ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} )
128
+ add_dependencies (libdispatch
129
+ swift
130
+ copy_shim_headers
131
+ swiftCore-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH}
132
+ swiftSwiftOnoneSupport-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH}
133
+ swiftCore-swiftmodule-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH}
134
+ swiftSwiftOnoneSupport-swiftmodule-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH} )
135
+ endif ()
136
+
137
+ ExternalProject_Get_Property (libdispatch install_dir )
138
+ add_library (dispatch SHARED IMPORTED )
139
+ set_target_properties (dispatch
140
+ PROPERTIES
141
+ IMPORTED_LOCATION
142
+ ${SWIFT_PATH_TO_LIBDISPATCH_BUILD} /src/${CMAKE_SHARED_LIBRARY_PREFIX}dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
143
+ INTERFACE_INCLUDE_DIRECTORIES
144
+ ${install_dir} /include
145
+ IMPORTED_LINK_INTERFACE_LIBRARIES
146
+ swiftCore-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH} )
147
+
148
+ add_library (BlocksRuntime STATIC IMPORTED )
149
+ set_target_properties (BlocksRuntime
150
+ PROPERTIES
151
+ IMPORTED_LOCATION
152
+ ${SWIFT_PATH_TO_LIBDISPATCH_BUILD} /${CMAKE_STATIC_LIBRARY_PREFIX}BlocksRuntime${CMAKE_STATIC_LIBRARY_SUFFIX}
153
+ INTERFACE_INCLUDE_DIRECTORIES
154
+ ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} /src/BlocksRuntime )
155
+
95
156
set (SOURCEKIT_NEED_EXPLICIT_LIBDISPATCH TRUE )
96
157
endif ()
97
158
0 commit comments