Skip to content

Commit 620c796

Browse files
authored
Merge pull request swiftlang#23594 from compnerd/syntactically-correct
Enable SwiftSynax/Parser globally
2 parents 181e5d5 + d1ba150 commit 620c796

File tree

6 files changed

+40
-42
lines changed

6 files changed

+40
-42
lines changed

CMakeLists.txt

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -409,30 +409,13 @@ if(MSVC OR "${CMAKE_SIMULATE_ID}" STREQUAL MSVC)
409409
include(ClangClCompileRules)
410410
endif()
411411

412-
precondition(CMAKE_SYSTEM_NAME)
413-
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
412+
if(CMAKE_SYSTEM_NAME STREQUAL Darwin OR
413+
EXISTS ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE})
414414
set(SWIFT_BUILD_SYNTAXPARSERLIB_default TRUE)
415415
set(SWIFT_BUILD_SOURCEKIT_default TRUE)
416-
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
417-
if(EXISTS ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE})
418-
set(SWIFT_BUILD_SYNTAXPARSERLIB_default TRUE)
419-
set(SWIFT_BUILD_SOURCEKIT_default TRUE)
420-
else()
421-
set(SWIFT_BUILD_SYNTAXPARSERLIB_default FALSE)
422-
set(SWIFT_BUILD_SOURCEKIT_default FALSE)
423-
endif()
424-
elseif(CMAKE_SYSTEM_NAME STREQUAL Windows)
425-
if(EXISTS ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} AND
426-
CMAKE_CXX_COMPILER_ID STREQUAL Clang)
427-
set(SWIFT_BUILD_SYNTAXPARSERLIB_default TRUE)
428-
set(SWIFT_BUILD_SOURCEKIT_default TRUE)
429-
else()
430-
set(SWIFT_BUILD_SYNTAXPARSERLIB_default FALSE)
431-
set(SWIFT_BUILD_SOURCEKIT_default FALSE)
432-
endif()
433416
else()
434-
set(SWIFT_BUILD_SYNTAXPARSERLIB_default FALSE)
435-
set(SWIFT_BUILD_SOURCEKIT_default FALSE)
417+
set(SWIFT_BUILD_SYNTAXPARSERLIB_default FALSE)
418+
set(SWIFT_BUILD_SOURCEKIT_default FALSE)
436419
endif()
437420
option(SWIFT_BUILD_SYNTAXPARSERLIB
438421
"Build the Swift Syntax Parser library"

cmake/modules/SwiftWindowsSupport.cmake

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,28 @@ function(swift_windows_cache_VCVARS)
8080
set(UCRTVersion $ENV{UCRTVersion} CACHE STRING "")
8181
endfunction()
8282

83+
# NOTE(compnerd) we use a macro here as this modifies global variables
84+
macro(swift_swap_compiler_if_needed target)
85+
if(NOT CMAKE_C_COMPILER_ID MATCHES Clang)
86+
if(CMAKE_SYSTEM_NAME STREQUAL CMAKE_HOST_SYSTEM_NAME)
87+
get_target_property(CLANG_LOCATION clang LOCATION)
88+
get_filename_component(CLANG_LOCATION ${CLANG_LOCATION} DIRECTORY)
89+
90+
if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC" OR
91+
"${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC")
92+
set(CMAKE_C_COMPILER
93+
${CLANG_LOCATION}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
94+
set(CMAKE_CXX_COMPILER
95+
${CLANG_LOCATION}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
96+
else()
97+
set(CMAKE_C_COMPILER
98+
${CLANG_LOCATION}/clang${CMAKE_EXECUTABLE_SUFFIX})
99+
set(CMAKE_CXX_COMPILER
100+
${CLANG_LOCATION}/clang++${CMAKE_EXECUTABLE_SUFFIX})
101+
endif()
102+
else()
103+
message(SEND_ERROR "${target} requires a clang based compiler")
104+
endif()
105+
endif()
106+
endmacro()
107+

tools/SourceKit/CMakeLists.txt

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,8 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
88
message(SEND_ERROR "SourceKit cannot be built standalone")
99
endif()
1010

11-
if(NOT CMAKE_C_COMPILER_ID MATCHES Clang)
12-
if(CMAKE_SYSTEM_NAME STREQUAL CMAKE_HOST_SYSTEM_NAME)
13-
get_target_property(CLANG_LOCATION clang LOCATION)
14-
get_filename_component(CLANG_LOCATION ${CLANG_LOCATION} DIRECTORY)
15-
16-
if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC" OR
17-
"${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC")
18-
set(CMAKE_C_COMPILER
19-
${CLANG_LOCATION}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
20-
set(CMAKE_CXX_COMPILER
21-
${CLANG_LOCATION}/clang-cl${CMAKE_EXECUTABLE_SUFFIX})
22-
else()
23-
set(CMAKE_C_COMPILER
24-
${CLANG_LOCATION}/clang${CMAKE_EXECUTABLE_SUFFIX})
25-
set(CMAKE_CXX_COMPILER
26-
${CLANG_LOCATION}/clang++${CMAKE_EXECUTABLE_SUFFIX})
27-
endif()
28-
else()
29-
message(SEND_ERROR "SourceKit requires a clang based compiler")
30-
endif()
31-
endif()
11+
include(SwiftWindowsSupport)
12+
swift_swap_compiler_if_needed("SourceKit")
3213

3314
if (DARWIN_TOOLCHAIN_VERSION)
3415
set(SOURCEKIT_VERSION_STRING "${DARWIN_TOOLCHAIN_VERSION}")

tools/libSwiftSyntaxParser/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
include(SwiftWindowsSupport)
2+
swift_swap_compiler_if_needed("SwiftSyntaxParser")
3+
14
# Use an 'internal' name, this is primarily intended for SwiftSyntax to import.
25
set(SYNTAX_PARSER_LIB_NAME "_InternalSwiftSyntaxParser")
36

tools/swift-syntax-parser-test/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
include(SwiftWindowsSupport)
2+
swift_swap_compiler_if_needed("SwiftSyntaxParserTest")
3+
14
add_swift_host_tool(swift-syntax-parser-test
25
swift-syntax-parser-test.cpp
36
LLVM_COMPONENT_DEPENDS

unittests/SyntaxParser/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
include(SwiftWindowsSupport)
2+
swift_swap_compiler_if_needed("SyntaxParserUnitTests")
3+
14
add_swift_unittest(SwiftSyntaxParserTests
25
SyntaxParserTests.cpp
36
)

0 commit comments

Comments
 (0)