# 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_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_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="ruby19 ruby18"

# 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"
PYTHON_SINGLE_TARGET="python2_7"

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