Skip to content

Commit 6169a64

Browse files
committed
Add static library configuration for _InternalSwiftSyntaxParser
When building command line tools that depend on SwiftSyntax, statically linking this library can be preferred to produce a more portable binary that doesn't directly depend on the system installation. Currently you can achieve this benefit by shipping the dylib with your tool, and editing the rpaths to prefer yours, but that's a lot of trouble.
1 parent a34b52c commit 6169a64

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

tools/libSwiftSyntaxParser/CMakeLists.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,24 @@ set(LLVM_EXPORTED_SYMBOL_FILE
1010
add_swift_host_library(libSwiftSyntaxParser SHARED
1111
c-include-check.c
1212
libSwiftSyntaxParser.cpp)
13+
14+
add_swift_host_library(libSwiftSyntaxParserStatic STATIC
15+
libSwiftSyntaxParser.cpp)
16+
1317
if(NOT SWIFT_BUILT_STANDALONE AND NOT CMAKE_C_COMPILER_ID MATCHES Clang)
1418
add_dependencies(libSwiftSyntaxParser clang)
19+
add_dependencies(libSwiftSyntaxParserStatic clang)
1520
endif()
1621
target_link_libraries(libSwiftSyntaxParser PRIVATE
1722
swiftParse)
23+
target_link_libraries(libSwiftSyntaxParserStatic PRIVATE
24+
swiftParse)
1825
set_target_properties(libSwiftSyntaxParser
1926
PROPERTIES
2027
OUTPUT_NAME ${SYNTAX_PARSER_LIB_NAME})
28+
set_target_properties(libSwiftSyntaxParserStatic
29+
PROPERTIES
30+
OUTPUT_NAME ${SYNTAX_PARSER_LIB_NAME})
2131

2232
add_llvm_symbol_exports(libSwiftSyntaxParser ${LLVM_EXPORTED_SYMBOL_FILE})
2333

@@ -45,16 +55,25 @@ endif()
4555

4656
set_property(TARGET libSwiftSyntaxParser APPEND_STRING PROPERTY
4757
COMPILE_FLAGS " -fblocks")
58+
set_property(TARGET libSwiftSyntaxParserStatic APPEND_STRING PROPERTY
59+
COMPILE_FLAGS " -fblocks")
4860
if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
4961
target_link_libraries(libSwiftSyntaxParser PRIVATE
5062
BlocksRuntime)
63+
target_link_libraries(libSwiftSyntaxParserStatic PRIVATE
64+
BlocksRuntime)
5165
endif()
5266

5367
add_dependencies(parser-lib libSwiftSyntaxParser)
68+
add_dependencies(parser-lib libSwiftSyntaxParserStatic)
5469
swift_install_in_component(TARGETS libSwiftSyntaxParser
5570
ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}" COMPONENT parser-lib
5671
LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}" COMPONENT parser-lib
5772
RUNTIME DESTINATION "bin" COMPONENT parser-lib)
73+
swift_install_in_component(TARGETS libSwiftSyntaxParserStatic
74+
ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}" COMPONENT parser-lib
75+
LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}" COMPONENT parser-lib
76+
RUNTIME DESTINATION "bin" COMPONENT parser-lib)
5877
swift_install_in_component(DIRECTORY "${SWIFT_MAIN_INCLUDE_DIR}/swift-c/SyntaxParser/"
5978
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${SYNTAX_PARSER_LIB_NAME}"
6079
COMPONENT parser-lib)

0 commit comments

Comments
 (0)