| #!/bin/bash | |
| # Copyright 2017 The Fuchsia Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| ### build Fuchsia | |
| ## usage: fx build [ninja option,...] [target,...] | |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"/lib/vars.sh | |
| fx-config-read | |
| function main { | |
| # macOS needs a lower value of -j parameter, because it has a limit on the | |
| # number of open file descriptors. Use 4 * cpu_count, which works well in | |
| # practice. | |
| local concurrency_args= | |
| if grep -q "use_goma = true" "${FUCHSIA_BUILD_DIR}/args.gn"; then | |
| if [[ "$(uname -s)" = "Darwin" ]]; then | |
| numjobs=$(( $(sysctl -n hw.ncpu) * 4 )) | |
| concurrency_args="-j ${numjobs}" | |
| else | |
| concurrency_args="-j 1000" | |
| fi | |
| fi | |
| local env_args= | |
| # PATH is required to find a number of tools on the host system. | |
| if [[ -n "${PATH}" ]]; then | |
| env_args="${env_args} PATH=${PATH}" | |
| fi | |
| # TERM is required by ninja to print status messages on the same line. | |
| if [[ -n "${TERM}" ]]; then | |
| env_args="${env_args} TERM=${TERM}" | |
| fi | |
| # TMPDIR is required by goma on Mac OS X. | |
| if [[ -n "${TMPDIR}" ]]; then | |
| env_args="${env_args} TMPDIR=${TMPDIR}" | |
| fi | |
| env -i ${env_args} \ | |
| "${FUCHSIA_DIR}/buildtools/ninja" ${concurrency_args} -C "${FUCHSIA_BUILD_DIR}" "$@" | |
| } | |
| main "$@" |