Files
swift-mirror/tools/libSwiftSyntaxParser/CMakeLists.txt
Saleem Abdulrasool 6009dcb5e5 build: improve _InternalSwiftSyntaxParser installation
Use the `TARGETS` form of `install` to avoid having to spell out the
location and file name to install.  Additionally, setup the installation
rules to work better for Windows by listing install locations for the
archive (static library) form (which includes the import library on
Windows), library form (which is the Unix library), and the runtime
component (the .dll on Windows).
2020-12-25 09:46:36 -08:00

61 lines
2.4 KiB
CMake

include(SwiftWindowsSupport)
swift_swap_compiler_if_needed("SwiftSyntaxParser")
# Use an 'internal' name, this is primarily intended for SwiftSyntax to import.
set(SYNTAX_PARSER_LIB_NAME "_InternalSwiftSyntaxParser")
set(LLVM_EXPORTED_SYMBOL_FILE
${CMAKE_CURRENT_SOURCE_DIR}/libSwiftSyntaxParser.exports)
add_swift_host_library(libSwiftSyntaxParser SHARED
c-include-check.c
libSwiftSyntaxParser.cpp)
if(NOT SWIFT_BUILT_STANDALONE AND NOT CMAKE_C_COMPILER_ID MATCHES Clang)
add_dependencies(libSwiftSyntaxParser clang)
endif()
target_link_libraries(libSwiftSyntaxParser PRIVATE
swiftParse)
set_target_properties(libSwiftSyntaxParser
PROPERTIES
OUTPUT_NAME ${SYNTAX_PARSER_LIB_NAME})
add_llvm_symbol_exports(libSwiftSyntaxParser ${LLVM_EXPORTED_SYMBOL_FILE})
# Adds -dead_strip option
add_link_opts(libSwiftSyntaxParser)
if (SWIFT_LIBPARSER_VER)
set(SWIFTSYNTAX_PARSER_VERSION_STRING "${SWIFT_LIBPARSER_VER}")
else()
set(SWIFTSYNTAX_PARSER_VERSION_STRING "${SWIFT_COMPILER_VERSION}")
endif()
if(SWIFTSYNTAX_PARSER_VERSION_STRING)
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
set(LIBPARSER_LINK_FLAGS " -Wl,-compatibility_version -Wl,1")
set(LIBPARSER_LINK_FLAGS "${LIBPARSER_LINK_FLAGS} -Wl,-current_version -Wl,${SWIFTSYNTAX_PARSER_VERSION_STRING}")
set_property(TARGET libSwiftSyntaxParser APPEND_STRING PROPERTY
LINK_FLAGS ${LIBPARSER_LINK_FLAGS})
else()
set_target_properties(libSwiftSyntaxParser
PROPERTIES
VERSION ${SWIFTSYNTAX_PARSER_VERSION_STRING})
endif()
endif()
set_property(TARGET libSwiftSyntaxParser APPEND_STRING PROPERTY
COMPILE_FLAGS " -fblocks")
if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
target_link_libraries(libSwiftSyntaxParser PRIVATE
BlocksRuntime)
endif()
add_dependencies(parser-lib libSwiftSyntaxParser)
swift_install_in_component(TARGETS libSwiftSyntaxParser
ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}" COMPONENT parser-lib
LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}" COMPONENT parser-lib
RUNTIME DESTINATION "bin" COMPONENT parser-lib)
swift_install_in_component(DIRECTORY "${SWIFT_MAIN_INCLUDE_DIR}/swift-c/SyntaxParser/"
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${SYNTAX_PARSER_LIB_NAME}"
COMPONENT parser-lib)