add_library(swiftSwiftOnoneSupport
  SwiftOnoneSupport.swift
  "${PROJECT_SOURCE_DIR}/linker-support/magic-symbols-for-install-name.c")

set_target_properties(swiftSwiftOnoneSupport PROPERTIES
 Swift_MODULE_NAME SwiftOnoneSupport)

if(APPLE AND BUILD_SHARED_LIBS)
  target_link_options(swiftSwiftOnoneSupport PRIVATE "SHELL:-Xlinker -headerpad_max_install_names")
endif()

target_compile_options(swiftSwiftOnoneSupport PRIVATE
  $<$<COMPILE_LANGUAGE:Swift>:-parse-stdlib>
  "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xllvm -sil-inline-generics=false>"

  # We have to disable validation of TBD files, because this module is
  # _explicitly_ special-cased to result in extra symbols generated by the
  # optimizer, meaning TBDGen can't (and shouldn't: it has to run
  # pre-optimization for performance) list them.
  # See also caa3dd4d291ec93c1a59f1db62604e703bff8468
  "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -validate-tbd-against-ir=none>"

  "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -check-onone-completeness>"
  "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -disable-access-control>")

target_compile_definitions(swiftSwiftOnoneSupport PRIVATE
  $<$<COMPILE_LANGUAGE:C,CXX>:-DSWIFT_TARGET_LIBRARY_NAME=swiftSwiftOnoneSupport>)

target_link_libraries(swiftSwiftOnoneSupport
  PRIVATE
    swiftShims
    swiftCore
    $<$<BOOL:${SwiftSwiftDirectRuntime_FOUND}>:swiftSwiftDirectRuntime>)

install(TARGETS swiftSwiftOnoneSupport
    EXPORT SwiftCoreTargets
    COMPONENT SwiftCore_runtime
    ARCHIVE DESTINATION "${SwiftCore_INSTALL_LIBDIR}"
    LIBRARY DESTINATION "${SwiftCore_INSTALL_LIBDIR}"
    RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
emit_swift_interface(swiftSwiftOnoneSupport)
install_swift_interface(swiftSwiftOnoneSupport)

# Configure plist creation for Darwin platforms.
generate_plist(swiftSwiftOnoneSupport "${CMAKE_PROJECT_VERSION}" swiftSwiftOnoneSupport)
embed_manifest(swiftSwiftOnoneSupport)
