blob: d4a4f4a55701ab0b39fcf772f019ce09a4e02e7c [file] [log] [blame]
#!/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 "$@"