Having received no comments, I would like to add this changes to
toolchain.eclass

This is less intrusive.

The compiler check that was in place in the original email maybe is
distruptive. It was checking that the used compiler is ada and version
is less or equal.

I saw that some gcc versions can be build with a newer compiler. IIRC
gcc-13 can build gcc-12 but gcc-11 cannot be built with gcc-12


diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index a5d4345e7fbf..23c57353d702 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -288,38 +288,38 @@ if [[ ${PN} != kgcc64 && ${PN} != gcc-* ]] ; then
        IUSE+=" objc-gc" TC_FEATURES+=( objc-gc )
        IUSE+=" libssp objc++"
 
        # Stop forcing openmp on by default in the eclass. Gradually phase it 
out.
        # See bug #890999.
        if tc_version_is_at_least 13.0.0_pre20221218 ; then
                IUSE+=" openmp"
        else
                IUSE+=" +openmp"
        fi
 
        IUSE+=" fixed-point"
        IUSE+=" go"
        IUSE+=" +sanitize"  TC_FEATURES+=( sanitize )
        IUSE+=" graphite" TC_FEATURES+=( graphite )
-       IUSE+=" ada"
        IUSE+=" vtv"
        IUSE+=" jit"
        IUSE+=" +pie +ssp pch"
 
        IUSE+=" systemtap" TC_FEATURES+=( systemtap )
 
        tc_version_is_at_least 9.0 && IUSE+=" d" TC_FEATURES+=( d )
+       tc_version_is_at_least 9.0 && IUSE+=" ada" TC_FEATURES+=( ada )
        tc_version_is_at_least 9.1 && IUSE+=" lto"
        tc_version_is_at_least 10 && IUSE+=" cet"
        tc_version_is_at_least 10 && IUSE+=" zstd" TC_FEATURES+=( zstd )
        tc_version_is_at_least 11 && IUSE+=" valgrind" TC_FEATURES+=( valgrind )
        tc_version_is_at_least 11 && IUSE+=" custom-cflags"
        tc_version_is_at_least 12 && IUSE+=" ieee-long-double"
        tc_version_is_at_least 12.2.1_p20221203 ${PV} && IUSE+=" default-znow"
        tc_version_is_at_least 12.2.1_p20221203 ${PV} && IUSE+=" 
default-stack-clash-protection"
        tc_version_is_at_least 13.0.0_pre20221218 ${PV} && IUSE+=" modula2"
        # See https://gcc.gnu.org/pipermail/gcc-patches/2023-April/615944.html
        # and 
https://rust-gcc.github.io/2023/04/24/gccrs-and-gcc13-release.html for why
        # it was disabled in 13.
        tc_version_is_at_least 14.0.0_pre20230423 ${PV} && IUSE+=" rust"
 fi
 
@@ -2495,31 +2495,31 @@ should_we_gcc_config() {
 #
 # Also add a hook so special ebuilds (kgcc64) can control which languages
 # exactly get enabled
 gcc-lang-supported() {
        grep ^language=\"${1}\" "${S}"/gcc/*/config-lang.in > /dev/null || 
return 1
        [[ -z ${TOOLCHAIN_ALLOWED_LANGS} ]] && return 0
        has $1 ${TOOLCHAIN_ALLOWED_LANGS}
 }
 
 _tc_use_if_iuse() {
        in_iuse $1 && use $1
 }
 
 is_ada() {
        gcc-lang-supported ada || return 1
-       _tc_use_if_iuse ada
+       _tc_use_if_iuse cxx && _tc_use_if_iuse ada
 }
 
 is_cxx() {
        gcc-lang-supported 'c++' || return 1
        _tc_use_if_iuse cxx
 }
 
 is_d() {
        gcc-lang-supported d || return 1
        _tc_use_if_iuse d
 }
 
 is_f77() {
        gcc-lang-supported f77 || return 1
        _tc_use_if_iuse fortran

Reply via email to