| 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/multilib.eclass,v 1.43 2005/10/12 22:39:07 vapier Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/multilib.eclass,v 1.49 2006/05/28 19:31:33 blubb Exp $ |
| 4 | # |
4 | # |
| 5 | # Author: Jeremy Huddleston <eradicator@gentoo.org> |
5 | # Author: Jeremy Huddleston <eradicator@gentoo.org> |
| 6 | # |
6 | # |
| 7 | # This eclass is for all functions pertaining to handling multilib. |
7 | # This eclass is for all functions pertaining to handling multilib. |
| 8 | # configurations. |
8 | # configurations. |
| … | |
… | |
| 100 | export LDFLAGS_default |
100 | export LDFLAGS_default |
| 101 | export CHOST_default=${CHOST_default:-${CHOST}} |
101 | export CHOST_default=${CHOST_default:-${CHOST}} |
| 102 | export CTARGET_default=${CTARGET_default:-${CTARGET:-${CHOST_default}}} |
102 | export CTARGET_default=${CTARGET_default:-${CTARGET:-${CHOST_default}}} |
| 103 | export LIBDIR_default=${CONF_LIBDIR:-"lib"} |
103 | export LIBDIR_default=${CONF_LIBDIR:-"lib"} |
| 104 | export CDEFINE_default="__unix__" |
104 | export CDEFINE_default="__unix__" |
|
|
105 | export KERNEL_ABI=${KERNEL_ABI:-${DEFAULT_ABI}} |
| 105 | |
106 | |
| 106 | # has_multilib_profile() |
107 | # has_multilib_profile() |
| 107 | has_multilib_profile() { |
108 | has_multilib_profile() { |
| 108 | [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ] |
109 | [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ] |
| 109 | } |
110 | } |
| … | |
… | |
| 266 | get_all_libdirs() { |
267 | get_all_libdirs() { |
| 267 | local libdirs="lib" |
268 | local libdirs="lib" |
| 268 | local abi |
269 | local abi |
| 269 | local dir |
270 | local dir |
| 270 | |
271 | |
| 271 | if has_multilib_profile; then |
272 | # Remove when amd64's 2004.3 is purged. |
|
|
273 | if [[ -n "${CONF_LIBDIR}" ]]; then |
|
|
274 | for dir in ${CONF_LIBDIR} ${CONF_MULTILIBDIR:-lib32}; do |
|
|
275 | [ "${dir}" != "lib" ] && libdirs="${libdirs} ${dir}" |
|
|
276 | done |
|
|
277 | else |
| 272 | for abi in ${MULTILIB_ABIS}; do |
278 | for abi in ${MULTILIB_ABIS}; do |
| 273 | [ "$(get_abi_LIBDIR ${abi})" != "lib" ] && libdirs="${libdirs} $(get_abi_LIBDIR ${abi})" |
279 | [ "$(get_abi_LIBDIR ${abi})" != "lib" ] && libdirs="${libdirs} $(get_abi_LIBDIR ${abi})" |
| 274 | done |
|
|
| 275 | elif [ -n "${CONF_LIBDIR}" ]; then |
|
|
| 276 | for dir in ${CONF_LIBDIR} ${CONF_MULTILIBDIR:-lib32}; do |
|
|
| 277 | [ "${dir}" != "lib" ] && libdirs="${libdirs} ${dir}" |
|
|
| 278 | done |
280 | done |
| 279 | fi |
281 | fi |
| 280 | |
282 | |
| 281 | echo "${libdirs}" |
283 | echo "${libdirs}" |
| 282 | } |
284 | } |
| … | |
… | |
| 388 | # Ideas for this code came from debian's sparc-linux headers package. |
390 | # Ideas for this code came from debian's sparc-linux headers package. |
| 389 | # |
391 | # |
| 390 | # Example: |
392 | # Example: |
| 391 | # create_ml_includes /usr/include/asm __sparc__:/usr/include/asm-sparc __sparc64__:/usr/include/asm-sparc64 |
393 | # create_ml_includes /usr/include/asm __sparc__:/usr/include/asm-sparc __sparc64__:/usr/include/asm-sparc64 |
| 392 | # create_ml_includes /usr/include/asm __i386__:/usr/include/asm-i386 __x86_64__:/usr/include/asm-x86_64 |
394 | # create_ml_includes /usr/include/asm __i386__:/usr/include/asm-i386 __x86_64__:/usr/include/asm-x86_64 |
|
|
395 | # |
|
|
396 | # Warning: Be careful with the ordering here. The default ABI has to be the |
|
|
397 | # last, because it is always defined (by GCC) |
| 393 | create_ml_includes() { |
398 | create_ml_includes() { |
| 394 | local dest=$1 |
399 | local dest=$1 |
| 395 | shift |
400 | shift |
| 396 | local basedirs=$(create_ml_includes-listdirs "$@") |
401 | local basedirs=$(create_ml_includes-listdirs "$@") |
| 397 | |
402 | |
| … | |
… | |
| 531 | # exit because we'll likely be called from a subshell |
536 | # exit because we'll likely be called from a subshell |
| 532 | exit 1 |
537 | exit 1 |
| 533 | } |
538 | } |
| 534 | |
539 | |
| 535 | get_libname() { |
540 | get_libname() { |
|
|
541 | local libname |
| 536 | local ver=$1 |
542 | local ver=$1 |
| 537 | if use userland_Darwin ; then |
543 | case ${CHOST} in |
|
|
544 | *-darwin*) libname="dylib";; |
|
|
545 | *) libname="so";; |
|
|
546 | esac |
|
|
547 | |
| 538 | if [ -z ${ver} ] ; then |
548 | if [[ -z $@ ]] ; then |
| 539 | echo ".dylib" |
549 | echo ".${libname}" |
| 540 | else |
|
|
| 541 | echo ".${ver}.dylib" |
|
|
| 542 | fi |
|
|
| 543 | else |
550 | else |
| 544 | if [ -z ${ver} ] ; then |
551 | for ver in "$@" ; do |
| 545 | echo ".so" |
552 | case ${CHOST} in |
| 546 | else |
553 | *-darwin*) echo ".${ver}.${libname}";; |
| 547 | echo ".so.${ver}" |
554 | *) echo ".${libname}.${ver}";; |
| 548 | fi |
555 | esac |
|
|
556 | done |
| 549 | fi |
557 | fi |
| 550 | } |
558 | } |
| 551 | |
559 | |
| 552 | # This is for the toolchain to setup profile variables when pulling in |
560 | # This is for the toolchain to setup profile variables when pulling in |
| 553 | # a crosscompiler (and thus they aren't set in the profile) |
561 | # a crosscompiler (and thus they aren't set in the profile) |
| … | |
… | |
| 588 | export CHOST_n64=${CTARGET} |
596 | export CHOST_n64=${CTARGET} |
| 589 | export CTARGET_n64=${CHOST_n64} |
597 | export CTARGET_n64=${CHOST_n64} |
| 590 | export CDEFINE_n64="_MIPS_SIM == _ABI64" |
598 | export CDEFINE_n64="_MIPS_SIM == _ABI64" |
| 591 | export LIBDIR_n64="lib64" |
599 | export LIBDIR_n64="lib64" |
| 592 | |
600 | |
| 593 | export MULTILIB_ABIS="n64 n32" # o32 |
601 | export MULTILIB_ABIS="n64 n32 o32" |
| 594 | export DEFAULT_ABI="n32" |
602 | export DEFAULT_ABI="n32" |
| 595 | ;; |
603 | ;; |
| 596 | powerpc64*) |
604 | powerpc64*) |
| 597 | export CFLAGS_ppc=${CFLAGS_ppc--m32} |
605 | export CFLAGS_ppc=${CFLAGS_ppc--m32} |
| 598 | export CHOST_ppc=${CTARGET/powerpc64/powerpc} |
606 | export CHOST_ppc=${CTARGET/powerpc64/powerpc} |
| 599 | export CTARGET_ppc=${CHOST_ppc} |
607 | export CTARGET_ppc=${CHOST_ppc} |