10f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#!/bin/bash
20f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved.
30f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
40f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# found in the LICENSE file.
50f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
60f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# This a simple script to make building/testing Mojo components easier (on
70f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# Linux).
80f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
90f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# TODO(vtl): Maybe make the test runner smart and not run unchanged test
100f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# binaries.
110f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# TODO(vtl) Maybe also provide a way to pass command-line arguments to the test
120f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# binaries.
130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)do_help() {
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  cat << EOF
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)Usage: $(basename "$0") [command|option ...]
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)command should be one of:
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  build - Build.
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  test - Run unit tests (does not build).
21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  perftest - Run perf tests (does not build).
22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  pytest - Run Python unit tests.
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  gyp - Run gyp for mojo (does not sync).
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  gypall - Run gyp for all of chromium (does not sync).
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  sync - Sync using gclient (does not run gyp).
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  show-bash-alias - Outputs an appropriate bash alias for mojob. In bash do:
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      \$ eval \`mojo/tools/mojob.sh show-bash-alias\`
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)option (which will only apply to following commands) should be one of:
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Build/test options (specified before build/test/perftest):
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --debug - Build/test in Debug mode.
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --release - Build/test in Release mode.
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --debug-and-release - Build/test in both Debug and Release modes (default).
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Compiler options (specified before gyp):
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --clang - Use clang (default).
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --gcc - Use gcc.
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Component options:
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --shared Build components as shared libraries (default).
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --static Build components as static libraries.
406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  Use goma:
416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    --use-goma - Use goma if \$GOMA_DIR is set or \$HOME/goma exists (default).
426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    --no-use-goma - Do not use goma.
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)Note: It will abort on the first failure (if any).
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)EOF
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)do_build() {
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  echo "Building in out/$1 ..."
506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  if [ "$GOMA" = "auto" -a -v GOMA_DIR ]; then
516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    ninja -j 1000 -C "out/$1" mojo || exit 1
526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  else
536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    ninja -C "out/$1" mojo || exit 1
546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  fi
550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}
560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)do_unittests() {
58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  echo "Running unit tests in out/$1 ..."
59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  mojo/tools/test_runner.py mojo/tools/data/unittests "out/$1" \
60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      mojob_test_successes || exit 1
610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}
620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)do_perftests() {
64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  echo "Running perf tests in out/$1 ..."
655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  "out/$1/mojo_public_system_perftests" || exit 1
660f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}
670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
68c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochdo_pytests() {
690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  python mojo/tools/run_mojo_python_tests.py || exit 1
70c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}
71c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)do_gyp() {
73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  local gyp_defines="$(make_gyp_defines)"
74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  echo "Running gyp for mojo with GYP_DEFINES=$gyp_defines ..."
75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  GYP_DEFINES="$gyp_defines" build/gyp_chromium mojo/mojo.gyp || exit 1
76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
77a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
78116680a4aac90f2aa7413d9095a592090648e557Ben Murdochdo_gypall() {
79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  local gyp_defines="$(make_gyp_defines)"
80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  echo "Running gyp for everything with GYP_DEFINES=$gyp_defines ..."
81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  GYP_DEFINES="$gyp_defines" build/gyp_chromium || exit 1
82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)do_sync() {
85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  # Note: sync only (with hooks, but no gyp-ing).
86a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  GYP_CHROMIUM_NO_ACTION=1 gclient sync || exit 1
87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)# Valid values: Debug, Release, or Debug_and_Release.
90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)BUILD_TEST_TYPE=Debug_and_Release
91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)should_do_Debug() {
92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  test "$BUILD_TEST_TYPE" = Debug -o "$BUILD_TEST_TYPE" = Debug_and_Release
93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
94f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)should_do_Release() {
95f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  test "$BUILD_TEST_TYPE" = Release -o "$BUILD_TEST_TYPE" = Debug_and_Release
96f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
98f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)# Valid values: clang or gcc.
99f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)COMPILER=clang
100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)# Valid values: shared or static.
101f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)COMPONENT=shared
1026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)# Valid values: auto or disabled.
1036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)GOMA=auto
104f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)make_gyp_defines() {
105f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  local options=()
106f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  # Always include these options.
107f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  options+=("use_aura=1")
108f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  case "$COMPILER" in
109f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    clang)
110f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      options+=("clang=1")
111f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ;;
112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    gcc)
113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      options+=("clang=0")
114f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ;;
115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  esac
116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  case "$COMPONENT" in
117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    shared)
118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      options+=("component=shared_library")
119f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ;;
120f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    static)
121f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      options+=("component=static_library")
122f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ;;
123f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  esac
1246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  case "$GOMA" in
1256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    auto)
1266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      if [ -v GOMA_DIR ]; then
1276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        options+=("use_goma=1" "gomadir=\"${GOMA_DIR}\"")
1286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      else
1296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        options+=("use_goma=0")
1306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      fi
1316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      ;;
1326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    disabled)
1336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      options+=("use_goma=0")
1346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      ;;
1356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  esac
1366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  echo "${options[*]}"
1376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}
1386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)set_goma_dir_if_necessary() {
1406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  if [ "$GOMA" = "auto" -a ! -v GOMA_DIR ]; then
1416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    if [ -d "${HOME}/goma" ]; then
1426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      GOMA_DIR="${HOME}/goma"
1436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    fi
1446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  fi
1456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}
1466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)start_goma_if_necessary() {
1486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  if [ "$GOMA" = "auto" -a -v GOMA_DIR ]; then
1496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    "${GOMA_DIR}/goma_ctl.py" ensure_start
1506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  fi
151f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
152f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
153f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)# We're in src/mojo/tools. We want to get to src.
154f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)cd "$(realpath "$(dirname "$0")")/../.."
155f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
156f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)if [ $# -eq 0 ]; then
157f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  do_help
158f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  exit 0
159f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)fi
160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)for arg in "$@"; do
1620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  case "$arg" in
163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    # Commands -----------------------------------------------------------------
1640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    help|--help)
165f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      do_help
1660f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      exit 0
1670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      ;;
1680f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    build)
1696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      set_goma_dir_if_necessary
1706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      start_goma_if_necessary
171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      should_do_Debug && do_build Debug
172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      should_do_Release && do_build Release
1730f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      ;;
1740f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    test)
175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      should_do_Debug && do_unittests Debug
176f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      should_do_Release && do_unittests Release
1770f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      ;;
1780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    perftest)
179f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      should_do_Debug && do_perftests Debug
180f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      should_do_Release && do_perftests Release
1810f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      ;;
182c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    pytest)
183c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch      do_pytests
184c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch      ;;
1850f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    gyp)
1866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      set_goma_dir_if_necessary
187f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      do_gyp
1880f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      ;;
189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    gypall)
1906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      set_goma_dir_if_necessary
191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      do_gypall
192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      ;;
1930f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    sync)
194a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      do_sync
1950f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      ;;
1960f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    show-bash-alias)
1970f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      # You want to type something like:
1980f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      #   alias mojob=\
1990f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      #       '"$(pwd | sed '"'"'s/\(.*\/src\).*/\1/'"'"')/mojo/tools/mojob.sh"'
2000f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      # This is quoting hell, so we simply escape every non-alphanumeric
2010f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      # character.
2020f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      echo alias\ mojob\=\'\"\$\(pwd\ \|\ sed\ \'\"\'\"\'s\/\\\(\.\*\\\/src\\\)\
2030f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)\.\*\/\\1\/\'\"\'\"\'\)\/mojo\/tools\/mojob\.sh\"\'
2040f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      ;;
205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    # Options ------------------------------------------------------------------
206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --debug)
207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      BUILD_TEST_TYPE=Debug
208f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ;;
209f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --release)
210f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      BUILD_TEST_TYPE=Release
211f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ;;
212f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --debug-and-release)
213f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      BUILD_TEST_TYPE=Debug_and_Release
214f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ;;
215f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --clang)
216f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      COMPILER=clang
217f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ;;
218f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --gcc)
219f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      COMPILER=gcc
220f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ;;
221f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --shared)
222f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      COMPONENT=shared
223f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ;;
224f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    --static)
225f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      COMPONENT=static
226f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ;;
2276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    --use-goma)
2286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      GOMA=auto
2296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      ;;
2306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    --no-use-goma)
2316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      GOMA=disabled
2326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      ;;
2330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    *)
2340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      echo "Unknown command \"${arg}\". Try \"$(basename "$0") help\"."
2350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      exit 1
2360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      ;;
2370f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  esac
2380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)done
239