diff options
author | Yuta SATOH <nigoro@gentoo.gr.jp> | 2013-06-18 21:54:20 +0900 |
---|---|---|
committer | Yuta SATOH <nigoro@gentoo.gr.jp> | 2013-06-18 21:54:20 +0900 |
commit | 0b66a93ccb2be4bbde9c88c43443a56eb8f13031 (patch) | |
tree | c647ea309f84c53f619b71c10e9af3a02c00bb93 /eclass | |
parent | freebsd-mk-defs-9.9999-gentoo.patch: Since source code has been changed, upda... (diff) | |
download | gentoo-bsd-0b66a93ccb2be4bbde9c88c43443a56eb8f13031.tar.gz gentoo-bsd-0b66a93ccb2be4bbde9c88c43443a56eb8f13031.tar.bz2 gentoo-bsd-0b66a93ccb2be4bbde9c88c43443a56eb8f13031.zip |
freebsd.eclass: sync to latest tree
Diffstat (limited to 'eclass')
-rw-r--r-- | eclass/freebsd.eclass | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/eclass/freebsd.eclass b/eclass/freebsd.eclass index 04ac641..fc45b4c 100644 --- a/eclass/freebsd.eclass +++ b/eclass/freebsd.eclass @@ -150,6 +150,51 @@ freebsd_src_compile() { bsdmk_src_compile } +# Helper function to make a multilib build with FreeBSD Makefiles. +# Usage: +# MULTIBUILD_VARIANTS=( $(get_all_abis) ) +# multibuild_foreach_variant freebsd_multilib_multibuild_wrapper my_function +# +# Important note: To use this function you _have_ to: +# - inherit multilib.eclass and multibuild.eclass +# - set MULTILIB_VARIANTS +# - have a multilib useflag in IUSE + +freebsd_multilib_multibuild_wrapper() { + # Get the ABI from multibuild.eclass + # This assumes MULTILIB_VARIANTS contains only valid ABIs. + local ABI=${MULTIBUILD_VARIANT} + + # First, save the variables: CFLAGS, CXXFLAGS, LDFLAGS, LDADD and mymakeopts. + for i in CFLAGS CXXFLAGS LDFLAGS LDADD mymakeopts ; do + export ${i}_SAVE="${!i}" + done + + # Setup the variables specific to this ABI. + multilib_toolchain_setup "${ABI}" + + local target="$(tc-arch-kernel ${CHOST})" + mymakeopts="${mymakeopts} TARGET=${target} MACHINE=${target} MACHINE_ARCH=${target} SHLIBDIR=/usr/$(get_libdir) LIBDIR=/usr/$(get_libdir)" + if use multilib && [ "${ABI}" != "${DEFAULT_ABI}" ] ; then + mymakeopts="${mymakeopts} COMPAT_32BIT=" + fi + + einfo "Building for ABI=${ABI} and TARGET=${target}" + + export MAKEOBJDIRPREFIX="${BUILD_DIR}" + if [ ! -d "${MAKEOBJDIRPREFIX}" ] ; then + mkdir "${MAKEOBJDIRPREFIX}" || die "Could not create ${MAKEOBJDIRPREFIX}." + fi + + CTARGET="${CHOST}" "$@" + + # Restore the variables now. + for i in CFLAGS CXXFLAGS LDFLAGS LDADD mymakeopts ; do + ii="${i}_SAVE" + export ${i}="${!ii}" + done +} + freebsd_src_install() { use profile || mymakeopts="${mymakeopts} NO_PROFILE= " |