/[gentoo-x86]/eclass/eutils.eclass
Gentoo

Diff of /eclass/eutils.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.125 Revision 1.128
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2004 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.125 2004/12/07 01:32:01 vapier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.128 2004/12/23 09:20:45 eradicator Exp $
4# 4#
5# Author: Martin Schlemmer <azarah@gentoo.org> 5# Author: Martin Schlemmer <azarah@gentoo.org>
6# 6#
7# This eclass is for general purpose functions that most ebuilds 7# This eclass is for general purpose functions that most ebuilds
8# have to implement themselves. 8# have to implement themselves.
48# to accomidate the needs of multilib systems. It's no longer a good idea 48# to accomidate the needs of multilib systems. It's no longer a good idea
49# to assume all libraries will end up in lib. Replace any (sane) instances 49# to assume all libraries will end up in lib. Replace any (sane) instances
50# where lib is named directly with $(get_libdir) if possible. 50# where lib is named directly with $(get_libdir) if possible.
51# 51#
52# Travis Tilley <lv@gentoo.org> (24 Aug 2004) 52# Travis Tilley <lv@gentoo.org> (24 Aug 2004)
53#
54# Jeremy Huddleston <eradicator@gentoo.org> (23 Dec 2004):
55# Added support for ${ABI} and ${DEFAULT_ABI}. If they're both not set,
56# fall back on old behavior. Any profile that has these set should also
57# depend on a newer version of portage (not yet released) which uses these
58# over CONF_LIBDIR in econf, dolib, etc...
59#
60# For now, this is restricted to the sparc64-multilib ${PROFILE_ARCH} as it
61# is still in testing.
53get_libdir() { 62get_libdir() {
54 LIBDIR_TEST=$(type econf) 63 LIBDIR_TEST=$(type econf)
55 if [ ! -z "${CONF_LIBDIR_OVERRIDE}" ] ; then 64 if [ ! -z "${CONF_LIBDIR_OVERRIDE}" ] ; then
56 # if there is an override, we want to use that... always. 65 # if there is an override, we want to use that... always.
57 CONF_LIBDIR="${CONF_LIBDIR_OVERRIDE}" 66 CONF_LIBDIR="${CONF_LIBDIR_OVERRIDE}"
62 # # and if there isnt an override, and we're using a version of 71 # # and if there isnt an override, and we're using a version of
63 # # portage without CONF_LIBDIR support, force the use of lib. dolib 72 # # portage without CONF_LIBDIR support, force the use of lib. dolib
64 # # and friends from portage 2.0.50 wont be too happy otherwise. 73 # # and friends from portage 2.0.50 wont be too happy otherwise.
65 # CONF_LIBDIR="lib" 74 # CONF_LIBDIR="lib"
66 #fi 75 #fi
76 elif [ "${PROFILE_ARCH}" = "sparc64-multilib" ]; then # Using eradicator's LIBDIR_<abi> approach...
77 CONF_LIBDIR="$(get_abi_LIBDIR)"
67 elif [ "${LIBDIR_TEST/CONF_LIBDIR}" == "${LIBDIR_TEST}" ]; then # we don't have CONF_LIBDIR support 78 elif [ "${LIBDIR_TEST/CONF_LIBDIR}" == "${LIBDIR_TEST}" ]; then # we don't have CONF_LIBDIR support
68 # will be <portage-2.0.51_pre20 79 # will be <portage-2.0.51_pre20
69 CONF_LIBDIR="lib" 80 CONF_LIBDIR="lib"
70 fi 81 fi
71 # and of course, default to lib if CONF_LIBDIR isnt set 82 # and of course, default to lib if CONF_LIBDIR isnt set
72 echo ${CONF_LIBDIR:=lib} 83 echo ${CONF_LIBDIR:=lib}
73 unset LIBDIR_TEST 84 unset LIBDIR_TEST
74} 85}
75 86
76
77get_multilibdir() { 87get_multilibdir() {
88 [ "${PROFILE_ARCH}" = "sparc64-multilib" ] && die "get_multilibdir called, but it shouldn't be needed on sparc64-multilib"
78 echo ${CONF_MULTILIBDIR:=lib32} 89 echo ${CONF_MULTILIBDIR:=lib32}
79} 90}
80
81 91
82# Sometimes you need to override the value returned by get_libdir. A good 92# Sometimes you need to override the value returned by get_libdir. A good
83# example of this is xorg-x11, where lib32 isnt a supported configuration, 93# example of this is xorg-x11, where lib32 isnt a supported configuration,
84# and where lib64 -must- be used on amd64 (for applications that need lib 94# and where lib64 -must- be used on amd64 (for applications that need lib
85# to be 32bit, such as adobe acrobat). Note that this override also bypasses 95# to be 32bit, such as adobe acrobat). Note that this override also bypasses
89# 99#
90# get_libdir_override lib64 100# get_libdir_override lib64
91# 101#
92# Travis Tilley <lv@gentoo.org> (31 Aug 2004) 102# Travis Tilley <lv@gentoo.org> (31 Aug 2004)
93get_libdir_override() { 103get_libdir_override() {
104 [ "${PROFILE_ARCH}" = "sparc64-multilib" ] && die "get_libdir_override called, but it shouldn't be needed on sparc64-multilib..."
94 CONF_LIBDIR="$1" 105 CONF_LIBDIR="$1"
95 CONF_LIBDIR_OVERRIDE="$1" 106 CONF_LIBDIR_OVERRIDE="$1"
96} 107}
97 108
98# This function generate linker scripts in /usr/lib for dynamic 109# This function generate linker scripts in /usr/lib for dynamic
1533 has $1 ${USE_BUILT} || return 1 1544 has $1 ${USE_BUILT} || return 1
1534 shift 1545 shift
1535 done 1546 done
1536 return 0 1547 return 0
1537} 1548}
1549
1550# Many configure scripts wrongly bail when a C++ compiler
1551# could not be detected. #73450
1552epunt_cxx() {
1553 local dir=$1
1554 [[ -z ${dir} ]] && dir=${S}
1555 ebegin "Removing useless C++ checks"
1556 local f
1557 for f in $(find ${dir} -name configure) ; do
1558 patch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null
1559 done
1560 eend 0
1561}
1562
1563# get_abi_var <VAR> [<ABI>]
1564# returns the value of ${<VAR>_<ABI>} which should be set in make.defaults
1565#
1566# This code is for testing purposes only with the sparc64-multilib ${PROFILE_ARCH}
1567# and getting a more multilib-aware portage layout. It may end up being used, but for now
1568# it is subject to removal if a better way is worked out.
1569#
1570# ex:
1571# CFLAGS=$(get_abi_var CFLAGS sparc32) # CFLAGS=-m32
1572#
1573# Note that the prefered method is to set CC="$(tc-getCC) $(get_abi_CFLAGS)"
1574# This will hopefully be added to portage soon...
1575#
1576# If <ABI> is not specified, ${ABI} is used.
1577# If <ABI> is not specified and ${ABI} is not defined, ${DEFAULT_ABI} is used.
1578# If <ABI> is not specified and ${ABI} and ${DEFAULT_ABI} are not defined, we return an empty string.
1579#
1580# Jeremy Huddleston <eradicator@gentoo.org>
1581get_abi_var() {
1582 local flag=$1
1583 local abi
1584 if [ $# -gt 1 ]; then
1585 abi=$1
1586 elif [ -n "${ABI}" ]; then
1587 abi=${ABI}
1588 elif [ -n "${DEFAULT_ABI}" ]; then
1589 abi=${DEFAULT_ABI}
1590 else
1591 return ""
1592 fi
1593 eval echo \${${flag}_${abi}}
1594}
1595
1596get_abi_CFLAGS() { get_abi_var CFLAGS $1; }
1597get_abi_CXXFLAGS() { get_abi_var CXXFLAGS $1; }
1598get_abi_ASFLAGS() { get_abi_var ASFLAGS $1; }
1599get_abi_LIBDIR() { get_abi_var LIBDIR $1; }
1600

Legend:
Removed from v.1.125  
changed lines
  Added in v.1.128

  ViewVC Help
Powered by ViewVC 1.1.20