67 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# Historically, xcrun has had various bugs, and in some cases it didn't
# work at all (e.g. CLT-only in the Xcode 4.3 era). This script emulates
# it and attempts to avoid these issues.
# These could be used in conjunction with `--sdk` which ignores SDKROOT.
if [[ "$*" =~ (^| )-?-show-sdk-(path|version|build) && -n "$HOMEBREW_DEVELOPER_DIR" ]]; then
export DEVELOPER_DIR=$HOMEBREW_DEVELOPER_DIR
else
# Some build tools set DEVELOPER_DIR, so discard it
unset DEVELOPER_DIR
fi
if [[ -z "$SDKROOT" && -n "$HOMEBREW_SDKROOT" ]]; then
export SDKROOT=$HOMEBREW_SDKROOT
fi
if [ $# -eq 0 ]; then
exec /usr/bin/xcrun "$@"
fi
case "$1" in
-*) exec /usr/bin/xcrun "$@" ;;
esac
arg0=$1
shift
exe="/usr/bin/${arg0}"
if [ -x "$exe" ]; then
if [ -n "$HOMEBREW_PREFER_CLT_PROXIES" ]; then
exec "$exe" "$@"
elif [ -z "$HOMEBREW_SDKROOT" -o ! -d "$HOMEBREW_SDKROOT" ]; then
exec "$exe" "$@"
fi
fi
SUPERBIN=$(cd "${0%/*}" && pwd -P)
exe=$(/usr/bin/xcrun --find "$arg0" 2>/dev/null)
if [ -x "$exe" -a "${exe%/*}" != "$SUPERBIN" ]; then
exec "$exe" "$@"
fi
old_IFS=$IFS
IFS=:
for path in $PATH; do
if [ "$path" = "$SUPERBIN" ]; then
continue
fi
exe="${path}/${arg0}"
if [ -x "$exe" ]; then
exec "$exe" "$@"
fi
done
IFS=$old_IFS
echo >&2 "
Failed to execute $arg0 $@
Xcode and/or the CLT appear to be misconfigured. Try one or both of the following:
xcodebuild -license
sudo xcode-select -switch /path/to/Xcode.app
"
exit 1