Skip to content

Commit ba3fa2f

Browse files
authored
Merge pull request #18500 from compnerd/swift-syntax-dependency
build: extract libdispatch build for swift
2 parents 66083f6 + f140734 commit ba3fa2f

File tree

3 files changed

+70
-62
lines changed

3 files changed

+70
-62
lines changed

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -937,7 +937,11 @@ add_subdirectory(stdlib)
937937
if(SWIFT_INCLUDE_TOOLS)
938938
add_subdirectory(include)
939939
add_subdirectory(lib)
940-
940+
endif()
941+
942+
include(SwiftExternal)
943+
944+
if(SWIFT_INCLUDE_TOOLS)
941945
# Always include this after including stdlib/!
942946
# Refer to the large comment above the add_subdirectory(stdlib) call.
943947
# https://bugs.swift.org/browse/SR-5975

cmake/modules/SwiftExternal.cmake

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
2+
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
3+
include(ExternalProject)
4+
5+
if(SWIFT_BUILD_SOURCEKIT)
6+
ExternalProject_Add(libdispatch
7+
SOURCE_DIR
8+
"${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}"
9+
BINARY_DIR
10+
"${SWIFT_PATH_TO_LIBDISPATCH_BUILD}"
11+
CMAKE_ARGS
12+
-DCMAKE_C_COMPILER=${PATH_TO_CLANG_BUILD}/bin/clang
13+
-DCMAKE_CXX_COMPILER=${PATH_TO_CLANG_BUILD}/bin/clang++
14+
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
15+
-DCMAKE_SWIFT_COMPILER=$<TARGET_FILE:swift>c
16+
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
17+
-DENABLE_SWIFT=YES
18+
BUILD_BYPRODUCTS
19+
${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/${CMAKE_SHARED_LIBRARY_PREFIX}dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
20+
${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/${CMAKE_STATIC_LIBRARY_PREFIX}BlocksRuntime${CMAKE_STATIC_LIBRARY_SUFFIX}
21+
STEP_TARGETS
22+
configure
23+
BUILD_ALWAYS
24+
1)
25+
26+
# CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
27+
# the directory existing. Just create the location which will be populated
28+
# during the installation.
29+
ExternalProject_Get_Property(libdispatch install_dir)
30+
file(MAKE_DIRECTORY ${install_dir}/include)
31+
32+
# TODO(compnerd) this should be taken care of by the
33+
# INTERFACE_INCLUDE_DIRECTORIES below
34+
include_directories(AFTER
35+
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/BlocksRuntime
36+
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE})
37+
add_dependencies(libdispatch
38+
swift
39+
copy_shim_headers
40+
swiftCore-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH}
41+
swiftSwiftOnoneSupport-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH}
42+
swiftCore-swiftmodule-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH}
43+
swiftSwiftOnoneSupport-swiftmodule-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH})
44+
endif()
45+
46+
ExternalProject_Get_Property(libdispatch install_dir)
47+
add_library(dispatch SHARED IMPORTED)
48+
set_target_properties(dispatch
49+
PROPERTIES
50+
IMPORTED_LOCATION
51+
${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/${CMAKE_SHARED_LIBRARY_PREFIX}dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
52+
INTERFACE_INCLUDE_DIRECTORIES
53+
${install_dir}/include
54+
IMPORTED_LINK_INTERFACE_LIBRARIES
55+
swiftCore-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH})
56+
57+
add_library(BlocksRuntime STATIC IMPORTED)
58+
set_target_properties(BlocksRuntime
59+
PROPERTIES
60+
IMPORTED_LOCATION
61+
${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/${CMAKE_STATIC_LIBRARY_PREFIX}BlocksRuntime${CMAKE_STATIC_LIBRARY_SUFFIX}
62+
INTERFACE_INCLUDE_DIRECTORIES
63+
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/BlocksRuntime)
64+
endif()
65+

tools/SourceKit/CMakeLists.txt

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -92,67 +92,6 @@ include_directories(BEFORE
9292

9393
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
9494
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-
15695
set(SOURCEKIT_NEED_EXPLICIT_LIBDISPATCH TRUE)
15796
endif()
15897

0 commit comments

Comments
 (0)