blob: 678ae56364640d86b01a81fbfdc07dd2d6ba9f1d [file] [log] [blame]
#!/usr/bin/env zsh
#===--- find-overlay-dependencies.sh - ...by looking at imported headers ---===#
#
## This source file is part of the Swift.org open source project
##
## Copyright (c) 2014 - 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
#
#===------------------------------------------------------------------------===#
# 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
exit 1
fi
OVERLAYS_PATH=$(dirname "$0")/../stdlib/public/SDK/
typeset -A CUSTOM_NAMED_MODULES
CUSTOM_NAMED_MODULES[ObjectiveC]=objc
CUSTOM_NAMED_MODULES[Dispatch]=dispatch
CUSTOM_NAMED_MODULES[XPC]=xpc
ALL_OVERLAYS=()
for overlay in $(ls "$OVERLAYS_PATH"); 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
for sdk in ${(k)SDKS}; do
arch=$SDKS[$sdk]
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
done
echo # newline
done