# 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="/mnt/host/source/src/third_party/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 --autounmask-backtrack=y --autounmask=n"

# Compression settings for creating binpkgs.
# NB: BINPKG_COMPRESS selects an algorithm, not a command.
BINPKG_COMPRESS="zstd"
BINPKG_COMPRESS_FLAGS="-3"

# Command for compressing installed documentation, including man pages.
# That means compression algorithm selection is restricted by whatever man-db
# supports, and currently that is gzip/bzip2/xz/lzip.
# We don't need high compression levels here as the amount of documentation
# in total is not huge (<500 MB uncompressed), so a smallish & fast approach
# works well enough.
PORTAGE_COMPRESS="pigz"
PORTAGE_COMPRESS_FLAGS="-3"

# Use parallel bzip2 for portage whenever bzip2 is needed.
# This is usually for decompressing source archives.
PORTAGE_BZIP2_COMMAND="lbzip2 -z"
PORTAGE_BUNZIP2_COMMAND="lbzip2 -d"

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 -y 30 -f --retry 9 -L --output \${DISTDIR}/\${FILE} \${URI}'
RESUMECOMMAND='curl -y 30 -f -C - --retry 9 -L --output \${DISTDIR}/\${FILE} \${URI}'

FETCHCOMMAND_CIPD='/mnt/host/source/chromite/bin/fetch_cipd "\${URI}" "\${DISTDIR}/\${FILE}"'
RESUMECOMMAND_CIPD="${FETCHCOMMAND_CIPD}"

# 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"
