# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
#
# System-wide defaults for the Portage system
# See portage(5) manpage

# Profile IUSE injection (applies only to ebuilds which use EAPI 5 or later)
IUSE_IMPLICIT="prefix prefix-guest"
USE_EXPAND_UNPREFIXED="ARCH"
USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL USERLAND"
USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd riscv s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt"
USE_EXPAND_VALUES_ELIBC="AIX Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mintlib musl NetBSD OpenBSD SunOS uclibc Winnt"
USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt"
USE_EXPAND_VALUES_USERLAND="BSD GNU"

# Env vars to expand into USE vars.  Modifying this requires prior
# discussion on gentoo-dev@lists.gentoo.org.
USE_EXPAND="ABI_ARM ABI_MIPS ABI_PPC ABI_S390 ABI_X86 ALSA_CARDS APACHE2_MODULES APACHE2_MPMS CALLIGRA_FEATURES CAMERAS COLLECTD_PLUGINS CPU_FLAGS_X86 CROSSCOMPILE_OPTS CURL_SSL DRACUT_MODULES DVB_CARDS ELIBC ENLIGHTENMENT_MODULES FCDSL_CARDS FFTOOLS FOO2ZJS_DEVICES FRITZCAPI_CARDS GPSD_PROTOCOLS GRUB_PLATFORMS INPUT_DEVICES KERNEL LCD_DEVICES LIBREOFFICE_EXTENSIONS LINGUAS LIRC_DEVICES LLVM_TARGETS MONKEYD_PLUGINS NETBEANS_MODULES NGINX_MODULES_HTTP NGINX_MODULES_MAIL NGINX_MODULES_STREAM OFED_DRIVERS OFFICE_IMPLEMENTATION OPENMPI_FABRICS OPENMPI_OFED_FEATURES OPENMPI_RM PHP_TARGETS PYTHON_SINGLE_TARGET PYTHON_TARGETS QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS RUBY_TARGETS SANE_BACKENDS USERLAND UWSGI_PLUGINS VIDEO_CARDS VOICEMAIL_STORAGE XFCE_PLUGINS XTABLES_ADDONS ROS_MESSAGES"

# USE_EXPAND variables whose contents are not shown in package manager
# output. Changes need discussion on gentoo-dev.
USE_EXPAND_HIDDEN="USERLAND KERNEL ELIBC CROSSCOMPILE_OPTS ABI_ARM ABI_MIPS ABI_PPC ABI_S390 ABI_X86 CPU_FLAGS_X86"

# Basic CONFIG_PROTECT is defined by portage make.globals in /usr/share. That is really bad, kill it here.
CONFIG_PROTECT="-/etc"
CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf"

# Variables that are set exclusively by the profile
# and not by user configuration files.
PROFILE_ONLY_VARIABLES="ARCH ELIBC IUSE_IMPLICIT KERNEL USERLAND USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL USE_EXPAND_VALUES_USERLAND"

# 'Sane' defaults
ELIBC="glibc"
KERNEL="linux"
USERLAND="GNU"
INPUT_DEVICES="keyboard mouse"

# Tomáš Chvátal <scarabeus@gentoo.org> (23 Mar 2013)
# By default enable libreoffice implementation only.
OFFICE_IMPLEMENTATION="libreoffice"

# Tomáš Chvátal <scarabeus@gentoo.org> (12 Aug 2011)
# By default do not build any grub platform and let it guess.
GRUB_PLATFORMS=""

# Tomáš Chvátal <scarabeus@gentoo.org> (05 May 2013)
# By default enable all extensions with no dependencies
LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer"

# Tomáš Chvátal <scarabeus@gentoo.org> (15 May 2011)
# Andreas K. Hüttel <dilfridge@gentoo.org> (19 Aug 2011, 25 Mar 2012)
# By default build all koffice / calligra features.
CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author"

# Pacho Ramos <pacho@gentoo.org> (14 Feb 2010)
# Enable 'ptp2' by default as it is available for most cameras.
CAMERAS="ptp2"

# Ole Markus With <olemarkus@gentoo.org> (09 Oct 2010)
# Default PHP targets (should always be latest stable version)
PHP_TARGETS="php5-5"

# Andreas K. Huettel <dilfridge@gentoo.org> (28 Sep 2010)
# Small default list of enabled plugins for collectd
COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog"

# Tomáš Chvátal <scarabeus@gentoo.org> (26 Oct 2010)
# By default enable all protocols for average GPS user
GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx"

# Benedikt Böhm <hollow@gentoo.org> (27 Nov 2007)
# Sane defaults for built-in apache modules
# Patrick Lauer <patrick@gentoo.org> (12 Oct 2012)
# extend for apache 2.4
APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"

# Peter Volkov <pva@gentoo.org> (29 Apr 2010)
# Set some defaults or package will fail to build (Check mconfig in package sources)
XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"

# Robert Buchholz <rbu@gentoo.org> (17 Jan 2006)
# Some common lcd devices
LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text"

# 2006/10/17 - Daniel Drake <dsd@gentoo.org>
# cracklib is becoming optional in shadow (and removed from system) as of
# today. However, cracklib is very standard across the Linux world so we
# enable it by default.
#
# Diego Pettenò <flameeyes@gentoo.org> (14 Jul 2007)
# Moved to base/ profile from default-linux/ so that it also applies to
# embedded and hardened profiles.
USE="${USE} cracklib"

# Miroslav Šulc <fordfrog@gentoo.org> (19 Nov 2008)
# Netbeans modules/clusters
NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml"

# 2009/09/21 Robin H. Johnson <robbat2@gentoo.org>
# https://archives.gentoo.org/gentoo-dev/msg_dc705dc2c1a45e18a85aa62e8fb17009.xml
# Build kernel modules from linux-mod by default:
USE="${USE} modules"

# Alex Legler <a3li@gentoo.org> (30 Nov 2009)
# Default Ruby build targets
RUBY_TARGETS="ruby25"

# Samuli Suominen <ssuominen@gentoo.org> (03 Dec 2009)
# Enable USE cxx by default so base-system and toolchain pkgs can start using USE cxx
# instead of USE nocxx.
# https://archives.gentoo.org/gentoo-dev/msg_a181cd0d36600067b599f4b996c6989f.xml
USE="${USE} cxx"

# Tiziano Müller <dev-zero@gentoo.org> (24 Jan 2010)
# We usually don't want python to (re)write .py[co] files during phase runs
# since it could cause sandbox violations
PYTHONDONTWRITEBYTECODE="1"

# Jorge Manuel B. S. Vicetto <jmbsvicetto@gentoo.org> (16 Nov 2011)
# Add default USE value for bootstrap and rename it from STAGE1_USE to BOOTSTRAP_USE
# Add in expanded PYTHON_TARGETS or stage1 builds break because of USE="-* ${BOOTSTRAP_USE}"
# This MUST be kept in sync with the PYTHON_TARGETS below
BOOTSTRAP_USE="cxx unicode python_targets_python3_2 python_targets_python2_7"

# Mike Gilbert <floppym@gentoo.org> (15 May 2012)
# Default target(s) for python-r1.eclass
PYTHON_TARGETS="-python2_7 python3_6"
PYTHON_SINGLE_TARGET="-python2_7 python3_6"

# Michał Górny <mgorny@gentoo.org> (10 Aug 2013)
# Moved from portage's make.globals.
# 1) do not uninstall kernel modules and therefore allow replacing them,
#    Note: Disabled for CrOS.
# 2) allow replacing unowned compiled Python modules (python-r1 migration),
# 3) allow replacing unowned dropin.cache files (twisted-r1 migration).
# 4) ignore collisions in the build-id tree. These are colliding symlinks
#    specifying where to get debug symbols for two identical executables
#    installed at different paths.
COLLISION_IGNORE="*.py[co] *\$py.class */dropin.cache /usr/lib/debug/.build-id"
UNINSTALL_IGNORE=""

# Andreas K. Hüttel <dilfridge@gentoo.org> (23 Aug 2013)
# Make emerge messages default to English as per Council decision
LC_MESSAGES="C"

# ChromeOS-specific: BOARD_USE for accessing board value in cros-board.eclass
#                    CROS_WORKON_TREE for cros-workon
#                    TESTS USE_EXPAND for autotest
#                    TTY_CONSOLE for enabling tty consoles
#                    U_BOOT_CONFIG_USE for selecting U-Boot config
#                    U_BOOT_FDT_USE for selecting U-Boot device tree
#                    LINUX_FIRMWARE for selecting upstream firmware components
#                    OZONE_PLATFORM for platforms to build into chrome
#                    EC_FIRMWARE for compiling the main EC image
#                    EC_FIRMWARE_EXTRA for compiling other needed EC images
#                    FPMCU_FIRMWARE for compiling the fingerprint firmware
#
# When you add a variable to USE_EXPAND, it means that if portage encounters
# the specified variable in make.defaults it will expand it into a USE variable
# with the prefix being a lowercase version of the variable.
#
# For example, if FPMCU_FIRMWARE is added to USE_EXPAND, setting
#
#   FPMCU_FIRMWARE="bloonchipper dartmonkey"
#
# in device-specific profile (e.g., overlays/baseboard-hatch/profiles/base/make.defaults)
# will result in the following USE flags being created:
#
#   fpmcu_firmware_bloonchipper
#   fpmcu_firmware_dartmonkey
USE_EXPAND="${USE_EXPAND} BOARD_USE CROS_WORKON_TREE TESTS TTY_CONSOLE U_BOOT_CONFIG_USE U_BOOT_FDT_USE LINUX_FIRMWARE OZONE_PLATFORM OZONE_PLATFORM_DEFAULT EC_FIRMWARE EC_FIRMWARE_EXTRA FPMCU_FIRMWARE"
USE_EXPAND_HIDDEN="${USE_EXPAND_HIDDEN} CROS_WORKON_TREE"

# Default licenses that are accepted for ChromiumOS builds.
# If you want to accept more, use the --accept_licenses flag
# when running setup_board.
ACCEPT_LICENSE="* -@EULA -@CHROMEOS"

# By default, we only start a console on tty2.
TTY_CONSOLE="tty2"

# Explicitly set the default value to "" otherwise portage will default it to
# "*".
CROS_WORKON_TREE=""

# We don't use the news feature anywhere.  Disable it to avoid useless runtime
# overhead (especially with locking checks).
FEATURES="-news"
