From 3e9f66c6cae63332cb8c8ce82cbe3525df1ee1ce Mon Sep 17 00:00:00 2001 From: Alex Blewitt Date: Tue, 17 Jan 2017 18:31:15 +0000 Subject: [PATCH] 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 --- tools/SourceKit/CMakeLists.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tools/SourceKit/CMakeLists.txt b/tools/SourceKit/CMakeLists.txt index d97272e472f1f..318057183ee37 100644 --- a/tools/SourceKit/CMakeLists.txt +++ b/tools/SourceKit/CMakeLists.txt @@ -508,6 +508,24 @@ include_directories(BEFORE ) if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") + if(SWIFT_BUILD_SOURCEKIT) + add_custom_command( + OUTPUT "${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/libdispatch.so" + COMMAND autoreconf -fvi + 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}" + COMMAND /usr/bin/make + COMMAND /bin/mkdir -p ${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/ + COMMAND /bin/cp ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/.libs/libdispatch.so ${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/libdispatch.so + COMMAND /usr/bin/make distclean + WORKING_DIRECTORY ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} + COMMENT "Generating libdispatch.so" + USES_TERMINAL + ) + add_custom_target(needs-libdispatch + DEPENDS "${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/libdispatch.so" + ) + endif() + include_directories(AFTER ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}) add_library(dispatch SHARED IMPORTED)