-
-
Save bhargavg/e40b2e7cfe3b34ca5decdb6531068365 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# Faster toolchain build: skips as much as possible. | |
# | |
# To use this toolchain from the command line:" | |
# export TOOLCHAINS=$(whoami) | |
# | |
# we build to the same prefix every time (instead of building | |
# to a versioned prefix) because every time the prefix changes | |
# *everything* rebuilds. | |
set -e | |
trap "exit;" SIGINT SIGTERM | |
SRCROOT="$HOME/src" | |
ALIAS=$(whoami) | |
TOOLCHAIN_NAME="swift-${ALIAS}.xctoolchain" | |
TOOLCHAIN_PREFIX="$HOME/Library/Developer/Toolchains/${TOOLCHAIN_NAME}" | |
export TOOLCHAINS=default | |
if [[ $1 == "--reconfigure" ]]; then | |
RECONFIGURE="--reconfigure" | |
fi | |
# so if anything is put in the wrong place we will *see* it | |
cd "$HOME/Desktop" | |
"$SRCROOT/swift/utils/build-script" \ | |
--release \ | |
--llvm \ | |
--llbuild \ | |
--swiftpm \ | |
--build-subdir="${ALIAS}" \ | |
--assertions \ | |
--no-swift-stdlib-assertions \ | |
--install-prefix="${TOOLCHAIN_PREFIX}/usr" \ | |
--lldb \ | |
--darwin-xcrun-toolchain=mxcl \ | |
-- \ | |
--lldb-use-system-debugserver \ | |
${RECONFIGURE} \ | |
--skip-ios \ | |
--skip-tvos \ | |
--skip-watchos \ | |
--skip-build-linux \ | |
--skip-build-freebsd \ | |
--skip-build-cygwin \ | |
--skip-build-ios \ | |
--skip-build-ios-device \ | |
--skip-build-ios-simulator \ | |
--skip-build-tvos \ | |
--skip-build-tvos-device \ | |
--skip-build-tvos-simulator \ | |
--skip-build-watchos \ | |
--skip-build-watchos-device \ | |
--skip-build-watchos-simulator \ | |
--skip-build-xctest \ | |
--skip-build-foundation \ | |
--skip-build-libdispatch \ | |
--skip-build-benchmarks \ | |
--skip-test-cmark \ | |
--skip-test-lldb \ | |
--skip-test-swift \ | |
--skip-test-llbuild \ | |
--skip-test-swiftpm \ | |
--skip-test-xctest \ | |
--skip-test-foundation \ | |
--skip-test-libdispatch \ | |
--skip-test-linux \ | |
--skip-test-freebsd \ | |
--skip-test-cygwin \ | |
--skip-test-osx \ | |
--skip-test-ios-simulator \ | |
--skip-test-ios-host \ | |
--skip-test-tvos-simulator \ | |
--skip-test-tvos-host \ | |
--skip-test-watchos-simulator \ | |
--skip-test-watchos-host \ | |
--skip-test-benchmarks \ | |
--skip-test-optimized \ | |
--stdlib-deployment-targets=macosx-x86_64 \ | |
--swift-enable-ast-verifier=0 \ | |
--build-swift-examples=0 \ | |
--build-swift-stdlib-unittest-extra=0 \ | |
--build-swift-static-stdlib=1 \ | |
--compiler-vendor=apple \ | |
--swift-install-components="compiler;clang-builtin-headers;stdlib;sdk-overlay;license;sourcekit-xpc-service" \ | |
--llvm-install-components="libclang;libclang-headers" \ | |
--install-swift=1 \ | |
--install-llbuild=1 \ | |
--install-swiftpm=1 \ | |
--install-destdir="/" \ | |
--install-lldb=1 \ | |
--toolchain-prefix="${TOOLCHAIN_PREFIX}" | |
# doing by hand as the only other way to trigger this | |
# is by specifying --installable-package, which tars | |
# all installed products and is super slow | |
DATE=$(date +%Y.%m.%d) | |
SWIFT_VERSION=$("${TOOLCHAIN_PREFIX}/usr/bin/swift" --version | ruby -e 'ARGF.read =~ /Swift version (\d+\.\d(\.\d+)?(-.*?)?) /; print "#{$1}\n"') | |
if [[ "$SWIFT_VERSION" == "3.0-dev" ]]; then | |
SWIFT_VERSION="3.0.0-dev" | |
fi | |
VERSION="${SWIFT_VERSION}-${ALIAS}+${DATE}" | |
cat > "${TOOLCHAIN_PREFIX}/Info.plist" <<EOF | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>Aliases</key> | |
<array> | |
<string>${ALIAS}</string> | |
</array> | |
<key>CompatibilityVersion</key> | |
<integer>2</integer> | |
<key>CFBundleIdentifier</key> | |
<string>org.swift.${SWIFT_VERSION}.${ALIAS}</string> | |
<key>DisplayName</key> | |
<string>Swift ${SWIFT_VERSION}.${ALIAS}+${DATE}</string> | |
<key>ReportProblemURL</key> | |
<string>https://bugs.swift.org/</string> | |
<key>Version</key> | |
<string>${DATE}</string> | |
<key>OverrideEnvironment</key> | |
<dict> | |
<key>ENABLE_BITCODE</key> | |
<false/> | |
<key>SWIFT_DISABLE_REQUIRED_ARCLITE</key> | |
<true/> | |
<key>SWIFT_LINK_OBJC_RUNTIME</key> | |
<true/> | |
</dict> | |
</dict> | |
</plist> | |
EOF | |
# again, only way to trigger this otherwise is do a lengthy --installable-package step | |
cp "${SRCROOT}/swift/utils/swift-stdlib-tool-substitute" "${TOOLCHAIN_PREFIX}/usr/bin/swift-stdlib-tool" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment