summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorYuta SATOH <nigoro@gentoo.gr.jp>2013-06-18 21:54:20 +0900
committerYuta SATOH <nigoro@gentoo.gr.jp>2013-06-18 21:54:20 +0900
commit0b66a93ccb2be4bbde9c88c43443a56eb8f13031 (patch)
treec647ea309f84c53f619b71c10e9af3a02c00bb93 /eclass
parentfreebsd-mk-defs-9.9999-gentoo.patch: Since source code has been changed, upda... (diff)
downloadgentoo-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.eclass45
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= "