--- toolchain.eclass +++ toolchain.eclass @@ -128,7 +128,7 @@ tc_version_is_at_least 3 && IUSE+=" doc gcj awt hardened multilib objc" tc_version_is_at_least 4.0 && IUSE+=" objc-gc" tc_version_is_between 4.0 4.9 && IUSE+=" mudflap" - tc_version_is_at_least 4.1 && IUSE+=" libssp objc++" + tc_version_is_at_least 4.1 && IUSE+=" gcj-alsa gcj-dssi libssp objc++" tc_version_is_at_least 4.2 && IUSE_DEF+=" openmp" tc_version_is_at_least 4.3 && IUSE+=" fixed-point" tc_version_is_at_least 4.6 && IUSE+=" graphite" @@ -145,6 +145,14 @@ SLOT="${GCC_BRANCH_VER}" fi +#---->> REQUIRED_USE <<---- + +if ! has "${EAPI:-0}" 0 1 2 3 ; then + REQUIRED_USE="" + in_iuse gcj-alsa && REQUIRED_USE+=" gcj-alsa? ( gcj )" + in_iuse gcj-dssi && REQUIRED_USE+=" gcj-dssi? ( gcj )" +fi + #---->> DEPEND <<---- RDEPEND="sys-libs/zlib @@ -189,23 +197,132 @@ )" if in_iuse gcj ; then - GCJ_DEPS=">=media-libs/libart_lgpl-2.1" - GCJ_GTK_DEPS=" - x11-libs/libXt - x11-libs/libX11 - x11-libs/libXtst - x11-proto/xproto - x11-proto/xextproto - =x11-libs/gtk+-2* - virtual/pkgconfig - amd64? ( multilib? ( - app-emulation/emul-linux-x86-gtklibs - app-emulation/emul-linux-x86-xlibs - ) ) - " - tc_version_is_at_least 3.4 && GCJ_GTK_DEPS+=" x11-libs/pango" - tc_version_is_at_least 4.2 && GCJ_DEPS+=" app-arch/zip app-arch/unzip" - DEPEND+=" gcj? ( awt? ( ${GCJ_GTK_DEPS} ) ${GCJ_DEPS} )" + DEPEND+=" gcj? (" + RDEPEND+=" gcj? (" + GCC_GCJ_ZLIB_DEPS=" + amd64? ( multilib? ( || ( + sys-libs/zlib[abi_x86_32] + app-emulation/emul-linux-x86-baselibs[-abi_x86_32] + ) ) )" + DEPEND+=" ${GCC_GCJ_ZLIB_DEPS}" + RDEPEND+=" ${GCC_GCJ_ZLIB_DEPS}" + + tc_version_is_at_least 4.2 && DEPEND+=" app-arch/zip app-arch/unzip" + + if tc_version_is_at_least 4.4 ; then + GCC_GCJ_GMP_DEPS=" + amd64? ( multilib? ( || ( + dev-libs/gmp[abi_x86_32] + app-emulation/emul-linux-x86-baselibs[-abi_x86_32] + ) ) )" + DEPEND+=" ${GCC_GCJ_GMP_DEPS}" + RDEPEND+=" ${GCC_GCJ_GMP_DEPS}" + fi + + if in_iuse awt ; then + DEPEND+=" awt? (" + RDEPEND+=" awt? (" + GCC_GCJ_GTK_DEPS="x11-libs/gtk+:2 + amd64? ( multilib? ( || ( + x11-libs/gtk+:2[abi_x86_32] + app-emulation/emul-linux-x86-gtklibs[-abi_x86_32] + ) ) )" + DEPEND+=" ${GCC_GCJ_GTK_DEPS} + virtual/pkgconfig + x11-libs/libX11 + x11-proto/xproto + amd64? ( multilib? ( || ( + ( + x11-libs/libX11[abi_x86_32] + x11-proto/xproto[abi_x86_32] + ) + app-emulation/emul-linux-x86-xlibs[-abi_x86_32] + ) ) )" + RDEPEND+=" ${GCC_GCJ_GTK_DEPS}" + + if tc_version_is_between 3.4 4.1; then + GCC_GCJ_LIBART_DEPS=">=media-libs/libart_lgpl-2.1 + amd64? ( multilib? ( || ( + >=media-libs/libart_lgpl-2.1[abi_x86_32] + app-emulation/emul-linux-x86-baselibs[-abi_x86_32] + ) ) )" + DEPEND+=" ${GCC_GCJ_LIBART_DEPS}" + RDEPEND+=" ${GCC_GCJ_LIBART_DEPS}" + fi + + if tc_version_is_at_least 3.4 ; then + GCC_GCJ_CAIRO_PANGO_DEPS="x11-libs/cairo + x11-libs/pango + amd64? ( multilib? ( || ( + ( + x11-libs/cairo[abi_x86_32] + x11-libs/pango[abi_x86_32] + ) + app-emulation/emul-linux-x86-gtklibs[-abi_x86_32] + ) ) )" + DEPEND+=" ${GCC_GCJ_CAIRO_PANGO_DEPS}" + RDEPEND+=" ${GCC_GCJ_CAIRO_PANGO_DEPS}" + fi + + if tc_version_is_at_least 4.0 ; then + GCC_GCJ_XTST_DEPS="x11-libs/libXtst + amd64? ( multilib? ( || ( + x11-libs/libXtst[abi_x86_32] + app-emulation/emul-linux-x86-xlibs[-abi_x86_32] + ) ) )" + DEPEND+=" ${GCC_GCJ_XTST_DEPS}" + RDEPEND+=" ${GCC_GCJ_XTST_DEPS}" + fi + + if tc_version_is_at_least 4.1 ; then + GCC_GCJ_FREETYPE_DEPS="media-libs/freetype + amd64? ( multilib? ( || ( + media-libs/freetype[abi_x86_32] + app-emulation/emul-linux-x86-xlibs[-abi_x86_32] + ) ) )" + DEPEND+=" ${GCC_GCJ_FREETYPE_DEPS}" + RDEPEND+=" ${GCC_GCJ_FREETYPE_DEPS}" + fi + + if tc_version_is_at_least 4.2 ; then + GCC_GCJ_XRANDR_XRENDER_DEPS="x11-libs/libXrandr + x11-libs/libXrender + amd64? ( multilib? ( || ( + ( + x11-libs/libXrandr[abi_x86_32] + x11-libs/libXrender[abi_x86_32] + ) + app-emulation/emul-linux-x86-xlibs[-abi_x86_32] + ) ) )" + DEPEND+=" ${GCC_GCJ_XRANDR_XRENDER_DEPS}" + RDEPEND+=" ${GCC_GCJ_XRANDR_XRENDER_DEPS}" + fi + DEPEND+=" )" + RDEPEND+=" )" + fi + + if in_iuse gcj-alsa ; then + GCC_GCJ_ALSA_LIBS="media-libs/alsa-lib + amd64? ( multilib? ( || ( + media-libs/alsa-lib[abi_x86_32] + app-emulation/emul-linux-x86-soundlibs[-abi_x86_32] + ) ) )" + DEPEND+=" gcj-alsa? ( ${GCC_GCJ_ALSA_LIBS} virtual/pkgconfig )" + RDEPEND+=" gcj-alsa? ( ${GCC_GCJ_ALSA_LIBS} )" + fi + + if in_iuse gcj-dssi ; then + GCC_GCJ_DSSI_LIBS="media-sound/jack-audio-connection-kit + amd64? ( multilib? ( || ( + media-sound/jack-audio-connection-kit[abi_x86_32] + app-emulation/emul-linux-x86-soundlibs[-abi_x86_32] + ) ) )" + DEPEND+=" gcj-dssi? ( ${GCC_GCJ_DSSI_LIBS} media-libs/dssi )" + RDEPEND+=" gcj-dssi? ( ${GCC_GCJ_DSSI_LIBS} )" + fi + + DEPEND+=" )" + RDEPEND+=" )" fi PDEPEND=">=sys-devel/gcc-config-1.7" @@ -576,6 +693,20 @@ einfo " ${f%%...}" done fi + + mkdir -p "${T}"/pkgconfig + + # Disable check for libart. + # https://gcc.gnu.org/PR61552 + if tc_version_is_at_least 4.1 ; then + cat <<- EOF > "${T}"/pkgconfig/libart-2.0.pc + Name: libart + Description: libart + Version: 2.1 + Cflags: + Libs: + EOF + fi } guess_patch_type_in_dir() { @@ -1097,10 +1228,14 @@ ### library options - if ! is_gcj ; then + if is_gcj ; then + if use awt ; then + confgcc+=( --enable-java-awt=gtk ) + fi + confgcc+=( $(use_enable gcj-alsa alsa) ) + confgcc+=( $(use_enable gcj-dssi dssi) ) + else confgcc+=( --disable-libgcj ) - elif use awt ; then - confgcc+=( --enable-java-awt=gtk ) fi if tc_version_is_at_least 4.2 ; then @@ -1180,6 +1315,8 @@ confgcc+=( "$@" ${EXTRA_ECONF} ) + local -x PKG_CONFIG_PATH="${T}/pkgconfig${PKG_CONFIG_PATH:+:}${PKG_CONFIG_PATH}" + # Nothing wrong with a good dose of verbosity echo einfo "PREFIX: ${PREFIX}" @@ -1473,6 +1610,8 @@ [[ ! -x /usr/bin/perl ]] \ && find "${WORKDIR}"/build -name '*.[17]' | xargs touch + local -x PKG_CONFIG_PATH="${T}/pkgconfig${PKG_CONFIG_PATH:+:}${PKG_CONFIG_PATH}" + gcc_do_make ${GCC_MAKE_TARGET} }