# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/default/linux/make.defaults,v 1.3 2009/09/21 09:39:09 robbat2 Exp $
#
# System-wide defaults for the Portage system
# See portage(5) manpage
#
# Please avoid enabling things by default in here if possible. Understand any 
# implications with core packages.  For example, if "java" is in USE and db 
# has a conditional dependency on java (which it does,) then a JDK will be 
# pulled in during *emerge system*!

# Default starting set of USE flags for all default/linux profiles.
USE="berkdb crypt ipv6 ncurses nls pam perl python readline ssl tcpd zlib"

# make sure toolchain has sane defaults <tooclhain@gentoo.org>
USE="${USE} fortran mudflap openmp"

# 2006/03/07 - Donnie Berkholz <dberkholz@gentoo.org>
# Modular X: Support direct rendering by default
USE="${USE} dri"

# 2006/03/29 - Stefan Schweizer <genstef@gentoo.org>
# isdn USE flag defaults
USE="${USE} pppd isdnlog"

# 2006/04/19 - Chris Gianelloni <wolf31o2@gentoo.org>
# Make sure dev-lang/php works right.  See bug #120088 for more info.
USE="${USE} cli pcre reflection session spl"

# 2006/04/21 - Donnie Berkholz <dberkholz@gentoo.org>
# Modular X: Build the Xorg X server by default
USE="${USE} xorg"

# 2006/10/28 - Luca Barbato <lu_zero@gentoo.org>
# on glibc system you cannot turn it off
USE="${USE} iconv"

# 2006/06/30 - Donnie Berkholz <dberkholz@gentoo.org>
# Sane defaults for input drivers
INPUT_DEVICES="keyboard mouse evdev"

# 2006/08/18 - Donnie Berkholz <dberkholz@gentoo.org>
# Lowest common denominator defaults for video drivers,
# except hppa, which lacks v4l so removes it in the hppa profile
VIDEO_CARDS="dummy fbdev v4l"

# 2008/07/09 - Doug Goldstein <cardoe@gentoo.org>
# Adding LDFLAGS="-Wl,-O1 for all Linux profiles by default
# after discussion on the gentoo-dev ML. As we bang out a clear
# direction with how LDFLAGS will be set by default, this entry
# may move.
LDFLAGS="-Wl,-O1"

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