Skip to content

Commit dc25c6b

Browse files
authored
Merge pull request #5903 from alblue/SR-1676
Enable SourceKit building by default on Linux
2 parents 33ed767 + 7159f6a commit dc25c6b

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

CMakeLists.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,8 +302,14 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "")
302302
endif()
303303
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
304304
set(SWIFT_BUILD_SOURCEKIT_default TRUE)
305+
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
306+
if(EXISTS ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE})
307+
set(SWIFT_BUILD_SOURCEKIT_default TRUE)
308+
else()
309+
set(SWIFT_BUILD_SOURCEKIT_default FALSE)
310+
endif()
305311
else()
306-
set(SWIFT_BUILD_SOURCEKIT_default FALSE)
312+
set(SWIFT_BUILD_SOURCEKIT_default FALSE)
307313
endif()
308314
option(SWIFT_BUILD_SOURCEKIT
309315
"Build SourceKit"

tools/SourceKit/CMakeLists.txt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,10 @@ macro(add_sourcekit_library name)
200200
endif()
201201
endif()
202202

203+
if(SWIFT_BUILD_SOURCEKIT AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
204+
add_dependencies(${name} needs-libdispatch)
205+
endif()
206+
203207
if("${SOURCEKITLIB_INSTALL_IN_COMPONENT}" STREQUAL "")
204208
if(SOURCEKITLIB_SHARED)
205209
set(SOURCEKITLIB_INSTALL_IN_COMPONENT tools)
@@ -508,6 +512,24 @@ include_directories(BEFORE
508512
)
509513

510514
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
515+
if(SWIFT_BUILD_SOURCEKIT)
516+
add_custom_command(
517+
OUTPUT "${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/libdispatch.so"
518+
COMMAND /bin/sh ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/autogen.sh
519+
COMMAND /bin/sh ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/configure
520+
COMMAND /usr/bin/make
521+
COMMAND /bin/mkdir -p ${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/
522+
COMMAND /bin/cp ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/.libs/libdispatch.so ${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/libdispatch.so
523+
COMMAND /usr/bin/make distclean
524+
WORKING_DIRECTORY ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}
525+
COMMENT "Generating libdispatch.so"
526+
USES_TERMINAL
527+
)
528+
add_custom_target(needs-libdispatch
529+
DEPENDS "${SWIFT_PATH_TO_LIBDISPATCH_BUILD}/src/.libs/libdispatch.so"
530+
)
531+
endif()
532+
511533
include_directories(AFTER ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE})
512534

513535
add_library(dispatch SHARED IMPORTED)

0 commit comments

Comments
 (0)