# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/features/multilib/make.defaults,v 1.8 2011/12/07 19:21:37 vapier Exp $

# Jorge Manuel B. S. Vicetto <jmbsvicetto@gentoo.org> (16 Nov 2011)
# Rename STAGE1_USE to BOOTSTRAP_USE and stack it to the parent value
# This is so we build with multilib from the start
BOOTSTRAP_USE="${BOOTSTRAP_USE} multilib"

# FEATURES="multilib-strict" specific settings.
MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib"
MULTILIB_STRICT_DENY="64-bit.*shared object"
MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev)"

# 64-bit LIBDIR
LIBDIR_amd64="lib64"
LIBDIR_amd64_fbsd="lib64"
LIBDIR_n64="lib64"	# MIPS n64
LIBDIR_ppc64="lib64"
LIBDIR_s390x="lib64"
LIBDIR_sparc64="lib64"

# 32-bit LIBDIR
LIBDIR_x86="lib"
LIBDIR_x86_fbsd="lib"
LIBDIR_o32="lib"	# MIPS o32
LIBDIR_ppc="lib"
LIBDIR_s390="lib"
LIBDIR_sparc32="lib"

# Somewhere in-between!
LIBDIR_x32="libx32"	# x86-64 x32
LIBDIR_n32="lib32"	# MIPS n32
