Skip to content

Commit 51bdfa1

Browse files
authored
[Concurrency] Build C-only libdispatch as part of Swift build (swiftlang#35837)
* [Concurrency] Build C-only libdispatch as part of Swift build
1 parent bcfafc1 commit 51bdfa1

File tree

5 files changed

+306
-149
lines changed

5 files changed

+306
-149
lines changed

CMakeLists.txt

Lines changed: 1 addition & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -961,133 +961,7 @@ if (LLVM_ENABLE_DOXYGEN)
961961
message(STATUS "Doxygen: enabled")
962962
endif()
963963

964-
if(SWIFT_BUILD_HOST_DISPATCH)
965-
if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
966-
if(CMAKE_C_COMPILER_ID STREQUAL Clang AND
967-
CMAKE_C_COMPILER_VERSION VERSION_GREATER 3.8
968-
OR LLVM_USE_SANITIZER)
969-
set(SWIFT_LIBDISPATCH_C_COMPILER ${CMAKE_C_COMPILER})
970-
set(SWIFT_LIBDISPATCH_CXX_COMPILER ${CMAKE_CXX_COMPILER})
971-
elseif(${CMAKE_SYSTEM_NAME} STREQUAL ${CMAKE_HOST_SYSTEM_NAME})
972-
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
973-
if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR AND
974-
TARGET clang)
975-
set(SWIFT_LIBDISPATCH_C_COMPILER
976-
$<TARGET_FILE_DIR:clang>/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
977-
set(SWIFT_LIBDISPATCH_CXX_COMPILER
978-
$<TARGET_FILE_DIR:clang>/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
979-
else()
980-
set(SWIFT_LIBDISPATCH_C_COMPILER clang-cl${CMAKE_EXECUTABLE_SUFFIX})
981-
set(SWIFT_LIBDISPATCH_CXX_COMPILER clang-cl${CMAKE_EXECUTABLE_SUFFIX})
982-
endif()
983-
else()
984-
set(SWIFT_LIBDISPATCH_C_COMPILER $<TARGET_FILE_DIR:clang>/clang)
985-
set(SWIFT_LIBDISPATCH_CXX_COMPILER $<TARGET_FILE_DIR:clang>/clang++)
986-
endif()
987-
else()
988-
message(SEND_ERROR "libdispatch requires a newer clang compiler (${CMAKE_C_COMPILER_VERSION} < 3.9)")
989-
endif()
990-
991-
if(SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
992-
set(SOURCEKIT_LIBDISPATCH_RUNTIME_DIR bin)
993-
else()
994-
set(SOURCEKIT_LIBDISPATCH_RUNTIME_DIR lib)
995-
endif()
996-
997-
include(ExternalProject)
998-
ExternalProject_Add(libdispatch
999-
SOURCE_DIR
1000-
"${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}"
1001-
CMAKE_ARGS
1002-
-DCMAKE_AR=${CMAKE_AR}
1003-
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
1004-
-DCMAKE_C_COMPILER=${SWIFT_LIBDISPATCH_C_COMPILER}
1005-
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
1006-
-DCMAKE_CXX_COMPILER=${SWIFT_LIBDISPATCH_CXX_COMPILER}
1007-
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
1008-
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
1009-
-DCMAKE_INSTALL_LIBDIR=lib
1010-
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
1011-
-DCMAKE_LINKER=${CMAKE_LINKER}
1012-
-DCMAKE_RANLIB=${CMAKE_RANLIB}
1013-
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
1014-
-DBUILD_SHARED_LIBS=YES
1015-
-DENABLE_SWIFT=NO
1016-
-DENABLE_TESTING=NO
1017-
INSTALL_COMMAND
1018-
# NOTE(compnerd) provide a custom install command to
1019-
# ensure that we strip out the DESTDIR environment
1020-
# from the sub-build
1021-
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --target install
1022-
STEP_TARGETS
1023-
install
1024-
BUILD_BYPRODUCTS
1025-
<INSTALL_DIR>/${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
1026-
<INSTALL_DIR>/lib/${CMAKE_IMPORT_LIBRARY_PREFIX}dispatch${CMAKE_IMPORT_LIBRARY_SUFFIX}
1027-
<INSTALL_DIR>/${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}BlocksRuntime${CMAKE_SHARED_LIBRARY_SUFFIX}
1028-
<INSTALL_DIR>/lib/${CMAKE_IMPORT_LIBRARY_PREFIX}BlocksRuntime${CMAKE_IMPORT_LIBRARY_SUFFIX}
1029-
BUILD_ALWAYS
1030-
1)
1031-
1032-
ExternalProject_Get_Property(libdispatch install_dir)
1033-
1034-
# CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
1035-
# the directory existing. Just create the location which will be populated
1036-
# during the installation.
1037-
file(MAKE_DIRECTORY ${install_dir}/include)
1038-
1039-
add_library(dispatch SHARED IMPORTED)
1040-
set_target_properties(dispatch
1041-
PROPERTIES
1042-
IMPORTED_LOCATION
1043-
${install_dir}/${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
1044-
IMPORTED_IMPLIB
1045-
${install_dir}/lib/${CMAKE_IMPORT_LIBRARY_PREFIX}dispatch${CMAKE_IMPORT_LIBRARY_SUFFIX}
1046-
INTERFACE_INCLUDE_DIRECTORIES
1047-
${install_dir}/include)
1048-
1049-
add_library(BlocksRuntime SHARED IMPORTED)
1050-
set_target_properties(BlocksRuntime
1051-
PROPERTIES
1052-
IMPORTED_LOCATION
1053-
${install_dir}/${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}BlocksRuntime${CMAKE_SHARED_LIBRARY_SUFFIX}
1054-
IMPORTED_IMPLIB
1055-
${install_dir}/lib/${CMAKE_IMPORT_LIBRARY_PREFIX}BlocksRuntime${CMAKE_IMPORT_LIBRARY_SUFFIX}
1056-
INTERFACE_INCLUDE_DIRECTORIES
1057-
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/BlocksRuntime)
1058-
1059-
add_dependencies(dispatch libdispatch-install)
1060-
add_dependencies(BlocksRuntime libdispatch-install)
1061-
1062-
if(SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
1063-
set(SOURCEKIT_RUNTIME_DIR bin)
1064-
else()
1065-
set(SOURCEKIT_RUNTIME_DIR lib)
1066-
endif()
1067-
add_dependencies(sourcekit-inproc BlocksRuntime dispatch)
1068-
if("${SWIFT_HOST_VARIANT_SDK}" MATCHES "OSX|WINDOWS")
1069-
swift_install_in_component(FILES
1070-
$<TARGET_FILE:dispatch>
1071-
$<TARGET_FILE:BlocksRuntime>
1072-
DESTINATION ${SOURCEKIT_RUNTIME_DIR}
1073-
COMPONENT sourcekit-inproc)
1074-
endif()
1075-
if(SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
1076-
swift_install_in_component(FILES
1077-
$<TARGET_LINKER_FILE:dispatch>
1078-
$<TARGET_LINKER_FILE:BlocksRuntime>
1079-
DESTINATION lib
1080-
COMPONENT sourcekit-inproc)
1081-
endif()
1082-
1083-
1084-
# FIXME(compnerd) this should be taken care of by the
1085-
# INTERFACE_INCLUDE_DIRECTORIES above
1086-
include_directories(AFTER
1087-
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/BlocksRuntime
1088-
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE})
1089-
endif()
1090-
endif()
964+
include(Libdispatch)
1091965

1092966
# Add all of the subdirectories, where we actually do work.
1093967

cmake/modules/Libdispatch.cmake

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
include(ExternalProject)
2+
3+
if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
4+
if(CMAKE_C_COMPILER_ID STREQUAL Clang AND
5+
CMAKE_C_COMPILER_VERSION VERSION_GREATER 3.8
6+
OR LLVM_USE_SANITIZER)
7+
set(SWIFT_LIBDISPATCH_C_COMPILER ${CMAKE_C_COMPILER})
8+
set(SWIFT_LIBDISPATCH_CXX_COMPILER ${CMAKE_CXX_COMPILER})
9+
elseif(${CMAKE_SYSTEM_NAME} STREQUAL ${CMAKE_HOST_SYSTEM_NAME})
10+
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
11+
if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR AND
12+
TARGET clang)
13+
set(SWIFT_LIBDISPATCH_C_COMPILER
14+
$<TARGET_FILE_DIR:clang>/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
15+
set(SWIFT_LIBDISPATCH_CXX_COMPILER
16+
$<TARGET_FILE_DIR:clang>/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
17+
else()
18+
set(SWIFT_LIBDISPATCH_C_COMPILER clang-cl${CMAKE_EXECUTABLE_SUFFIX})
19+
set(SWIFT_LIBDISPATCH_CXX_COMPILER clang-cl${CMAKE_EXECUTABLE_SUFFIX})
20+
endif()
21+
else()
22+
set(SWIFT_LIBDISPATCH_C_COMPILER $<TARGET_FILE_DIR:clang>/clang)
23+
set(SWIFT_LIBDISPATCH_CXX_COMPILER $<TARGET_FILE_DIR:clang>/clang++)
24+
endif()
25+
else()
26+
message(SEND_ERROR "libdispatch requires a newer clang compiler (${CMAKE_C_COMPILER_VERSION} < 3.9)")
27+
endif()
28+
29+
if(SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
30+
set(LIBDISPATCH_RUNTIME_DIR bin)
31+
else()
32+
set(LIBDISPATCH_RUNTIME_DIR lib)
33+
endif()
34+
endif()
35+
36+
set(DISPATCH_SDKS)
37+
if(SWIFT_BUILD_HOST_DISPATCH)
38+
if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
39+
if(NOT "${SWIFT_HOST_VARIANT_SDK}" IN_LIST SWIFT_SDKS)
40+
list(APPEND DISPATCH_SDKS "${SWIFT_HOST_VARIANT_SDK}")
41+
endif()
42+
endif()
43+
44+
foreach(sdk ${SWIFT_SDKS})
45+
if(NOT "${sdk}" IN_LIST SWIFT_APPLE_PLATFORMS)
46+
list(APPEND DISPATCH_SDKS "${sdk}")
47+
endif()
48+
endforeach()
49+
endif()
50+
51+
foreach(sdk ${DISPATCH_SDKS})
52+
set(ARCHS ${SWIFT_SDK_${sdk}_ARCHITECTURES})
53+
if(${sdk} STREQUAL "${SWIFT_HOST_VARIANT_SDK}")
54+
if(NOT "${SWIFT_HOST_VARIANT_ARCH}" IN_LIST ARCHS)
55+
list(APPEND ARCHS "${SWIFT_HOST_VARIANT_ARCH}")
56+
endif()
57+
endif()
58+
59+
foreach(arch ${ARCHS})
60+
set(LIBDISPATCH_VARIANT_NAME "libdispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
61+
62+
ExternalProject_Add("${LIBDISPATCH_VARIANT_NAME}"
63+
SOURCE_DIR
64+
"${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}"
65+
CMAKE_ARGS
66+
-DCMAKE_AR=${CMAKE_AR}
67+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
68+
-DCMAKE_C_COMPILER=${SWIFT_LIBDISPATCH_C_COMPILER}
69+
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
70+
-DCMAKE_CXX_COMPILER=${SWIFT_LIBDISPATCH_CXX_COMPILER}
71+
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
72+
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
73+
-DCMAKE_INSTALL_LIBDIR=lib
74+
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
75+
-DCMAKE_LINKER=${CMAKE_LINKER}
76+
-DCMAKE_RANLIB=${CMAKE_RANLIB}
77+
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
78+
-DCMAKE_SYSTEM_NAME=${SWIFT_SDK_${sdk}_NAME}
79+
-DCMAKE_SYSTEM_PROCESSOR=${arch}
80+
-DBUILD_SHARED_LIBS=YES
81+
-DENABLE_SWIFT=NO
82+
-DENABLE_TESTING=NO
83+
INSTALL_COMMAND
84+
# NOTE(compnerd) provide a custom install command to
85+
# ensure that we strip out the DESTDIR environment
86+
# from the sub-build
87+
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --target install
88+
STEP_TARGETS
89+
install
90+
BUILD_BYPRODUCTS
91+
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
92+
<INSTALL_DIR>/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
93+
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
94+
<INSTALL_DIR>/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
95+
BUILD_ALWAYS
96+
1)
97+
98+
ExternalProject_Get_Property("${LIBDISPATCH_VARIANT_NAME}" install_dir)
99+
100+
# CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
101+
# the directory existing. Just create the location which will be populated
102+
# during the installation.
103+
file(MAKE_DIRECTORY ${install_dir}/include)
104+
105+
set(DISPATCH_VARIANT_NAME "dispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
106+
add_library("${DISPATCH_VARIANT_NAME}" SHARED IMPORTED GLOBAL)
107+
set_target_properties("${DISPATCH_VARIANT_NAME}"
108+
PROPERTIES
109+
IMPORTED_LOCATION
110+
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
111+
IMPORTED_IMPLIB
112+
${install_dir}/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
113+
INTERFACE_INCLUDE_DIRECTORIES
114+
${install_dir}/include
115+
IMPORTED_NO_SONAME
116+
1)
117+
118+
set(BLOCKS_RUNTIME_VARIANT_NAME "BlocksRuntime-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
119+
add_library("${BLOCKS_RUNTIME_VARIANT_NAME}" SHARED IMPORTED GLOBAL)
120+
set_target_properties("${BLOCKS_RUNTIME_VARIANT_NAME}"
121+
PROPERTIES
122+
IMPORTED_LOCATION
123+
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
124+
IMPORTED_IMPLIB
125+
${install_dir}/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
126+
INTERFACE_INCLUDE_DIRECTORIES
127+
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/BlocksRuntime
128+
IMPORTED_NO_SONAME
129+
1)
130+
131+
add_dependencies("${DISPATCH_VARIANT_NAME}" "${LIBDISPATCH_VARIANT_NAME}-install")
132+
add_dependencies("${BLOCKS_RUNTIME_VARIANT_NAME}" "${LIBDISPATCH_VARIANT_NAME}-install")
133+
134+
if(SWIFT_BUILD_STATIC_STDLIB)
135+
set(LIBDISPATCH_STATIC_VARIANT_NAME "libdispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}-static")
136+
ExternalProject_Add("${LIBDISPATCH_STATIC_VARIANT_NAME}"
137+
SOURCE_DIR
138+
"${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}"
139+
CMAKE_ARGS
140+
-DCMAKE_AR=${CMAKE_AR}
141+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
142+
-DCMAKE_C_COMPILER=${SWIFT_LIBDISPATCH_C_COMPILER}
143+
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
144+
-DCMAKE_CXX_COMPILER=${SWIFT_LIBDISPATCH_CXX_COMPILER}
145+
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
146+
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
147+
-DCMAKE_INSTALL_LIBDIR=lib
148+
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
149+
-DCMAKE_LINKER=${CMAKE_LINKER}
150+
-DCMAKE_RANLIB=${CMAKE_RANLIB}
151+
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
152+
-DCMAKE_SYSTEM_NAME=${sdk}
153+
-DCMAKE_SYSTEM_PROCESSOR=${arch}
154+
-DBUILD_SHARED_LIBS=NO
155+
-DENABLE_SWIFT=NO
156+
-DENABLE_TESTING=NO
157+
INSTALL_COMMAND
158+
# NOTE(compnerd) provide a custom install command to
159+
# ensure that we strip out the DESTDIR environment
160+
# from the sub-build
161+
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --target install
162+
STEP_TARGETS
163+
install
164+
BUILD_BYPRODUCTS
165+
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_STATIC_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_STATIC_LIBRARY_SUFFIX}
166+
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_STATIC_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_STATIC_LIBRARY_SUFFIX}
167+
BUILD_ALWAYS
168+
1)
169+
170+
ExternalProject_Get_Property("${LIBDISPATCH_STATIC_VARIANT_NAME}" install_dir)
171+
172+
# CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
173+
# the directory existing. Just create the location which will be populated
174+
# during the installation.
175+
file(MAKE_DIRECTORY ${install_dir}/include)
176+
177+
set(DISPATCH_STATIC_VARIANT_NAME "dispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}-static")
178+
add_library("${DISPATCH_STATIC_VARIANT_NAME}" STATIC IMPORTED GLOBAL)
179+
set_target_properties("${DISPATCH_STATIC_VARIANT_NAME}"
180+
PROPERTIES
181+
IMPORTED_LOCATION
182+
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_STATIC_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_STATIC_LIBRARY_SUFFIX}
183+
IMPORTED_IMPLIB
184+
${install_dir}/lib/${SWIFT_SDK_${sdk}_STATIC_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_STATIC_LIBRARY_SUFFIX}
185+
INTERFACE_INCLUDE_DIRECTORIES
186+
${install_dir}/include)
187+
188+
set(BLOCKS_RUNTIME_STATIC_VARIANT_NAME "BlocksRuntime-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}-static")
189+
add_library("${BLOCKS_RUNTIME_STATIC_VARIANT_NAME}" STATIC IMPORTED GLOBAL)
190+
set_target_properties("${BLOCKS_RUNTIME_STATIC_VARIANT_NAME}"
191+
PROPERTIES
192+
IMPORTED_LOCATION
193+
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_STATIC_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_STATIC_LIBRARY_SUFFIX}
194+
IMPORTED_IMPLIB
195+
${install_dir}/lib/${SWIFT_SDK_${sdk}_STATIC_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_STATIC_LIBRARY_SUFFIX}
196+
INTERFACE_INCLUDE_DIRECTORIES
197+
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/BlocksRuntime)
198+
199+
add_dependencies("${DISPATCH_STATIC_VARIANT_NAME}" "${LIBDISPATCH_STATIC_VARIANT_NAME}-install")
200+
add_dependencies("${BLOCKS_RUNTIME_STATIC_VARIANT_NAME}" "${LIBDISPATCH_STATIC_VARIANT_NAME}-install")
201+
endif()
202+
203+
if("${sdk}" STREQUAL "${SWIFT_HOST_VARIANT_SDK}")
204+
if("${arch}" STREQUAL "${SWIFT_HOST_VARIANT_ARCH}")
205+
add_library(dispatch ALIAS "${DISPATCH_VARIANT_NAME}")
206+
add_library(BlocksRuntime ALIAS "${BLOCKS_RUNTIME_VARIANT_NAME}")
207+
endif()
208+
endif()
209+
endforeach()
210+
endforeach()
211+
212+
if(DISPATCH_SDKS)
213+
# FIXME(compnerd) this should be taken care of by the
214+
# INTERFACE_INCLUDE_DIRECTORIES above
215+
include_directories(AFTER
216+
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/BlocksRuntime
217+
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE})
218+
endif()

0 commit comments

Comments
 (0)