# Copyright 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Settings that are common to all targets and the host sdk.  Do not place any
# settings in here that are specific to the sdk or cross-compiling for boards.
#
# See "man make.conf" for the available options.

LDFLAGS="-Wl,-O2 -Wl,--as-needed ${LDFLAGS}"

PORTDIR="/usr/local/portage/stable"

# Adding packages to the @world set causes people more trouble than it's
# worth in our setup -- we rarely have people add custom packages outside
# of the ChromiumOS set.  You can use "--select" to override this.
EMERGE_DEFAULT_OPTS="--oneshot"

# Use parallel bzip2 for portage if available
PORTAGE_BZIP2_COMMAND="pbzip2"
PORTAGE_BUNZIP2_COMMAND="pbunzip2 --ignore-trailing-garbage=1"

FETCHCOMMAND_GS='/mnt/host/source/chromite/bin/gs_fetch_binpkg --boto "/home/${PORTAGE_USERNAME}/.boto" "\${URI}" "\${DISTDIR}/\${FILE}"'
RESUMECOMMAND_GS="${FETCHCOMMAND_GS}"

FETCHCOMMAND_AB='/mnt/host/source/chromite/bin/abutil fetch "\${URI}" "\${DISTDIR}/\${FILE}"'
RESUMECOMMAND_AB="${FETCHCOMMAND_AB}"

FETCHCOMMAND='curl --ipv4 -y 30 -f --retry 9 -L --output \${DISTDIR}/\${FILE} \${URI}'
RESUMECOMMAND='curl --ipv4 -y 30 -f -C - --retry 9 -L --output \${DISTDIR}/\${FILE} \${URI}'

# Native language support is handled inside Chrome itself.
# This needs to be in make.conf and not make.defaults to override IUSE defaults.
LINGUAS="en"

# Delete these once ebeep/epause no longer exist in eutils.eclass.
EBEEP_IGNORE="1"
EPAUSE_IGNORE="1"
