Skip to content

Commit 3e9f66c

Browse files
committed
Enable sourcekitd to be built by default on Linux
The Linux build has a dependency on the libdispatch library, which is needed by the various native libraries for sourcekitd. On macOS, the dependency for libdispatch is satisfied directly through the base OS, but on Linux no such dependency exists. Modify this so that if the SourceKit library is built, and the libdispatch library is already present, then we shell out to make the libdispatch binary project when the SourceKit is built. Issue: SR-1676
1 parent db32af7 commit 3e9f66c

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

tools/SourceKit/CMakeLists.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,24 @@ include_directories(BEFORE
508508
)
509509

510510
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
511+
if(SWIFT_BUILD_SOURCEKIT)
512+
add_custom_command(
513+
OUTPUT "${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/libdispatch.so"
514+
COMMAND autoreconf -fvi
515+
COMMAND /usr/bin/env "CC=${PATH_TO_CLANG_BUILD}/bin/clang" "CXX=${PATH_TO_CLANG_BUILD}/bin/clang++" ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/configure --prefix="${CMAKE_INSTALL_PREFIX}"
516+
COMMAND /usr/bin/make
517+
COMMAND /bin/mkdir -p ${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/
518+
COMMAND /bin/cp ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/.libs/libdispatch.so ${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/libdispatch.so
519+
COMMAND /usr/bin/make distclean
520+
WORKING_DIRECTORY ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}
521+
COMMENT "Generating libdispatch.so"
522+
USES_TERMINAL
523+
)
524+
add_custom_target(needs-libdispatch
525+
DEPENDS "${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/libdispatch.so"
526+
)
527+
endif()
528+
511529
include_directories(AFTER ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE})
512530

513531
add_library(dispatch SHARED IMPORTED)

0 commit comments

Comments
 (0)