Skip to content

Generate overlay dependencies with utils/find-overlay-dependencies.sh #5017

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 27, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions stdlib/public/SDK/AVFoundation/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ add_swift_library(swiftAVFoundation ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_
TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR
SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
SWIFT_MODULE_DEPENDS Foundation CoreMedia QuartzCore
SWIFT_MODULE_DEPENDS_OSX AppKit
SWIFT_MODULE_DEPENDS Foundation CoreMedia
Copy link
Contributor

@jrose-apple jrose-apple Sep 26, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we drop the non-OS-specific lines now that it's explicit for every OS?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could go either way on it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, this is used all over in stdlib/private and I'm only changing the public directory for now.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like the lines should either be autogenerated (and have a comment saying such) or should contain manual dependencies. Doing both is odd.

SWIFT_MODULE_DEPENDS_OSX AppKit CoreAudio CoreData CoreGraphics CoreImage CoreMedia Dispatch Foundation IOKit ObjectiveC os QuartzCore XPC
SWIFT_MODULE_DEPENDS_IOS CoreAudio CoreGraphics CoreMedia Dispatch Foundation ObjectiveC os QuartzCore
SWIFT_MODULE_DEPENDS_TVOS CoreAudio CoreGraphics CoreMedia Dispatch Foundation ObjectiveC os QuartzCore
FRAMEWORK_DEPENDS AVFoundation)
1 change: 1 addition & 0 deletions stdlib/public/SDK/AssetsLibrary/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ add_swift_library(swiftAssetsLibrary ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS IOS IOS_SIMULATOR
SWIFT_MODULE_DEPENDS ObjectiveC Foundation CoreGraphics
SWIFT_MODULE_DEPENDS_IOS CoreGraphics Dispatch Foundation ObjectiveC os
FRAMEWORK_DEPENDS AssetsLibrary)

1 change: 1 addition & 0 deletions stdlib/public/SDK/CallKit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ add_swift_library(swiftCallKit ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_O
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS IOS IOS_SIMULATOR
SWIFT_MODULE_DEPENDS Foundation
SWIFT_MODULE_DEPENDS_IOS Dispatch Foundation ObjectiveC os
FRAMEWORK_DEPENDS_WEAK CallKit)
6 changes: 4 additions & 2 deletions stdlib/public/SDK/CloudKit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ add_swift_library(swiftCloudKit ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
SWIFT_MODULE_DEPENDS Foundation CoreLocation
SWIFT_MODULE_DEPENDS_OSX Contacts
SWIFT_MODULE_DEPENDS_IOS Contacts
SWIFT_MODULE_DEPENDS_OSX Contacts CoreGraphics CoreLocation Dispatch Foundation IOKit ObjectiveC os
SWIFT_MODULE_DEPENDS_IOS Contacts CoreLocation Dispatch Foundation ObjectiveC os
SWIFT_MODULE_DEPENDS_TVOS CoreLocation Dispatch Foundation ObjectiveC os
SWIFT_MODULE_DEPENDS_WATCHOS CoreLocation Dispatch Foundation ObjectiveC os
FRAMEWORK_DEPENDS_WEAK CloudKit)
2 changes: 2 additions & 0 deletions stdlib/public/SDK/Contacts/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@ add_swift_library(swiftContacts ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS OSX IOS IOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
SWIFT_MODULE_DEPENDS Foundation
SWIFT_MODULE_DEPENDS_IOS Dispatch Foundation ObjectiveC os
SWIFT_MODULE_DEPENDS_WATCHOS Dispatch Foundation ObjectiveC os
FRAMEWORK_DEPENDS_WEAK Contacts)
5 changes: 4 additions & 1 deletion stdlib/public/SDK/CoreAudio/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ add_swift_library(swiftCoreAudio ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
SWIFT_MODULE_DEPENDS Dispatch
SWIFT_MODULE_DEPENDS_OSX IOKit
SWIFT_MODULE_DEPENDS_OSX Dispatch ObjectiveC os
SWIFT_MODULE_DEPENDS_IOS Dispatch ObjectiveC os
SWIFT_MODULE_DEPENDS_TVOS Dispatch ObjectiveC os
SWIFT_MODULE_DEPENDS_WATCHOS Dispatch ObjectiveC os
# Also depends on: CoreFoundation
FRAMEWORK_DEPENDS CoreAudio)

2 changes: 1 addition & 1 deletion stdlib/public/SDK/CoreGraphics/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ add_swift_library(swiftCoreGraphics ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_
SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
SWIFT_MODULE_DEPENDS ObjectiveC Dispatch Darwin
SWIFT_MODULE_DEPENDS_OSX IOKit XPC
SWIFT_MODULE_DEPENDS_OSX Dispatch IOKit ObjectiveC os
Copy link
Contributor

@jrose-apple jrose-apple Sep 26, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one should probably have _IOS, _TVOS, _WATCHOS entries too. Maybe the script should complain if there's no entry for a particular SDK.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am going off of the TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR lines in the CMakeLists.txt files for each overlay. CoreGraphics doesn't have a TARGET_SDKS line so I'm reluctant to add more platforms. I'm just refactoring--someone who knows which platforms each supports should do it. (Or I can, if I learn how to tell which overlays support which platforms).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A lack of TARGET_SDKS means all four Apple platforms (plus simulators).

FRAMEWORK_DEPENDS CoreGraphics)

4 changes: 2 additions & 2 deletions stdlib/public/SDK/CoreImage/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ add_swift_library(swiftCoreImage ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR
SWIFT_MODULE_DEPENDS Foundation ObjectiveC
SWIFT_MODULE_DEPENDS_IOS CoreMedia
SWIFT_MODULE_DEPENDS_TVOS CoreMedia
SWIFT_MODULE_DEPENDS_IOS CoreGraphics Dispatch Foundation ObjectiveC os
SWIFT_MODULE_DEPENDS_TVOS CoreGraphics Dispatch Foundation ObjectiveC os
FRAMEWORK_DEPENDS_OSX QuartzCore
FRAMEWORK_DEPENDS_IOS_TVOS CoreImage)

4 changes: 3 additions & 1 deletion stdlib/public/SDK/CoreMedia/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ add_swift_library(swiftCoreMedia ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR
SWIFT_MODULE_DEPENDS Dispatch CoreAudio CoreGraphics Foundation
SWIFT_MODULE_DEPENDS_OSX AppKit
SWIFT_MODULE_DEPENDS_OSX AppKit CoreAudio CoreData CoreGraphics CoreImage Dispatch Foundation IOKit ObjectiveC os QuartzCore XPC
SWIFT_MODULE_DEPENDS_IOS CoreAudio CoreGraphics Dispatch Foundation ObjectiveC os
SWIFT_MODULE_DEPENDS_TVOS CoreAudio CoreGraphics Dispatch Foundation ObjectiveC os
FRAMEWORK_DEPENDS CoreMedia)

2 changes: 1 addition & 1 deletion stdlib/public/SDK/Foundation/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,6 @@ add_swift_library(swiftFoundation ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SD
SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
SWIFT_MODULE_DEPENDS ObjectiveC CoreGraphics Dispatch os
SWIFT_MODULE_DEPENDS_OSX XPC
SWIFT_MODULE_DEPENDS_OSX CoreGraphics Dispatch IOKit ObjectiveC os
FRAMEWORK_DEPENDS Foundation)

6 changes: 3 additions & 3 deletions stdlib/public/SDK/GLKit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ add_swift_library(swiftGLKit ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_OVE
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR
SWIFT_MODULE_DEPENDS Foundation simd
SWIFT_MODULE_DEPENDS_OSX AppKit
SWIFT_MODULE_DEPENDS_IOS UIKit
SWIFT_MODULE_DEPENDS_TVOS UIKit
SWIFT_MODULE_DEPENDS_OSX AppKit CoreData CoreGraphics CoreImage Dispatch Foundation IOKit ObjectiveC os QuartzCore simd XPC
SWIFT_MODULE_DEPENDS_IOS CoreGraphics CoreImage Dispatch Foundation ObjectiveC os QuartzCore simd UIKit
SWIFT_MODULE_DEPENDS_TVOS CoreGraphics CoreImage Dispatch Foundation ObjectiveC os QuartzCore simd UIKit
FRAMEWORK_DEPENDS GLKit)

6 changes: 3 additions & 3 deletions stdlib/public/SDK/GameplayKit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ add_swift_library(swiftGameplayKit ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_S
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR
SWIFT_MODULE_DEPENDS Foundation simd GLKit SpriteKit
SWIFT_MODULE_DEPENDS_OSX AppKit
SWIFT_MODULE_DEPENDS_IOS UIKit
SWIFT_MODULE_DEPENDS_TVOS UIKit
SWIFT_MODULE_DEPENDS_OSX AppKit CoreData CoreGraphics CoreImage Dispatch Foundation GLKit IOKit ObjectiveC os QuartzCore simd SpriteKit XPC
SWIFT_MODULE_DEPENDS_IOS CoreGraphics CoreImage Dispatch Foundation GLKit ObjectiveC os QuartzCore simd SpriteKit UIKit
SWIFT_MODULE_DEPENDS_TVOS CoreGraphics CoreImage Dispatch Foundation GLKit ObjectiveC os QuartzCore simd SpriteKit UIKit
FRAMEWORK_DEPENDS_WEAK GameplayKit)
6 changes: 3 additions & 3 deletions stdlib/public/SDK/HomeKit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ add_swift_library(swiftHomeKit ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_O
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
SWIFT_MODULE_DEPENDS Foundation
SWIFT_MODULE_DEPENDS_IOS UIKit
SWIFT_MODULE_DEPENDS_TVOS UIKit
SWIFT_MODULE_DEPENDS_WATCHOS UIKit
SWIFT_MODULE_DEPENDS_IOS CoreGraphics CoreImage Dispatch Foundation ObjectiveC os QuartzCore UIKit
SWIFT_MODULE_DEPENDS_TVOS CoreGraphics CoreImage Dispatch Foundation ObjectiveC os QuartzCore UIKit
SWIFT_MODULE_DEPENDS_WATCHOS CoreGraphics Dispatch Foundation ObjectiveC os
FRAMEWORK_DEPENDS_WEAK HomeKit)
4 changes: 2 additions & 2 deletions stdlib/public/SDK/Intents/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ add_swift_library(swiftIntents ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_O
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS OSX IOS IOS_SIMULATOR
SWIFT_MODULE_DEPENDS Foundation CoreLocation
SWIFT_MODULE_DEPENDS_OSX AppKit
SWIFT_MODULE_DEPENDS_IOS UIKit
SWIFT_MODULE_DEPENDS_OSX CoreGraphics CoreLocation Dispatch Foundation IOKit ObjectiveC os
SWIFT_MODULE_DEPENDS_IOS CoreLocation Dispatch Foundation ObjectiveC os
FRAMEWORK_DEPENDS_WEAK Intents)
6 changes: 3 additions & 3 deletions stdlib/public/SDK/MapKit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ add_swift_library(swiftMapKit ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_OV
SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
SWIFT_MODULE_DEPENDS ObjectiveC Foundation CoreLocation
SWIFT_MODULE_DEPENDS_IOS QuartzCore CoreImage UIKit
SWIFT_MODULE_DEPENDS_OSX QuartzCore CoreImage AppKit
SWIFT_MODULE_DEPENDS_TVOS QuartzCore CoreImage UIKit
SWIFT_MODULE_DEPENDS_IOS CoreGraphics CoreImage CoreLocation Dispatch Foundation ObjectiveC os QuartzCore UIKit
SWIFT_MODULE_DEPENDS_OSX AppKit CoreData CoreGraphics CoreImage CoreLocation Dispatch Foundation IOKit ObjectiveC os QuartzCore XPC
SWIFT_MODULE_DEPENDS_TVOS CoreGraphics CoreImage CoreLocation Dispatch Foundation ObjectiveC os QuartzCore UIKit
FRAMEWORK_DEPENDS MapKit)

4 changes: 2 additions & 2 deletions stdlib/public/SDK/Photos/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ add_swift_library(swiftPhotos ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_OV
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR
SWIFT_MODULE_DEPENDS Foundation CoreLocation CoreImage CoreMedia
SWIFT_MODULE_DEPENDS_IOS UIKit AVFoundation
SWIFT_MODULE_DEPENDS_TVOS UIKit AVFoundation
SWIFT_MODULE_DEPENDS_IOS AVFoundation CoreAudio CoreGraphics CoreImage CoreLocation CoreMedia Dispatch Foundation ObjectiveC os QuartzCore UIKit
SWIFT_MODULE_DEPENDS_TVOS AVFoundation CoreAudio CoreGraphics CoreImage CoreLocation CoreMedia Dispatch Foundation ObjectiveC os QuartzCore UIKit
FRAMEWORK_DEPENDS Photos)

4 changes: 3 additions & 1 deletion stdlib/public/SDK/QuartzCore/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ add_swift_library(swiftQuartzCore ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SD
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR
SWIFT_MODULE_DEPENDS ObjectiveC Foundation CoreGraphics
SWIFT_MODULE_DEPENDS_OSX CoreImage
SWIFT_MODULE_DEPENDS_OSX CoreGraphics CoreImage Dispatch Foundation IOKit ObjectiveC os XPC
SWIFT_MODULE_DEPENDS_IOS CoreGraphics Dispatch Foundation ObjectiveC os
SWIFT_MODULE_DEPENDS_TVOS CoreGraphics Dispatch Foundation ObjectiveC os
FRAMEWORK_DEPENDS QuartzCore)


13 changes: 4 additions & 9 deletions stdlib/public/SDK/SceneKit/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,19 +1,14 @@
SET(SWIFT_SCENEKIT_DEPENDENCIES_NON_WATCHOS
Foundation
GLKit
simd
CoreImage)

add_swift_library(swiftSceneKit ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
SceneKit.swift.gyb
Thunks.mm

SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
SWIFT_MODULE_DEPENDS_OSX ${SWIFT_SCENEKIT_DEPENDENCIES_NON_WATCHOS} AppKit
SWIFT_MODULE_DEPENDS_IOS ${SWIFT_SCENEKIT_DEPENDENCIES_NON_WATCHOS} UIKit
SWIFT_MODULE_DEPENDS_TVOS ${SWIFT_SCENEKIT_DEPENDENCIES_NON_WATCHOS} UIKit
SWIFT_MODULE_DEPENDS_OSX AppKit CoreData CoreGraphics CoreImage Dispatch Foundation GLKit IOKit ObjectiveC os QuartzCore simd XPC
SWIFT_MODULE_DEPENDS_IOS CoreGraphics CoreImage Dispatch Foundation GLKit ObjectiveC os QuartzCore simd UIKit
SWIFT_MODULE_DEPENDS_TVOS CoreGraphics CoreImage Dispatch Foundation GLKit ObjectiveC os QuartzCore simd UIKit
SWIFT_MODULE_DEPENDS_WATCHOS CoreGraphics Dispatch Foundation ObjectiveC os simd
SWIFT_MODULE_DEPENDS Foundation simd
FRAMEWORK_DEPENDS_WEAK SceneKit)

8 changes: 4 additions & 4 deletions stdlib/public/SDK/SpriteKit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ add_swift_library(swiftSpriteKit ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
SWIFT_MODULE_DEPENDS Foundation simd
SWIFT_MODULE_DEPENDS_OSX AppKit GLKit
SWIFT_MODULE_DEPENDS_IOS UIKit GLKit
SWIFT_MODULE_DEPENDS_TVOS UIKit GLKit
SWIFT_MODULE_DEPENDS_WATCHOS UIKit
SWIFT_MODULE_DEPENDS_OSX AppKit CoreData CoreGraphics CoreImage Dispatch Foundation GLKit IOKit ObjectiveC os QuartzCore simd XPC
SWIFT_MODULE_DEPENDS_IOS CoreGraphics CoreImage Dispatch Foundation GLKit ObjectiveC os QuartzCore simd UIKit
SWIFT_MODULE_DEPENDS_TVOS CoreGraphics CoreImage Dispatch Foundation GLKit ObjectiveC os QuartzCore simd UIKit
SWIFT_MODULE_DEPENDS_WATCHOS CoreGraphics Dispatch Foundation ObjectiveC os simd UIKit
FRAMEWORK_DEPENDS SpriteKit)

5 changes: 3 additions & 2 deletions stdlib/public/SDK/UIKit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ add_swift_library(swiftUIKit ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_OVE
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
SWIFT_MODULE_DEPENDS ObjectiveC Foundation
SWIFT_MODULE_DEPENDS_IOS CoreImage QuartzCore
SWIFT_MODULE_DEPENDS_TVOS CoreImage QuartzCore
SWIFT_MODULE_DEPENDS_IOS CoreGraphics CoreImage Dispatch Foundation ObjectiveC os QuartzCore
SWIFT_MODULE_DEPENDS_TVOS CoreGraphics CoreImage Dispatch Foundation ObjectiveC os QuartzCore
SWIFT_MODULE_DEPENDS_WATCHOS CoreGraphics Dispatch Foundation ObjectiveC os
SWIFT_COMPILE_FLAGS_WATCHOS -Xfrontend -disable-autolink-framework -Xfrontend CoreText
FRAMEWORK_DEPENDS UIKit)

3 changes: 2 additions & 1 deletion stdlib/public/SDK/WatchKit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ add_swift_library(swiftWatchKit ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
TARGET_SDKS IOS IOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
SWIFT_MODULE_DEPENDS Foundation UIKit CoreGraphics MapKit
SWIFT_MODULE_DEPENDS_WATCHOS HomeKit SceneKit
SWIFT_MODULE_DEPENDS_IOS CoreGraphics CoreImage CoreLocation Dispatch Foundation MapKit ObjectiveC os QuartzCore UIKit
SWIFT_MODULE_DEPENDS_WATCHOS CoreGraphics CoreLocation Dispatch Foundation HomeKit MapKit ObjectiveC os SceneKit simd UIKit
FRAMEWORK_DEPENDS_WEAK WatchKit
SWIFT_COMPILE_FLAGS_WATCHOS -Xfrontend -disable-autolink-framework -Xfrontend CoreText
)
3 changes: 2 additions & 1 deletion stdlib/public/SDK/os/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ add_swift_library(swiftos ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_OVERLA
SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
SWIFT_MODULE_DEPENDS ObjectiveC Dispatch
SWIFT_MODULE_DEPENDS_OSX XPC)
SWIFT_MODULE_DEPENDS_OSX Dispatch ObjectiveC XPC
)
33 changes: 33 additions & 0 deletions utils/find-overlay-dependencies-loop.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash
#===--- find-overlay-dependencies-loop.sh - driver for find-overlay-dependency.sh---===#
#
## This source file is part of the Swift.org open source project
##
## Copyright (c) 2016 Apple Inc. and the Swift project authors
## Licensed under Apache License v2.0 with Runtime Library Exception
##
## See http://swift.org/LICENSE.txt for license information
## See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
#
#===------------------------------------------------------------------------===#

SCRIPT="$(dirname "$0")/find-overlay-dependencies.sh"

# `update` edits the cmake file in-place; `print` just prints to console
function usage() {
echo 'usage:' $0 'update|print' >&2
exit 1
}

case $# in
1) if [[ $1 != 'update' && $1 != 'print' ]]; then
usage
fi ;;
*)
usage ;;
esac

# Don't update XCTest
for overlay in $(find ./stdlib/public/SDK/ -depth 1 -type d ! -name XCTest -exec basename \{\} \;); do
$SCRIPT $overlay $1
done
51 changes: 41 additions & 10 deletions utils/find-overlay-dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,39 +14,70 @@
# This script uses zsh for its associative array support, because it is only
# intended to be run on macOS and macOS bash is very old.

if [[ $# -ne 1 ]]; then
echo 'usage:' $0 '<module-name>' >&2
function usage() {
echo 'usage:' $0 '<module-name> [update|print]' >&2
exit 1
fi
}

# `update` edits the cmake file in-place; `print` just prints to console
UPDATE_CMAKE=0
case $# in
1) ;;
2) if [[ $2 == 'update' ]]; then
UPDATE_CMAKE=1
elif [[ $2 != 'print' ]]; then
usage
fi ;;
*)
usage ;;
esac

OVERLAYS_PATH=$(dirname "$0")/../stdlib/public/SDK/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should probably be consistent with the -loop script in using $PWD or not.

CMAKE_PATH=$OVERLAYS_PATH/$1/CMakeLists.txt

# Add both directions to associative array
typeset -A CUSTOM_NAMED_MODULES
CUSTOM_NAMED_MODULES[ObjectiveC]=objc
CUSTOM_NAMED_MODULES[objc]=ObjectiveC
CUSTOM_NAMED_MODULES[Dispatch]=dispatch
CUSTOM_NAMED_MODULES[dispatch]=Dispatch
CUSTOM_NAMED_MODULES[XPC]=xpc
CUSTOM_NAMED_MODULES[xpc]=XPC

# Exclude XCTest/ and CMakeLists.txt
ALL_OVERLAYS=()
for overlay in $(ls "$OVERLAYS_PATH"); do
for overlay in $(find "$OVERLAYS_PATH" -depth 1 -type d ! -name XCTest -exec basename \{\} \;); do
ALL_OVERLAYS+=${CUSTOM_NAMED_MODULES[$overlay]-$overlay}
done

typeset -A SDKS
SDKS[macosx]=x86_64
SDKS[iphoneos]=arm64
SDKS[appletvos]=arm64
SDKS[watchos]=armv7k
SDKS[macosx]="x86_64"
SDKS[iphoneos]="arm64"
SDKS[appletvos]="arm64"
SDKS[watchos]="armv7k"

typeset -A CMAKE_DEPENDS_NAME
CMAKE_DEPENDS_NAME[macosx]="SWIFT_MODULE_DEPENDS_OSX"
CMAKE_DEPENDS_NAME[iphoneos]="SWIFT_MODULE_DEPENDS_IOS"
CMAKE_DEPENDS_NAME[appletvos]="SWIFT_MODULE_DEPENDS_TVOS"
CMAKE_DEPENDS_NAME[watchos]="SWIFT_MODULE_DEPENDS_WATCHOS"

echo $1
for sdk in ${(k)SDKS}; do
arch=$SDKS[$sdk]
DEPENDS_ON=()
printf "%s:\n\t" "$sdk"
deps=$(echo "@import $1;" | xcrun -sdk $sdk clang -arch $arch -x objective-c - -M -fmodules 2>/dev/null)
for overlay in $ALL_OVERLAYS; do
(echo "$deps" |
egrep -v 'module.(module)?map' |
egrep -v "\b${CUSTOM_NAMED_MODULES[$1]-$1}\b" |
egrep -q "\b$overlay\b") &&
printf "%s " $overlay
DEPENDS_ON+=${CUSTOM_NAMED_MODULES[$overlay]-$overlay}
done
echo # newline
echo " $DEPENDS_ON"
if [[ $UPDATE_CMAKE == 1 ]]; then
perl -pi -e "s/^ $CMAKE_DEPENDS_NAME[$sdk].*$/ $CMAKE_DEPENDS_NAME[$sdk] $DEPENDS_ON/" $CMAKE_PATH
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: can you use sed instead of perl? One fewer dependency, even if Perl is installed on most systems by default now.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was using sed, but there's not a portable way to do it for OSX and linux.

http://stackoverflow.com/questions/5694228/sed-in-place-flag-that-works-both-on-mac-bsd-and-linux

sed -i -e "s/^ $CMAKE_DEPENDS_NAME[$sdk].*$/ $CMAKE_DEPENDS_NAME[$sdk] $DEPENDS_ON/" $CMAKE_PATH

Basically it works but creates extra files like CMakeLists.txt-e for every file it updates.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need to be portable to Linux for this; only Darwin platforms have a modularized SDK anyway.

fi
done
echo # newline