diff mbox series

Tweak language choice in config-list.mk

Message ID mptv8cmpc0c.fsf@arm.com
State New
Headers show
Series Tweak language choice in config-list.mk | expand

Commit Message

Richard Sandiford Sept. 7, 2023, 9:29 a.m. UTC
When I tried to use config-list.mk, the build for every triple except
the build machine's failed for m2.  This is because, unlike other
languages, m2 builds target objects during all-gcc.  The build will
therefore fail unless you have access to an appropriate binutils
(or an equivalent).  That's quite a big ask for over 100 targets. :)

This patch therefore makes m2 an optional inclusion.

Doing that wasn't entirely straightforward though.  The current
configure line includes "--enable-languages=all,...", which means
that the "..." can only force languages to be added that otherwise
wouldn't have been.  (I.e. the only effect of the "..." is to
override configure autodetection.)

The choice of all,ada and:

  # Make sure you have a recent enough gcc (with ada support) in your path so
  # that --enable-werror-always will work.

make it clear that lack of GNAT should be a build failure rather than
silently ignored.  This predates the D frontend, which requires GDC
in the same way that Ada requires GNAT.  I don't know of a reason
why D should be treated differently.

The patch therefore expands the "all" into a specific list of
languages.

That in turn meant that Fortran had to be handled specially,
since bpf and mmix don't support Fortran.

Perhaps there's an argument that m2 shouldn't build target objects
during all-gcc, but (a) it works for practical usage and (b) the
patch is an easy workaround.  I'd be happy for the patch to be
reverted if the build system changes.

OK to install?

Richard


gcc/
	* contrib/config-list.mk (OPT_IN_LANGUAGES): New variable.
	($(LIST)): Replace --enable-languages=all with a specifc list.
	Disable fortran on bpf and mmix.  Enable the languages in
	OPT_IN_LANGUAGES.
---
 contrib/config-list.mk | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

Comments

Richard Biener Sept. 12, 2023, 9:47 a.m. UTC | #1
On Thu, Sep 7, 2023 at 11:30 AM Richard Sandiford via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> When I tried to use config-list.mk, the build for every triple except
> the build machine's failed for m2.  This is because, unlike other
> languages, m2 builds target objects during all-gcc.  The build will
> therefore fail unless you have access to an appropriate binutils
> (or an equivalent).  That's quite a big ask for over 100 targets. :)
>
> This patch therefore makes m2 an optional inclusion.
>
> Doing that wasn't entirely straightforward though.  The current
> configure line includes "--enable-languages=all,...", which means
> that the "..." can only force languages to be added that otherwise
> wouldn't have been.  (I.e. the only effect of the "..." is to
> override configure autodetection.)
>
> The choice of all,ada and:
>
>   # Make sure you have a recent enough gcc (with ada support) in your path so
>   # that --enable-werror-always will work.
>
> make it clear that lack of GNAT should be a build failure rather than
> silently ignored.  This predates the D frontend, which requires GDC
> in the same way that Ada requires GNAT.  I don't know of a reason
> why D should be treated differently.
>
> The patch therefore expands the "all" into a specific list of
> languages.
>
> That in turn meant that Fortran had to be handled specially,
> since bpf and mmix don't support Fortran.
>
> Perhaps there's an argument that m2 shouldn't build target objects
> during all-gcc,

Yes, I think that's unfortunate - can you open a bugreport for this?

> but (a) it works for practical usage and (b) the
> patch is an easy workaround.  I'd be happy for the patch to be
> reverted if the build system changes.
>
> OK to install?

OK.

> Richard
>
>
> gcc/
>         * contrib/config-list.mk (OPT_IN_LANGUAGES): New variable.
>         ($(LIST)): Replace --enable-languages=all with a specifc list.
>         Disable fortran on bpf and mmix.  Enable the languages in
>         OPT_IN_LANGUAGES.
> ---
>  contrib/config-list.mk | 17 ++++++++++++++---
>  1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/contrib/config-list.mk b/contrib/config-list.mk
> index e570b13c71b..50ecb014bc0 100644
> --- a/contrib/config-list.mk
> +++ b/contrib/config-list.mk
> @@ -12,6 +12,11 @@ TEST=all-gcc
>  # supply an absolute path.
>  GCC_SRC_DIR=../../gcc
>
> +# Define this to ,m2 if you want to build Modula-2.  Modula-2 builds target
> +# objects during all-gcc, so it can only be included if you've installed
> +# binutils (or an equivalent) for each target.
> +OPT_IN_LANGUAGES=
> +
>  # Use -j / -l make arguments and nice to assure a smooth resource-efficient
>  # load on the build machine, e.g. for 24 cores:
>  # svn co svn://gcc.gnu.org/svn/gcc/branches/foo-branch gcc
> @@ -126,17 +131,23 @@ $(LIST): make-log-dir
>                 TGT=`echo $@ | awk 'BEGIN { FS = "OPT" }; { print $$1 }'` &&                    \
>                 TGT=`$(GCC_SRC_DIR)/config.sub $$TGT` &&                                        \
>                 case $$TGT in                                                                   \
> -                       *-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix* | bpf-*-*)                    \
> +                       bpf-*-*)                                                                \
>                                 ADDITIONAL_LANGUAGES="";                                        \
>                                 ;;                                                              \
> -                       *)                                                                      \
> +                       *-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix* | bpf-*-*)            \
> +                               ADDITIONAL_LANGUAGES=",fortran";                                \
> +                               ;;                                                              \
> +                       mmix-*-*)                                                               \
>                                 ADDITIONAL_LANGUAGES=",go";                                     \
>                                 ;;                                                              \
> +                       *)                                                                      \
> +                               ADDITIONAL_LANGUAGES=",fortran,go";                             \
> +                               ;;                                                              \
>                 esac &&                                                                         \
>                 $(GCC_SRC_DIR)/configure                                                        \
>                         --target=$(subst SCRIPTS,`pwd`/../scripts/,$(subst OPT,$(empty) -,$@))  \
>                         --enable-werror-always ${host_options}                                  \
> -                       --enable-languages=all,ada$$ADDITIONAL_LANGUAGES;                       \
> +                       --enable-languages=c,ada,c++,d,lto,objc,obj-c++,rust$$ADDITIONAL_LANGUAGES$(OPT_IN_LANGUAGES); \
>         ) > log/$@-config.out 2>&1
>
>  $(LOGFILES) : log/%-make.out : %
> --
> 2.25.1
>
Christophe Lyon Sept. 13, 2023, 10:26 a.m. UTC | #2
Hi!


On Thu, 7 Sept 2023 at 11:30, Richard Sandiford via Gcc-patches <
gcc-patches@gcc.gnu.org> wrote:

> When I tried to use config-list.mk, the build for every triple except
> the build machine's failed for m2.  This is because, unlike other
> languages, m2 builds target objects during all-gcc.  The build will
> therefore fail unless you have access to an appropriate binutils
> (or an equivalent).  That's quite a big ask for over 100 targets. :)
>
> This patch therefore makes m2 an optional inclusion.
>
> Doing that wasn't entirely straightforward though.  The current
> configure line includes "--enable-languages=all,...", which means
> that the "..." can only force languages to be added that otherwise
> wouldn't have been.  (I.e. the only effect of the "..." is to
> override configure autodetection.)
>
> The choice of all,ada and:
>
>   # Make sure you have a recent enough gcc (with ada support) in your path
> so
>   # that --enable-werror-always will work.
>
> make it clear that lack of GNAT should be a build failure rather than
> silently ignored.  This predates the D frontend, which requires GDC
> in the same way that Ada requires GNAT.  I don't know of a reason
> why D should be treated differently.
>
> The patch therefore expands the "all" into a specific list of
> languages.
>
> That in turn meant that Fortran had to be handled specially,
> since bpf and mmix don't support Fortran.
>
> Perhaps there's an argument that m2 shouldn't build target objects
> during all-gcc, but (a) it works for practical usage and (b) the
> patch is an easy workaround.  I'd be happy for the patch to be
> reverted if the build system changes.
>
> OK to install?
>
> Richard
>
>
> gcc/
>         * contrib/config-list.mk (OPT_IN_LANGUAGES): New variable.
>         ($(LIST)): Replace --enable-languages=all with a specifc list.
>         Disable fortran on bpf and mmix.  Enable the languages in
>         OPT_IN_LANGUAGES.
> ---
>  contrib/config-list.mk | 17 ++++++++++++++---
>  1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/contrib/config-list.mk b/contrib/config-list.mk
> index e570b13c71b..50ecb014bc0 100644
> --- a/contrib/config-list.mk
> +++ b/contrib/config-list.mk
> @@ -12,6 +12,11 @@ TEST=all-gcc
>  # supply an absolute path.
>  GCC_SRC_DIR=../../gcc
>
> +# Define this to ,m2 if you want to build Modula-2.  Modula-2 builds
> target
> +# objects during all-gcc, so it can only be included if you've installed
> +# binutils (or an equivalent) for each target.
> +OPT_IN_LANGUAGES=
> +
>  # Use -j / -l make arguments and nice to assure a smooth
> resource-efficient
>  # load on the build machine, e.g. for 24 cores:
>  # svn co svn://gcc.gnu.org/svn/gcc/branches/foo-branch gcc
> @@ -126,17 +131,23 @@ $(LIST): make-log-dir
>                 TGT=`echo $@ | awk 'BEGIN { FS = "OPT" }; { print $$1 }'`
> &&                    \
>                 TGT=`$(GCC_SRC_DIR)/config.sub $$TGT` &&
>                       \
>                 case $$TGT in
>                      \
> -                       *-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix*
> | bpf-*-*)                    \
> +                       bpf-*-*)
>                       \
>                                 ADDITIONAL_LANGUAGES="";
>                       \
>                                 ;;
>                       \
> -                       *)
>                       \
> +                       *-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix*
> | bpf-*-*)            \
>
Am I misreading, or are you matching bpf here and above? From your commit
message, I think bpf should either be only above (and define
ADDITIONAL_LANGUAGES to "") and along with mmix (if it supports go) ?



> +                               ADDITIONAL_LANGUAGES=",fortran";
>                       \
> +                               ;;
>                       \
> +                       mmix-*-*)
>                      \
>                                 ADDITIONAL_LANGUAGES=",go";
>                      \
>                                 ;;
>                       \
> +                       *)
>                       \
> +                               ADDITIONAL_LANGUAGES=",fortran,go";
>                      \
> +                               ;;
>                       \
>                 esac &&
>                      \
>                 $(GCC_SRC_DIR)/configure
>                       \
>                         --target=$(subst SCRIPTS,`pwd`/../scripts/,$(subst
> OPT,$(empty) -,$@))  \
>                         --enable-werror-always ${host_options}
>                       \
> -                       --enable-languages=all,ada$$ADDITIONAL_LANGUAGES;
>                      \
> +
>  --enable-languages=c,ada,c++,d,lto,objc,obj-c++,rust$$ADDITIONAL_LANGUAGES$(OPT_IN_LANGUAGES);
> \
>         ) > log/$@-config.out 2>&1
>
>  $(LOGFILES) : log/%-make.out : %
> --
> 2.25.1
>
>
Richard Sandiford Dec. 2, 2023, 2:25 p.m. UTC | #3
Christophe Lyon <christophe.lyon@linaro.org> writes:
> Hi!
>
>
> On Thu, 7 Sept 2023 at 11:30, Richard Sandiford via Gcc-patches <
> gcc-patches@gcc.gnu.org> wrote:
>
>> When I tried to use config-list.mk, the build for every triple except
>> the build machine's failed for m2.  This is because, unlike other
>> languages, m2 builds target objects during all-gcc.  The build will
>> therefore fail unless you have access to an appropriate binutils
>> (or an equivalent).  That's quite a big ask for over 100 targets. :)
>>
>> This patch therefore makes m2 an optional inclusion.
>>
>> Doing that wasn't entirely straightforward though.  The current
>> configure line includes "--enable-languages=all,...", which means
>> that the "..." can only force languages to be added that otherwise
>> wouldn't have been.  (I.e. the only effect of the "..." is to
>> override configure autodetection.)
>>
>> The choice of all,ada and:
>>
>>   # Make sure you have a recent enough gcc (with ada support) in your path
>> so
>>   # that --enable-werror-always will work.
>>
>> make it clear that lack of GNAT should be a build failure rather than
>> silently ignored.  This predates the D frontend, which requires GDC
>> in the same way that Ada requires GNAT.  I don't know of a reason
>> why D should be treated differently.
>>
>> The patch therefore expands the "all" into a specific list of
>> languages.
>>
>> That in turn meant that Fortran had to be handled specially,
>> since bpf and mmix don't support Fortran.
>>
>> Perhaps there's an argument that m2 shouldn't build target objects
>> during all-gcc, but (a) it works for practical usage and (b) the
>> patch is an easy workaround.  I'd be happy for the patch to be
>> reverted if the build system changes.
>>
>> OK to install?
>>
>> Richard
>>
>>
>> gcc/
>>         * contrib/config-list.mk (OPT_IN_LANGUAGES): New variable.
>>         ($(LIST)): Replace --enable-languages=all with a specifc list.
>>         Disable fortran on bpf and mmix.  Enable the languages in
>>         OPT_IN_LANGUAGES.
>> ---
>>  contrib/config-list.mk | 17 ++++++++++++++---
>>  1 file changed, 14 insertions(+), 3 deletions(-)
>>
>> diff --git a/contrib/config-list.mk b/contrib/config-list.mk
>> index e570b13c71b..50ecb014bc0 100644
>> --- a/contrib/config-list.mk
>> +++ b/contrib/config-list.mk
>> @@ -12,6 +12,11 @@ TEST=all-gcc
>>  # supply an absolute path.
>>  GCC_SRC_DIR=../../gcc
>>
>> +# Define this to ,m2 if you want to build Modula-2.  Modula-2 builds
>> target
>> +# objects during all-gcc, so it can only be included if you've installed
>> +# binutils (or an equivalent) for each target.
>> +OPT_IN_LANGUAGES=
>> +
>>  # Use -j / -l make arguments and nice to assure a smooth
>> resource-efficient
>>  # load on the build machine, e.g. for 24 cores:
>>  # svn co svn://gcc.gnu.org/svn/gcc/branches/foo-branch gcc
>> @@ -126,17 +131,23 @@ $(LIST): make-log-dir
>>                 TGT=`echo $@ | awk 'BEGIN { FS = "OPT" }; { print $$1 }'`
>> &&                    \
>>                 TGT=`$(GCC_SRC_DIR)/config.sub $$TGT` &&
>>                       \
>>                 case $$TGT in
>>                      \
>> -                       *-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix*
>> | bpf-*-*)                    \
>> +                       bpf-*-*)
>>                       \
>>                                 ADDITIONAL_LANGUAGES="";
>>                       \
>>                                 ;;
>>                       \
>> -                       *)
>>                       \
>> +                       *-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix*
>> | bpf-*-*)            \
>>
> Am I misreading, or are you matching bpf here and above? From your commit
> message, I think bpf should either be only above (and define
> ADDITIONAL_LANGUAGES to "") and along with mmix (if it supports go) ?

Thanks for the catch.  I forgot to remove bpf from the old list when
adding the new case.  I've now (finally!) pushed the patch with the
redundant bpf removed.

Richard

>> +                               ADDITIONAL_LANGUAGES=",fortran";
>>                       \
>> +                               ;;
>>                       \
>> +                       mmix-*-*)
>>                      \
>>                                 ADDITIONAL_LANGUAGES=",go";
>>                      \
>>                                 ;;
>>                       \
>> +                       *)
>>                       \
>> +                               ADDITIONAL_LANGUAGES=",fortran,go";
>>                      \
>> +                               ;;
>>                       \
>>                 esac &&
>>                      \
>>                 $(GCC_SRC_DIR)/configure
>>                       \
>>                         --target=$(subst SCRIPTS,`pwd`/../scripts/,$(subst
>> OPT,$(empty) -,$@))  \
>>                         --enable-werror-always ${host_options}
>>                       \
>> -                       --enable-languages=all,ada$$ADDITIONAL_LANGUAGES;
>>                      \
>> +
>>  --enable-languages=c,ada,c++,d,lto,objc,obj-c++,rust$$ADDITIONAL_LANGUAGES$(OPT_IN_LANGUAGES);
>> \
>>         ) > log/$@-config.out 2>&1
>>
>>  $(LOGFILES) : log/%-make.out : %
>> --
>> 2.25.1
>>
>>
Richard Sandiford Dec. 2, 2023, 2:27 p.m. UTC | #4
Richard Biener <richard.guenther@gmail.com> writes:
> On Thu, Sep 7, 2023 at 11:30 AM Richard Sandiford via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
>>
>> When I tried to use config-list.mk, the build for every triple except
>> the build machine's failed for m2.  This is because, unlike other
>> languages, m2 builds target objects during all-gcc.  The build will
>> therefore fail unless you have access to an appropriate binutils
>> (or an equivalent).  That's quite a big ask for over 100 targets. :)
>>
>> This patch therefore makes m2 an optional inclusion.
>>
>> Doing that wasn't entirely straightforward though.  The current
>> configure line includes "--enable-languages=all,...", which means
>> that the "..." can only force languages to be added that otherwise
>> wouldn't have been.  (I.e. the only effect of the "..." is to
>> override configure autodetection.)
>>
>> The choice of all,ada and:
>>
>>   # Make sure you have a recent enough gcc (with ada support) in your path so
>>   # that --enable-werror-always will work.
>>
>> make it clear that lack of GNAT should be a build failure rather than
>> silently ignored.  This predates the D frontend, which requires GDC
>> in the same way that Ada requires GNAT.  I don't know of a reason
>> why D should be treated differently.
>>
>> The patch therefore expands the "all" into a specific list of
>> languages.
>>
>> That in turn meant that Fortran had to be handled specially,
>> since bpf and mmix don't support Fortran.
>>
>> Perhaps there's an argument that m2 shouldn't build target objects
>> during all-gcc,
>
> Yes, I think that's unfortunate - can you open a bugreport for this?

For the record, I filed https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112825

>> but (a) it works for practical usage and (b) the
>> patch is an easy workaround.  I'd be happy for the patch to be
>> reverted if the build system changes.
>>
>> OK to install?
>
> OK.

Thanks.  Now belatedly pushed after using it to retest the attribute
namespace patch (thanks for reviewing that too).

Richard

>> Richard
>>
>>
>> gcc/
>>         * contrib/config-list.mk (OPT_IN_LANGUAGES): New variable.
>>         ($(LIST)): Replace --enable-languages=all with a specifc list.
>>         Disable fortran on bpf and mmix.  Enable the languages in
>>         OPT_IN_LANGUAGES.
>> ---
>>  contrib/config-list.mk | 17 ++++++++++++++---
>>  1 file changed, 14 insertions(+), 3 deletions(-)
>>
>> diff --git a/contrib/config-list.mk b/contrib/config-list.mk
>> index e570b13c71b..50ecb014bc0 100644
>> --- a/contrib/config-list.mk
>> +++ b/contrib/config-list.mk
>> @@ -12,6 +12,11 @@ TEST=all-gcc
>>  # supply an absolute path.
>>  GCC_SRC_DIR=../../gcc
>>
>> +# Define this to ,m2 if you want to build Modula-2.  Modula-2 builds target
>> +# objects during all-gcc, so it can only be included if you've installed
>> +# binutils (or an equivalent) for each target.
>> +OPT_IN_LANGUAGES=
>> +
>>  # Use -j / -l make arguments and nice to assure a smooth resource-efficient
>>  # load on the build machine, e.g. for 24 cores:
>>  # svn co svn://gcc.gnu.org/svn/gcc/branches/foo-branch gcc
>> @@ -126,17 +131,23 @@ $(LIST): make-log-dir
>>                 TGT=`echo $@ | awk 'BEGIN { FS = "OPT" }; { print $$1 }'` &&                    \
>>                 TGT=`$(GCC_SRC_DIR)/config.sub $$TGT` &&                                        \
>>                 case $$TGT in                                                                   \
>> -                       *-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix* | bpf-*-*)                    \
>> +                       bpf-*-*)                                                                \
>>                                 ADDITIONAL_LANGUAGES="";                                        \
>>                                 ;;                                                              \
>> -                       *)                                                                      \
>> +                       *-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix* | bpf-*-*)            \
>> +                               ADDITIONAL_LANGUAGES=",fortran";                                \
>> +                               ;;                                                              \
>> +                       mmix-*-*)                                                               \
>>                                 ADDITIONAL_LANGUAGES=",go";                                     \
>>                                 ;;                                                              \
>> +                       *)                                                                      \
>> +                               ADDITIONAL_LANGUAGES=",fortran,go";                             \
>> +                               ;;                                                              \
>>                 esac &&                                                                         \
>>                 $(GCC_SRC_DIR)/configure                                                        \
>>                         --target=$(subst SCRIPTS,`pwd`/../scripts/,$(subst OPT,$(empty) -,$@))  \
>>                         --enable-werror-always ${host_options}                                  \
>> -                       --enable-languages=all,ada$$ADDITIONAL_LANGUAGES;                       \
>> +                       --enable-languages=c,ada,c++,d,lto,objc,obj-c++,rust$$ADDITIONAL_LANGUAGES$(OPT_IN_LANGUAGES); \
>>         ) > log/$@-config.out 2>&1
>>
>>  $(LOGFILES) : log/%-make.out : %
>> --
>> 2.25.1
>>
diff mbox series

Patch

diff --git a/contrib/config-list.mk b/contrib/config-list.mk
index e570b13c71b..50ecb014bc0 100644
--- a/contrib/config-list.mk
+++ b/contrib/config-list.mk
@@ -12,6 +12,11 @@  TEST=all-gcc
 # supply an absolute path.
 GCC_SRC_DIR=../../gcc
 
+# Define this to ,m2 if you want to build Modula-2.  Modula-2 builds target
+# objects during all-gcc, so it can only be included if you've installed
+# binutils (or an equivalent) for each target.
+OPT_IN_LANGUAGES=
+
 # Use -j / -l make arguments and nice to assure a smooth resource-efficient
 # load on the build machine, e.g. for 24 cores:
 # svn co svn://gcc.gnu.org/svn/gcc/branches/foo-branch gcc
@@ -126,17 +131,23 @@  $(LIST): make-log-dir
 		TGT=`echo $@ | awk 'BEGIN { FS = "OPT" }; { print $$1 }'` &&			\
 		TGT=`$(GCC_SRC_DIR)/config.sub $$TGT` &&					\
 		case $$TGT in									\
-			*-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix* | bpf-*-*)			\
+			bpf-*-*)								\
 				ADDITIONAL_LANGUAGES="";					\
 				;;								\
-			*)									\
+			*-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix* | bpf-*-*)		\
+				ADDITIONAL_LANGUAGES=",fortran";				\
+				;;								\
+			mmix-*-*)								\
 				ADDITIONAL_LANGUAGES=",go";					\
 				;;								\
+			*)									\
+				ADDITIONAL_LANGUAGES=",fortran,go";				\
+				;;								\
 		esac &&										\
 		$(GCC_SRC_DIR)/configure							\
 			--target=$(subst SCRIPTS,`pwd`/../scripts/,$(subst OPT,$(empty) -,$@))	\
 			--enable-werror-always ${host_options}					\
-			--enable-languages=all,ada$$ADDITIONAL_LANGUAGES;			\
+			--enable-languages=c,ada,c++,d,lto,objc,obj-c++,rust$$ADDITIONAL_LANGUAGES$(OPT_IN_LANGUAGES); \
 	) > log/$@-config.out 2>&1
 
 $(LOGFILES) : log/%-make.out : %