blob: a9092cef9d4a1bf575fd4aab33bb069bcf435149 [file] [log] [blame]
#!/usr/bin/env bash
# Copyright 2016 The Fuchsia Authors
# Copyright (c) 2008 Travis Geiselbrecht
#
# Use of this source code is governed by a MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT
function HELP {
echo "help:"
echo "-a arg=value : Extra GN build argument"
echo "-f : Exit on first failure"
echo "-r : Also build release mode builds"
echo "-c : Also build with clang"
echo "-A : Also build with ASan"
echo "-q : Build quietly"
echo "-j N : Passed through to Ninja"
echo "-h for help"
exit 1
}
BUILD_ARGS=()
BUILD_SWITCHES=()
EXTRA_BUILDS=()
FAIL_FAST=0
DO_RELEASE=0
QUIET=0
while getopts Aa:fhj:rcq FLAG; do
case $FLAG in
a) BUILD_ARGS+=("$OPTARG") ;;
A) EXTRA_BUILDS+=(-A) ;;
c) EXTRA_BUILDS+=(-C) ;;
f) FAIL_FAST=1;;
h) HELP;;
r) DO_RELEASE=1;;
q) BUILD_SWITCHES+=(-q) ;;
j) BUILD_SWITCHES+=(-j "$OPTARG") ;;
\?)
echo unrecognized option
HELP
esac
done
shift $((OPTIND-1))
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
FAILED=()
STATUS=0
build_one() {
"$DIR/build-zircon" "${BUILD_SWITCHES[@]}" "$@" -- "${BUILD_ARGS[@]}" || {
STATUS=$?
FAILED+=("build-zircon $*")
}
}
build_all() {
build_one "$@"
for extra in "${EXTRA_BUILDS[@]}"; do
((FAIL_FAST == 0 || STATUS == 0)) || break
build_one "$@" "$extra"
done
}
build_all
if ((DO_RELEASE)); then
build_all -r
fi
if [ ${#FAILED[@]} -ne 0 ]; then
echo
echo some projects have failed to build:
for failed in "${FAILED[@]}"; do
echo "$failed"
done
fi
exit $STATUS