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)
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(SWIFT_NEED_EXPLICIT_LIBDISPATCH)
  target_link_libraries(libSwiftSyntaxParser PRIVATE BlocksRuntime)
endif()

swift_install_in_component(parser-lib
  FILES "${SWIFT_LIBRARY_OUTPUT_INTDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${SYNTAX_PARSER_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
  PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
  DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}")
swift_install_in_component(parser-lib
  DIRECTORY "${SWIFT_MAIN_INCLUDE_DIR}/swift-c/SyntaxParser/"
  DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${SYNTAX_PARSER_LIB_NAME}")
