--- /usr/portage/dev-libs/dietlibc/dietlibc-0.33_pre20110403.ebuild 2011-05-06 14:01:07.000000000 +0200 +++ /usr/portage/dev-libs/dietlibc/dietlibc-0.33_pre20110403.ebuild 2011-08-11 00:13:58.000000000 +0200 @@ -26,6 +26,12 @@ DIETHOME=/usr/diet +IUSE_LIBC_TARGET="alpha arm armeb i386 ia64 mips mipsel parisc parisc64 ppc ppc64 s390 s390x sparc sparc64 x86_64" + +for t in ${IUSE_LIBC_TARGET} ; do + IUSE="${IUSE} target_${t}" +done + pkg_setup() { # Replace sparc64 related C[XX]FLAGS (see bug #45716) use sparc && replace-sparc64-flags @@ -36,6 +42,12 @@ # debug flags use debug && append-flags -g + dARCH=$(tc-ninja_magic_to_arch) + case ${dARCH} in + x86) dARCH=i386 ;; + amd64) dARCH=x86_64 ;; + esac + # Makefile does not append CFLAGS append-flags -nostdinc -W -Wall -Wextra -Wchar-subscripts \ -Wmissing-prototypes -Wmissing-declarations -Wno-switch \ @@ -46,19 +58,42 @@ } src_compile() { - emake prefix=${DIETHOME} \ - CC="$(tc-getCC)" \ - CFLAGS="${CFLAGS}" \ - STRIP=":" \ - || die "make failed" + for t in ${IUSE_LIBC_TARGET} ; do + use target_$t $USE || continue + + tC="CROSS_$t" + if [ -z "${!tC}" ] ; then + ewarn "CROSS_$t not defined, can't build" + sleep 15 + continue + fi + + einfo "Building libc $t" + emake prefix=${DIETHOME} \ + MYARCH="${t}" \ + CROSS="${!tC}" \ + CFLAGS="${CFLAGS}" \ + STRIP=":" \ + || die "make failed" + done } src_install() { emake prefix=${DIETHOME} \ DESTDIR="${D}" \ - install-bin \ install-headers \ - || die "make install failed" + || die "make install-headers failed" + + for t in ${IUSE_LIBC_TARGET} ; do + use target_$t $USE || continue + + einfo "Installing libc $t" + emake prefix=${DIETHOME} \ + MYARCH="${t}" \ + DESTDIR="${D}" \ + install-bin \ + || die "make install-bin failed" + done dobin "${D}"${DIETHOME}/bin/* || die "dobin failed" doman "${D}"${DIETHOME}/man/*/* || die "doman failed"