Hello-

This patch makes it easier to disable a specific language, which is a need
that comes up from time to time. I have tested it by trying a variety of
combinations of --enable-languages arguments on the following platforms:

x86_64-linux-gnu
x86_64-pc-cygwin
x86_64-w64-mingw32
aarch64-apple-darwin24
aarch64-redhat-linux (cfarm185)
ppc64le-redhat-linux (cfarm135)
riscv64-linux-gnu (cfarm95)
sparcv9-sun-solaris2.11 (cfarm216)
mips64-unknown-openbsd7.7 (cfarm231)

The syntax used in this patch is like:

--enable-languages=all,^xyz,^abc

to disable xyz and abc. (If I understand correctly, something like

--disable-languages=...

is not naturally supported by autoconf.)

I considered also using '!' rather than '^', which seems fine too, although
more problematic as far as shell quoting. I thought '^' might be a good
choice, being familiar to git users. It would be easy enough to allow '!'
instead or in addition, or some other syntax.

One thing that wasn't clear was what should be the meaning of, say,

--enable-languages=^abc,^xyz

with all languages specified in the disabled sense. Currently, a blank
--enable-languages argument leads to an error, while omitting the option
entirely implies --enable-languages=default. I wasn't sure if
--enable-languages with all negative entries should implicitly subtract from
default, subtract from nothing, or be an error. I ended up deciding that
subtracting from default would be confusing, because it could lead to a
situation where adding to the argument resulted in fewer languages being
built, so at least in this patch, --enable-languages=^abc,^xyz just enables
no languages, which results in building only the minimal required ones, some
subset of c,c++,lto depending on --enable-bootstrap and --enable-lto.

Please let me know what you think, would this or something along these lines
would be a good addition? Thanks!

-Lewis

-- >8 --

Sometimes it can be desirable to get the semantics of
--enable-languages=all, but to exclude one or more languages from the
build. Currently this is not directly supported; the best you can do is to
list the ones you do want to be built as arguments to --enable-languages.
In addition to being inconvenient, this also complicates cross-platform
portability, since --enable-languages=all carries the useful semantics that
unsupported languages will be skipped automatically; by contrast, languages
listed explicitly as arguments to --enable-languages will produce a hard
error if they are not supported.

This patch extends the syntax of --enable-languages so that, e.g.:

--enable-languages=all,^xyz,^abc

would build every supported language other than xyz and abc.

ChangeLog:

        PR bootstrap/12407
        * configure.ac: Add feature to parsing of --enable-languages so that
        a language can be disabled by prefixing it with a caret.
        * configure: Regenerate.

gcc/ChangeLog:

        PR bootstrap/12407
        * doc/install.texi (--enable-languages): Document the new language
        exclusion feature.
---
 configure.ac         | 188 +++++++++++++++++++++++++++++++------------
 configure            | 188 +++++++++++++++++++++++++++++++------------
 gcc/doc/install.texi |  14 +++-
 3 files changed, 288 insertions(+), 102 deletions(-)

diff --git a/configure.ac b/configure.ac
index 94321ffd20a..c71ad5a32ad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2246,16 +2246,40 @@ if test -d ${srcdir}/gcc; then
   # 'f95' is the old name for the 'fortran' language. We issue a warning
   # and make the substitution.
   case ,${enable_languages}, in
-    *,f95,*)
+    *,f95,* | *,^f95,*)
       echo configure.ac: warning: 'f95' as language name is deprecated, use 
'fortran' instead 1>&2
       enable_languages=`echo "${enable_languages}" | sed -e 's/f95/fortran/g'`
       ;;
   esac
 
+  # Extract the language disable requests.  N.B. some non-GNU sed, e.g. on 
SunOS,
+  # will ignore a line without a trailing newline.
+  disable_languages=`echo "$enable_languages" | tr , "$as_nl" | grep '^\^' | 
(tr "$as_nl" , ; echo) | sed -e 's/\^//g' -e 's/,$//'`
+  new_enable_languages=
+  for lang in `echo "$enable_languages" | tr , ' '`; do
+    case "${lang}:,${disable_languages}," in
+      ^default:* | ^all:*)
+        AC_MSG_ERROR([only specific individual languages may be disabled, not 
"$lang"])
+        ;;
+      ^lto:*)
+       AC_MSG_ERROR([LTO should be disabled with the "--disable-lto" argument, 
not via "--enable-languages=^lto"])
+       ;;
+      ^c:*)
+       AC_MSG_ERROR([language "c" cannot be disabled])
+       ;;
+      ^* | ${lang}:*,${lang},*) ;;
+      *) new_enable_languages="${new_enable_languages}${lang}," ;;
+    esac
+  done
+  enable_languages=`echo "$new_enable_languages" | sed -e 's/,$//'`
+
   # If bootstrapping, C++ must be enabled.
-  case ",$enable_languages,:$enable_bootstrap" in
-    *,c++,*:*) ;;
-    *:yes)
+  case ",${enable_languages},:${enable_bootstrap}:,${disable_languages}," in
+    *:yes:*,c++,*)
+      AC_MSG_ERROR([c++ cannot be disabled for a bootstrap build])
+      ;;
+    *,c++,*:*:*) ;;
+    *:yes:*)
       if test -f ${srcdir}/gcc/cp/config-lang.in; then
         enable_languages="${enable_languages},c++"
       else
@@ -2264,9 +2288,9 @@ if test -d ${srcdir}/gcc; then
       ;;
   esac
 
-  # First scan to see if an enabled language requires some other language.
-  # We assume that a given config-lang.in will list all the language
-  # front ends it requires, even if some are required indirectly.
+  # Collect the list of default languages; keep it prefixed and suffixed with
+  # commas for later convenience.
+  default_languages=,
   for lang_frag in ${srcdir}/gcc/*/config-lang.in .. ; do
     case ${lang_frag} in
       ..) ;;
@@ -2274,28 +2298,85 @@ if test -d ${srcdir}/gcc; then
       # an apparent bug in bash 1.12 on linux.
       ${srcdir}/gcc/[[*]]/config-lang.in) ;;
       *)
-        # From the config-lang.in, get $language, $lang_requires, and
-        # $lang_requires_boot_languages.
+        # From the config-lang.in, get $language and $build_by_default.
         language=
-        lang_requires=
-        lang_requires_boot_languages=
-        # set srcdir during sourcing lang_frag to the gcc dir.
-        # Sadly overriding srcdir on the . line doesn't work in plain sh as it
-        # pollutes this shell
+        build_by_default=yes
+        # See note below about saving srcdir.
         saved_srcdir=${srcdir}
         srcdir=${srcdir}/gcc . ${lang_frag}
         srcdir=${saved_srcdir}
-        for other in ${lang_requires} ${lang_requires_boot_languages}; do
-          case ,${enable_languages}, in
-           *,$other,*) ;;
-           *,default,*) ;;
-           *,all,*) ;;
-           *,$language,*)
-             echo " \`$other' language required by \`$language'; enabling" 1>&2
-             enable_languages="${enable_languages},${other}"
+        if test x"$build_by_default" = xyes; then
+          default_languages="${default_languages}${language},"
+        fi
+        ;;
+    esac
+  done
+
+  # First scan to see if an enabled language requires some other language.
+  # We assume that a given config-lang.in will list all the language
+  # front ends it requires, even if some are required indirectly.
+  delayed_error_languages=,
+  for lang_frag in ${srcdir}/gcc/*/config-lang.in .. ; do
+    case ${lang_frag} in
+      ..) ;;
+      # The odd quoting in the next line works around
+      # an apparent bug in bash 1.12 on linux.
+      ${srcdir}/gcc/[[*]]/config-lang.in) ;;
+      *)
+       # From the config-lang.in, get $language, $lang_requires, and
+       # $lang_requires_boot_languages.
+       language=
+       lang_requires=
+       lang_requires_boot_languages=
+       # set srcdir during sourcing lang_frag to the gcc dir.
+       # Sadly overriding srcdir on the . line doesn't work in plain sh as it
+       # pollutes this shell
+       saved_srcdir=${srcdir}
+       srcdir=${srcdir}/gcc . ${lang_frag}
+       srcdir=${saved_srcdir}
+
+       # Determine if this language was requested; if not, don't bring in its
+       # dependencies.  To match historical behavior, do bring in the 
dependencies
+       # for unsupported languages that were not explicitly disabled.
+       case ,${disable_languages}, in
+         *,${language},*) continue ;;
+       esac
+       case ,${enable_languages}, in
+         *,${language},* | *,all,*) ;;
+         *,default,*)
+            case ${default_languages} in
+              *,${language},*) ;;
+              *) continue ;;
+            esac
+            ;;
+         *) continue ;;
+       esac
+
+       # This language was indeed requested; make sure all dependencies are
+       # also enabled.
+       for other in ${lang_requires} ${lang_requires_boot_languages}; do
+         need_to_add=0
+         case ,${enable_languages},:,${disable_languages}, in
+            *:*,${other},*)
+             # This language cannot be built because one of its dependencies
+             # was explicitly disabled.  Don't complain just yet, though; other
+             # checks later may decide the language won't be built anyway.
+             
delayed_error_languages="${delayed_error_languages}${language}:${other},"
+              ;;
+            *,${other},*:* | *,all,*:*) ;;
+            *,default,*:*)
+             case ${default_languages} in
+               *,${other},*) ;;
+               *) need_to_add=1 ;;
+             esac
              ;;
+           *) need_to_add=1 ;;
          esac
-        done
+         if test $need_to_add = 1; then
+           echo " \`$other' language required by \`$language'; enabling" 1>&2
+           enable_languages="${enable_languages},${other}"
+         fi
+       done
        for other in ${lang_requires_boot_languages} ; do
          if test "$other" != "c"; then
            case ,${enable_stage1_languages}, in
@@ -2303,17 +2384,13 @@ if test -d ${srcdir}/gcc; then
              *,default,*) ;;
              *,all,*) ;;
              *)
-               case ,${enable_languages}, in
-                 *,$language,*)
-                   echo " '$other' language required by '$language' in stage 
1; enabling" 1>&2
-                   enable_stage1_languages="$enable_stage1_languages,${other}"
-                   ;;
-               esac
+               echo " '$other' language required by '$language' in stage 1; 
enabling" 1>&2
+               enable_stage1_languages="$enable_stage1_languages,${other}"
                ;;
            esac
-          fi
-        done
-        ;;
+         fi
+       done
+       ;;
     esac
   done
 
@@ -2352,13 +2429,12 @@ if test -d ${srcdir}/gcc; then
       ${srcdir}/gcc/[[*]]/config-lang.in) ;;
       *)
         # From the config-lang.in, get $language, $target_libs, 
-        # $lang_dirs, $boot_language, and $build_by_default
+        # $lang_dirs, and $boot_language.
         language=
         target_libs=
         lang_dirs=
         subdir_requires=
         boot_language=no
-        build_by_default=yes
         # set srcdir during sourcing.  See above about save & restore
         saved_srcdir=${srcdir}
         srcdir=${srcdir}/gcc . ${lang_frag}
@@ -2374,21 +2450,28 @@ if test -d ${srcdir}/gcc; then
 
         add_this_lang=no
         # C is always enabled, so no need to add it again
-        if test "$language" != "c"; then
-          case ,${enable_languages}, in
-            *,${language},*)
-              # Language was explicitly selected; include it
-             add_this_lang=yes
-              ;;
-           *,all,*)
-             # All languages are enabled
-             add_this_lang=all
-              ;;
-            *,default,*)
-              # 'default' was selected, select it if it is a default language
-             add_this_lang=${build_by_default}
-              ;;
-          esac
+       if test "$language" != "c"; then
+           # Determine if this language was requested.
+           case ,${disable_languages}, in
+             *,${language},* ) ;;
+             *)
+               case ,${enable_languages}, in
+                 *,${language},*)
+                   # Language was explicitly selected; include it
+                   add_this_lang=yes
+                   ;;
+                 *,all,*)
+                   # All languages are enabled, and this one not excluded.
+                   add_this_lang=all
+                   ;;
+                 *,default,*)
+                   # 'default' was selected, select it if it is a default 
language
+                   case ${default_languages} in
+                     *,${language},*) add_this_lang=yes ;;
+                   esac
+                   ;;
+               esac
+           esac
         fi
 
         # Disable languages that need other directories if these aren't 
available.
@@ -2489,7 +2572,7 @@ directories, to avoid imposing the performance cost of
               # Silently disable.
               add_this_lang=unsupported
               ;;
-               esac
+         esac
           ;;
         esac
 
@@ -2545,6 +2628,11 @@ directories, to avoid imposing the performance cost of
             potential_languages="${potential_languages}${language},"
            ;;
           all|yes)
+           case "$delayed_error_languages" in
+             *,${language}:*,*)
+               AC_MSG_ERROR([invalid configuration for language "${language}"; 
at least one of the dependencies "$delayed_error_languages" was explicitly 
disabled])
+               ;;
+           esac
            new_enable_languages="${new_enable_languages}${language},"
             potential_languages="${potential_languages}${language},"
            missing_languages=`echo "$missing_languages" | sed 
"s/,$language,/,/"`
diff --git a/configure b/configure
index 2551fe02752..d6c7a6e942a 100755
--- a/configure
+++ b/configure
@@ -9976,16 +9976,40 @@ if test -d ${srcdir}/gcc; then
   # 'f95' is the old name for the 'fortran' language. We issue a warning
   # and make the substitution.
   case ,${enable_languages}, in
-    *,f95,*)
+    *,f95,* | *,^f95,*)
       echo configure.ac: warning: 'f95' as language name is deprecated, use 
'fortran' instead 1>&2
       enable_languages=`echo "${enable_languages}" | sed -e 's/f95/fortran/g'`
       ;;
   esac
 
+  # Extract the language disable requests.  N.B. some non-GNU sed, e.g. on 
SunOS,
+  # will ignore a line without a trailing newline.
+  disable_languages=`echo "$enable_languages" | tr , "$as_nl" | grep '^\^' | 
(tr "$as_nl" , ; echo) | sed -e 's/\^//g' -e 's/,$//'`
+  new_enable_languages=
+  for lang in `echo "$enable_languages" | tr , ' '`; do
+    case "${lang}:,${disable_languages}," in
+      ^default:* | ^all:*)
+        as_fn_error $? "only specific individual languages may be disabled, 
not \"$lang\"" "$LINENO" 5
+        ;;
+      ^lto:*)
+       as_fn_error $? "LTO should be disabled with the \"--disable-lto\" 
argument, not via \"--enable-languages=^lto\"" "$LINENO" 5
+       ;;
+      ^c:*)
+       as_fn_error $? "language \"c\" cannot be disabled" "$LINENO" 5
+       ;;
+      ^* | ${lang}:*,${lang},*) ;;
+      *) new_enable_languages="${new_enable_languages}${lang}," ;;
+    esac
+  done
+  enable_languages=`echo "$new_enable_languages" | sed -e 's/,$//'`
+
   # If bootstrapping, C++ must be enabled.
-  case ",$enable_languages,:$enable_bootstrap" in
-    *,c++,*:*) ;;
-    *:yes)
+  case ",${enable_languages},:${enable_bootstrap}:,${disable_languages}," in
+    *:yes:*,c++,*)
+      as_fn_error $? "c++ cannot be disabled for a bootstrap build" "$LINENO" 5
+      ;;
+    *,c++,*:*:*) ;;
+    *:yes:*)
       if test -f ${srcdir}/gcc/cp/config-lang.in; then
         enable_languages="${enable_languages},c++"
       else
@@ -9994,9 +10018,9 @@ if test -d ${srcdir}/gcc; then
       ;;
   esac
 
-  # First scan to see if an enabled language requires some other language.
-  # We assume that a given config-lang.in will list all the language
-  # front ends it requires, even if some are required indirectly.
+  # Collect the list of default languages; keep it prefixed and suffixed with
+  # commas for later convenience.
+  default_languages=,
   for lang_frag in ${srcdir}/gcc/*/config-lang.in .. ; do
     case ${lang_frag} in
       ..) ;;
@@ -10004,28 +10028,85 @@ if test -d ${srcdir}/gcc; then
       # an apparent bug in bash 1.12 on linux.
       ${srcdir}/gcc/[*]/config-lang.in) ;;
       *)
-        # From the config-lang.in, get $language, $lang_requires, and
-        # $lang_requires_boot_languages.
+        # From the config-lang.in, get $language and $build_by_default.
         language=
-        lang_requires=
-        lang_requires_boot_languages=
-        # set srcdir during sourcing lang_frag to the gcc dir.
-        # Sadly overriding srcdir on the . line doesn't work in plain sh as it
-        # pollutes this shell
+        build_by_default=yes
+        # See note below about saving srcdir.
         saved_srcdir=${srcdir}
         srcdir=${srcdir}/gcc . ${lang_frag}
         srcdir=${saved_srcdir}
-        for other in ${lang_requires} ${lang_requires_boot_languages}; do
-          case ,${enable_languages}, in
-           *,$other,*) ;;
-           *,default,*) ;;
-           *,all,*) ;;
-           *,$language,*)
-             echo " \`$other' language required by \`$language'; enabling" 1>&2
-             enable_languages="${enable_languages},${other}"
+        if test x"$build_by_default" = xyes; then
+          default_languages="${default_languages}${language},"
+        fi
+        ;;
+    esac
+  done
+
+  # First scan to see if an enabled language requires some other language.
+  # We assume that a given config-lang.in will list all the language
+  # front ends it requires, even if some are required indirectly.
+  delayed_error_languages=,
+  for lang_frag in ${srcdir}/gcc/*/config-lang.in .. ; do
+    case ${lang_frag} in
+      ..) ;;
+      # The odd quoting in the next line works around
+      # an apparent bug in bash 1.12 on linux.
+      ${srcdir}/gcc/[*]/config-lang.in) ;;
+      *)
+       # From the config-lang.in, get $language, $lang_requires, and
+       # $lang_requires_boot_languages.
+       language=
+       lang_requires=
+       lang_requires_boot_languages=
+       # set srcdir during sourcing lang_frag to the gcc dir.
+       # Sadly overriding srcdir on the . line doesn't work in plain sh as it
+       # pollutes this shell
+       saved_srcdir=${srcdir}
+       srcdir=${srcdir}/gcc . ${lang_frag}
+       srcdir=${saved_srcdir}
+
+       # Determine if this language was requested; if not, don't bring in its
+       # dependencies.  To match historical behavior, do bring in the 
dependencies
+       # for unsupported languages that were not explicitly disabled.
+       case ,${disable_languages}, in
+         *,${language},*) continue ;;
+       esac
+       case ,${enable_languages}, in
+         *,${language},* | *,all,*) ;;
+         *,default,*)
+            case ${default_languages} in
+              *,${language},*) ;;
+              *) continue ;;
+            esac
+            ;;
+         *) continue ;;
+       esac
+
+       # This language was indeed requested; make sure all dependencies are
+       # also enabled.
+       for other in ${lang_requires} ${lang_requires_boot_languages}; do
+         need_to_add=0
+         case ,${enable_languages},:,${disable_languages}, in
+            *:*,${other},*)
+             # This language cannot be built because one of its dependencies
+             # was explicitly disabled.  Don't complain just yet, though; other
+             # checks later may decide the language won't be built anyway.
+             
delayed_error_languages="${delayed_error_languages}${language}:${other},"
+              ;;
+            *,${other},*:* | *,all,*:*) ;;
+            *,default,*:*)
+             case ${default_languages} in
+               *,${other},*) ;;
+               *) need_to_add=1 ;;
+             esac
              ;;
+           *) need_to_add=1 ;;
          esac
-        done
+         if test $need_to_add = 1; then
+           echo " \`$other' language required by \`$language'; enabling" 1>&2
+           enable_languages="${enable_languages},${other}"
+         fi
+       done
        for other in ${lang_requires_boot_languages} ; do
          if test "$other" != "c"; then
            case ,${enable_stage1_languages}, in
@@ -10033,17 +10114,13 @@ if test -d ${srcdir}/gcc; then
              *,default,*) ;;
              *,all,*) ;;
              *)
-               case ,${enable_languages}, in
-                 *,$language,*)
-                   echo " '$other' language required by '$language' in stage 
1; enabling" 1>&2
-                   enable_stage1_languages="$enable_stage1_languages,${other}"
-                   ;;
-               esac
+               echo " '$other' language required by '$language' in stage 1; 
enabling" 1>&2
+               enable_stage1_languages="$enable_stage1_languages,${other}"
                ;;
            esac
-          fi
-        done
-        ;;
+         fi
+       done
+       ;;
     esac
   done
 
@@ -10082,13 +10159,12 @@ if test -d ${srcdir}/gcc; then
       ${srcdir}/gcc/[*]/config-lang.in) ;;
       *)
         # From the config-lang.in, get $language, $target_libs,
-        # $lang_dirs, $boot_language, and $build_by_default
+        # $lang_dirs, and $boot_language.
         language=
         target_libs=
         lang_dirs=
         subdir_requires=
         boot_language=no
-        build_by_default=yes
         # set srcdir during sourcing.  See above about save & restore
         saved_srcdir=${srcdir}
         srcdir=${srcdir}/gcc . ${lang_frag}
@@ -10104,21 +10180,28 @@ if test -d ${srcdir}/gcc; then
 
         add_this_lang=no
         # C is always enabled, so no need to add it again
-        if test "$language" != "c"; then
-          case ,${enable_languages}, in
-            *,${language},*)
-              # Language was explicitly selected; include it
-             add_this_lang=yes
-              ;;
-           *,all,*)
-             # All languages are enabled
-             add_this_lang=all
-              ;;
-            *,default,*)
-              # 'default' was selected, select it if it is a default language
-             add_this_lang=${build_by_default}
-              ;;
-          esac
+       if test "$language" != "c"; then
+           # Determine if this language was requested.
+           case ,${disable_languages}, in
+             *,${language},* ) ;;
+             *)
+               case ,${enable_languages}, in
+                 *,${language},*)
+                   # Language was explicitly selected; include it
+                   add_this_lang=yes
+                   ;;
+                 *,all,*)
+                   # All languages are enabled, and this one not excluded.
+                   add_this_lang=all
+                   ;;
+                 *,default,*)
+                   # 'default' was selected, select it if it is a default 
language
+                   case ${default_languages} in
+                     *,${language},*) add_this_lang=yes ;;
+                   esac
+                   ;;
+               esac
+           esac
         fi
 
         # Disable languages that need other directories if these aren't 
available.
@@ -10224,7 +10307,7 @@ $as_echo "$as_me: WARNING: --enable-host-shared 
required to build $language" >&2
               # Silently disable.
               add_this_lang=unsupported
               ;;
-               esac
+         esac
           ;;
         esac
 
@@ -10283,6 +10366,11 @@ $as_echo "$as_me: WARNING: ${language} not supported 
for this target" >&2;}
             potential_languages="${potential_languages}${language},"
            ;;
           all|yes)
+           case "$delayed_error_languages" in
+             *,${language}:*,*)
+               as_fn_error $? "invalid configuration for language 
\"${language}\"; at least one of the dependencies \"$delayed_error_languages\" 
was explicitly disabled" "$LINENO" 5
+               ;;
+           esac
            new_enable_languages="${new_enable_languages}${language},"
             potential_languages="${potential_languages}${language},"
            missing_languages=`echo "$missing_languages" | sed 
"s/,$language,/,/"`
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 437e4636db3..7e98ce0e41f 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -2094,7 +2094,7 @@ this option is still experimental and not for normal use 
yet.
 
 Default is the traditional behavior @option{--with-aix-soname=@samp{aix}}.
 
-@item --enable-languages=@var{lang1},@var{lang2},@dots{}
+@item --enable-languages=[^]@var{lang1},[^]@var{lang2},@dots{}
 Specify that only a particular subset of compilers and
 their runtime libraries should be built.  For a list of valid values for
 @var{langN} you can issue the following command in the
@@ -2114,9 +2114,19 @@ LTO is not a
 default language, but is built by default because @option{--enable-lto} is
 enabled by default.  The other languages are default languages.  If
 @code{all} is specified, then all available languages are built.  An
-exception is @code{jit} language, which requires
+exception is the @code{jit} language, which requires
 @option{--enable-host-shared} to be included with @code{all}.
 
+If a language name is prefixed with a caret, such as
+@option{--enable-languages=@samp{all,^objc}}, then that language will
+not be built.  This is most useful when combined with @code{all} or
+@code{default}. A language disabled in this way will be disabled even
+if it is also included without the leading caret earlier or later in
+the argument to @option{--enable-languages}.  An attempt to disable a
+language that is a prerequisite for an enabled languaged---(whether
+the latter language was enabled explicitly, or implicitly via the
+@code{default} or @code{all} directives)---is invalid.
+
 @item --enable-stage1-languages=@var{lang1},@var{lang2},@dots{}
 Specify that a particular subset of compilers and their runtime
 libraries should be built with the system C compiler during stage 1 of

Reply via email to