--- /var/paludis/repositories/gentoo/eclass/toolchain.eclass 2007-11-12 19:36:08.000000000 +0000 +++ /var/paludis/repositories/local/eclass/toolchain.eclass 2007-11-20 22:29:54.000000000 +0000 @@ -145,7 +145,7 @@ [[ -n ${D_VER} ]] && IUSE="${IUSE} d" if version_is_at_least 3 ; then - IUSE="${IUSE} bootstrap doc gcj gtk hardened multilib objc vanilla" + IUSE="${IUSE} bootstrap doc gcj gtk hardened libffi multilib objc vanilla" # gcc-{nios2,bfin} don't accept these if [[ ${PN} == "gcc" ]] ; then @@ -958,6 +958,17 @@ einfo "updating configuration to build hardened GCC" make_gcc_hard || die "failed to make gcc hard" fi + + if is_libffi && ! is_gcj ; then + einfo "enabling libffi without gcj" + sed -i~ -e '/^libgcj="/,/"/s/target-libffi//' \ + -e '/^target_libraries="/,/"/s/\${libgcj}/target-libffi &/' \ + configure.in configure + if [[ $(diff configure.in{~,} | wc -l) -ne 8 || + $(diff configure{~,} | wc -l) -ne 8 ]]; then + die "libffi sed went wrong!" + fi + fi } gcc-library_src_unpack() { : @@ -1719,7 +1730,7 @@ # "#include " which (correctly, as it's an "extra" file) # is installed in .../GCCVER/include/libffi; the following fixes # ffi.'s include of ffitarget.h - Armando Di Cianno - if is_objc && ! is_gcj ; then + if { is_libffi || is_objc; } && ! is_gcj ; then #dosed "s:::g" /${LIBPATH}/include/ffi.h mv "${D}"${LIBPATH}/include/libffi/* "${D}"${LIBPATH}/include rm -Rf "${D}"${LIBPATH}/include/libffi @@ -2366,6 +2377,12 @@ use gcj } +is_libffi() { + [[ ${GCCMAJOR} < 3 ]] && return 1 + use build && return 1 + use libffi +} + is_objc() { gcc-lang-supported objc || return 1 use build && return 1