Skip to content

Commit 1b6de0c

Browse files
committed
[SourceKit] Add libdispatch as a dependency for some SourceKit products
sourcekitdInProc, sourcekitd-test, and complete-test need to be explicitly linked with libdispatch on Linux to build properly.
1 parent f52555e commit 1b6de0c

File tree

6 files changed

+35
-1
lines changed

6 files changed

+35
-1
lines changed

tools/SourceKit/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,5 +507,15 @@ include_directories(BEFORE
507507
${SOURCEKIT_SOURCE_DIR}/include
508508
)
509509

510+
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
511+
include_directories(AFTER ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE})
512+
513+
add_library(dispatch SHARED IMPORTED)
514+
set_target_properties(dispatch PROPERTIES
515+
IMPORTED_LOCATION ${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/libdispatch.so)
516+
517+
set(SOURCEKIT_NEED_EXPLICIT_LIBDISPATCH TRUE)
518+
endif()
519+
510520
add_subdirectory(lib)
511521
add_subdirectory(tools)

tools/SourceKit/lib/Support/CMakeLists.txt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,17 @@ if(APPLE)
1414
list(APPEND SourceKitSupport_sources ${SourceKitSupport_Darwin_sources})
1515
endif()
1616

17+
set(SOURCEKIT_SUPPORT_DEPEND swiftBasic clangBasic clangRewrite)
18+
if(SOURCEKIT_NEED_EXPLICIT_LIBDISPATCH)
19+
list(APPEND SOURCEKIT_SUPPORT_DEPEND dispatch)
20+
endif()
21+
22+
set(SOURCEKIT_SUPPORT_DEPEND swiftBasic clangBasic clangRewrite)
23+
if(SOURCEKIT_NEED_EXPLICIT_LIBDISPATCH)
24+
list(APPEND SOURCEKIT_SUPPORT_DEPEND dispatch BlocksRuntime)
25+
endif()
26+
1727
add_sourcekit_library(SourceKitSupport
1828
${SourceKitSupport_sources}
19-
DEPENDS swiftBasic clangBasic clangRewrite
29+
DEPENDS ${SOURCEKIT_SUPPORT_DEPEND}
2030
)

tools/SourceKit/tools/complete-test/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ else()
44
set(SOURCEKITD_TEST_DEPEND sourcekitd)
55
endif()
66

7+
if(SOURCEKIT_NEED_EXPLICIT_LIBDISPATCH)
8+
set(SOURCEKITD_TEST_DEPEND ${SOURCEKITD_TEST_DEPEND} dispatch)
9+
endif()
10+
711
add_sourcekit_executable(complete-test
812
complete-test.cpp
913
DEPENDS ${SOURCEKITD_TEST_DEPEND}

tools/SourceKit/tools/sourcekitd-test/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ else()
88
set(SOURCEKITD_TEST_DEPEND sourcekitd)
99
endif()
1010

11+
if(SOURCEKIT_NEED_EXPLICIT_LIBDISPATCH)
12+
set(SOURCEKITD_TEST_DEPEND ${SOURCEKITD_TEST_DEPEND} dispatch)
13+
endif()
14+
1115
add_sourcekit_executable(sourcekitd-test
1216
sourcekitd-test.cpp
1317
TestOptions.cpp

tools/SourceKit/tools/sourcekitd/bin/InProc/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ else()
2323
)
2424
endif()
2525

26+
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
27+
target_link_libraries(sourcekitdInProc PUBLIC BlocksRuntime)
28+
endif()
29+
2630
if (SOURCEKIT_BUILT_STANDALONE)
2731
# Create the symlinks necessary to find the swift runtime.
2832
add_custom_command(TARGET sourcekitdInProc PRE_BUILD

utils/build-script-impl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1910,6 +1910,8 @@ for host in "${ALL_HOSTS[@]}"; do
19101910
-DSWIFT_PATH_TO_LLVM_BUILD:PATH="${llvm_build_dir}"
19111911
-DSWIFT_PATH_TO_CMARK_SOURCE:PATH="${CMARK_SOURCE_DIR}"
19121912
-DSWIFT_PATH_TO_CMARK_BUILD:PATH="$(build_directory ${host} cmark)"
1913+
-DSWIFT_PATH_TO_LIBDISPATCH_SOURCE:PATH="${LIBDISPATCH_SOURCE_DIR}"
1914+
-DSWIFT_PATH_TO_LIBDISPATCH_BUILD:PATH="$(build_directory ${host} libdispatch)"
19131915
)
19141916

19151917
if [[ "${CMAKE_GENERATOR}" == "Xcode" ]] ; then

0 commit comments

Comments
 (0)