| #!/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 |