# All libraries in this directory tree are overlays that depend on Darwin SDK.

set(SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES)
if(SWIFT_BUILD_DYNAMIC_SDK_OVERLAY)
  list(APPEND SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES SHARED)
endif()
if(SWIFT_BUILD_STATIC_SDK_OVERLAY)
  list(APPEND SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES STATIC)
endif()

# Please keep this list sorted.
add_subdirectory(AppKit)
add_subdirectory(AssetsLibrary)
add_subdirectory(AVFoundation)
add_subdirectory(CallKit)
add_subdirectory(CloudKit)
add_subdirectory(Contacts)
add_subdirectory(CoreAudio)
add_subdirectory(CoreData)
add_subdirectory(CoreGraphics)
add_subdirectory(CoreImage)
add_subdirectory(CoreLocation)
add_subdirectory(CoreMedia)
add_subdirectory(CryptoTokenKit)
add_subdirectory(Dispatch)
add_subdirectory(Foundation)
add_subdirectory(GameplayKit)
add_subdirectory(GLKit)
add_subdirectory(HomeKit)
add_subdirectory(IOKit)
add_subdirectory(Intents)
add_subdirectory(MapKit)
add_subdirectory(ObjectiveC)
add_subdirectory(OpenCL)
add_subdirectory(os)
add_subdirectory(Photos)
add_subdirectory(QuartzCore)
add_subdirectory(SafariServices)
add_subdirectory(SceneKit)
add_subdirectory(simd)
add_subdirectory(SpriteKit)
add_subdirectory(UIKit)
add_subdirectory(WatchKit)
add_subdirectory(XCTest)
add_subdirectory(XPC)

