public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: Hints on reconfiguring GCC
       [not found] <CAPB2dxkMVi=ijhoOo7YVugVPAo3WeOvEpk_FvQMxU7F0BcP2Gw@mail.gmail.com>
@ 2023-10-15 13:00 ` Iain Sandoe
  2023-10-18 12:55   ` Thomas Schwinge
  0 siblings, 1 reply; 9+ messages in thread
From: Iain Sandoe @ 2023-10-15 13:00 UTC (permalink / raw)
  To: R jd; +Cc: GCC Development

Hi Ryan,

It’s always a good idea to send questions to the mailing list (that gives other people a chance to answer this - probably better than me). 

----

> On 15 Oct 2023, at 13:40, R jd <3246251196ryan@gmail.com> wrote:

> my name is Ryan. I am part of a team that ensures that GCC is ported for AmigaOS4 and the next generation hardware.

:-)

> My question is in regards to the GCC repository (https://github.com/gcc-mirror/gcc) at the time of commit id: 2d280e7eafc086e9df85f50ed1a6526d6a3a204d (GCC 11).
> 
> I am trying to make a change to libstdc++-v3's crossconfig.m4 file which defines some things that are used in configure.ac which, in turn, generates the configure file.
> 
> I have built from source AUTOCONF 2.69 and AUTOMAKE 1.15.1 which seem to be the correct versions at the time. I have prepended the binary locations to my PATH.
> 
> Before making my desired change, if I go into libstdc++-v3 and just run "autoreconf" I see that "configure" has changed. I would have expected no change.

First, I would take a look at what kinds of change have been made to configure - it’s not impossible for things to get out of sync.  If it’s just script line numbers, for example, you can probably carry on with your changes.

I tend to use “autoreconf -fv” (but the basic principle is much the same) 

> I am just wondering if you have any ideas.

If you have the choice (I have no idea whether 2d280e7eafc086e9df85f50ed1a6526d6a3a204d is a commit that corresponds to a release) - perhaps pick a commit that corresponds to a released version of the branch (at least as a starting point).

HTH & g/l
Iain

> For more information you can also see: https://github.com/sba1/adtools/pull/149.
> 
> Regards,
> Ryan.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Hints on reconfiguring GCC
  2023-10-15 13:00 ` Hints on reconfiguring GCC Iain Sandoe
@ 2023-10-18 12:55   ` Thomas Schwinge
  2023-10-18 14:42     ` R jd
  0 siblings, 1 reply; 9+ messages in thread
From: Thomas Schwinge @ 2023-10-18 12:55 UTC (permalink / raw)
  To: 3246251196ryan; +Cc: Iain Sandoe, gcc

Hi Ryan!

In addition to what Iain said:

On 2023-10-15T14:00:47+0100, Iain Sandoe <iain@sandoe.co.uk> wrote:
>> On 15 Oct 2023, at 13:40, R jd <3246251196ryan@gmail.com> wrote:
>> I am part of a team that ensures that GCC is ported for AmigaOS4 and the next generation hardware.
>
> :-)

:-)

>> My question is in regards to the GCC repository (https://github.com/gcc-mirror/gcc) at the time of commit id: 2d280e7eafc086e9df85f50ed1a6526d6a3a204d (GCC 11).

... which is the GCC 11.3 release.

>> I am trying to make a change to libstdc++-v3's crossconfig.m4 file which defines some things that are used in configure.ac which, in turn, generates the configure file.
>>
>> I have built from source AUTOCONF 2.69 and AUTOMAKE 1.15.1 which seem to be the correct versions at the time. I have prepended the binary locations to my PATH.
>>
>> Before making my desired change, if I go into libstdc++-v3 and just run "autoreconf" I see that "configure" has changed. I would have expected no change.
>
> First, I would take a look at what kinds of change have been made to configure - it’s not impossible for things to get out of sync.  If it’s just script line numbers, for example, you can probably carry on with your changes.
>
> I tend to use “autoreconf -fv” (but the basic principle is much the same)

I've quickly tried myself, and (as should be) do not see any differences
in the generated files: neither for 'autoconf -f' nor 'autoreconf -f'.
(The latter indeed is what you should use.)

>> For more information you can also see: https://github.com/sba1/adtools/pull/149.

I didn't read that one in detail, but saw mentioned "other patches" -- is
it probably the case that some earlier patch has not properly regenerated
files?


Grüße
 Thomas
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Hints on reconfiguring GCC
  2023-10-18 12:55   ` Thomas Schwinge
@ 2023-10-18 14:42     ` R jd
  2023-10-19  9:30       ` Enable top-level recursive 'autoreconf' (was: Hints on reconfiguring GCC) Thomas Schwinge
  0 siblings, 1 reply; 9+ messages in thread
From: R jd @ 2023-10-18 14:42 UTC (permalink / raw)
  To: Thomas Schwinge; +Cc: Iain Sandoe, gcc

[-- Attachment #1: Type: text/plain, Size: 2599 bytes --]

Hi all,,

I should have followed up. After not applying the patches and attempting
what I did, I also saw no changes. So, it is a sync issue with the patches.

Thank you.

I guess I can ask, why there is not a recursive approach for configuring
GCC. e.g. AC_SUBDIRS in the top level?

Anyway, this problem was solved.

On Wed, 18 Oct 2023, 13:55 Thomas Schwinge, <thomas@codesourcery.com> wrote:

> Hi Ryan!
>
> In addition to what Iain said:
>
> On 2023-10-15T14:00:47+0100, Iain Sandoe <iain@sandoe.co.uk> wrote:
> >> On 15 Oct 2023, at 13:40, R jd <3246251196ryan@gmail.com> wrote:
> >> I am part of a team that ensures that GCC is ported for AmigaOS4 and
> the next generation hardware.
> >
> > :-)
>
> :-)
>
> >> My question is in regards to the GCC repository (
> https://github.com/gcc-mirror/gcc) at the time of commit id:
> 2d280e7eafc086e9df85f50ed1a6526d6a3a204d (GCC 11).
>
> ... which is the GCC 11.3 release.
>
> >> I am trying to make a change to libstdc++-v3's crossconfig.m4 file
> which defines some things that are used in configure.ac which, in turn,
> generates the configure file.
> >>
> >> I have built from source AUTOCONF 2.69 and AUTOMAKE 1.15.1 which seem
> to be the correct versions at the time. I have prepended the binary
> locations to my PATH.
> >>
> >> Before making my desired change, if I go into libstdc++-v3 and just run
> "autoreconf" I see that "configure" has changed. I would have expected no
> change.
> >
> > First, I would take a look at what kinds of change have been made to
> configure - it’s not impossible for things to get out of sync.  If it’s
> just script line numbers, for example, you can probably carry on with your
> changes.
> >
> > I tend to use “autoreconf -fv” (but the basic principle is much the same)
>
> I've quickly tried myself, and (as should be) do not see any differences
> in the generated files: neither for 'autoconf -f' nor 'autoreconf -f'.
> (The latter indeed is what you should use.)
>
> >> For more information you can also see:
> https://github.com/sba1/adtools/pull/149.
>
> I didn't read that one in detail, but saw mentioned "other patches" -- is
> it probably the case that some earlier patch has not properly regenerated
> files?
>
>
> Grüße
>  Thomas
> -----------------
> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201,
> 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer:
> Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München;
> Registergericht München, HRB 106955
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Enable top-level recursive 'autoreconf' (was: Hints on reconfiguring GCC)
  2023-10-18 14:42     ` R jd
@ 2023-10-19  9:30       ` Thomas Schwinge
  2023-10-19  9:57         ` Enable top-level recursive 'autoreconf' Andreas Schwab
  2023-10-20  4:07         ` Alexandre Oliva
  0 siblings, 2 replies; 9+ messages in thread
From: Thomas Schwinge @ 2023-10-19  9:30 UTC (permalink / raw)
  To: 3246251196ryan, gcc-patches
  Cc: Iain Sandoe, gcc, Paolo Bonzini, Nathanael Nerode,
	Alexandre Oliva, Ralf Wildenhues, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 717 bytes --]

Hi!

On 2023-10-18T15:42:18+0100, R jd <3246251196ryan@gmail.com> wrote:
> I guess I can ask, why there is not a recursive approach for configuring
> GCC. e.g. AC_SUBDIRS in the top level?

('AC_CONFIG_SUBDIRS' you mean.)  You know, often it just takes someone to
ask the right questions...  ;-)

What do people think about the attached
"Enable top-level recursive 'autoreconf'"?  Only lightly tested, so far.


Grüße
 Thomas


-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Enable-top-level-recursive-autoreconf.patch --]
[-- Type: text/x-diff, Size: 4233 bytes --]

From 43127e5643337ca407071ad93bccbc716024352e Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <thomas@codesourcery.com>
Date: Thu, 19 Oct 2023 10:28:30 +0200
Subject: [PATCH] Enable top-level recursive 'autoreconf'

	* configure.ac: At end of file, instantiate 'AC_CONFIG_SUBDIRS'
	for all relevant directories.
	* configure: Regenerate.
---
 configure    | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 configure.ac |  36 ++++++++++++++++++
 2 files changed, 136 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 8fc163d36bd..fcb4d591334 100755
--- a/configure
+++ b/configure
@@ -584,7 +584,8 @@ PACKAGE_URL=
 
 ac_unique_file="move-if-change"
 enable_option_checking=no
-ac_subst_vars='LTLIBOBJS
+ac_subst_vars='subdirs
+LTLIBOBJS
 LIBOBJS
 compare_exclusions
 stage2_werror_flag
@@ -909,7 +910,37 @@ READELF_FOR_TARGET
 STRIP_FOR_TARGET
 WINDRES_FOR_TARGET
 WINDMC_FOR_TARGET'
-
+ac_subdirs_all='c++tools
+fixincludes
+gcc
+gcc/m2
+gnattools
+gotools
+intl
+libada
+libatomic
+libbacktrace
+libcc1
+libcody
+libcpp
+libdecnumber
+libffi
+libgcc
+libgfortran
+libgm2
+libgo
+libgomp
+libiberty
+libitm
+libobjc
+libphobos
+libquadmath
+libsanitizer
+libssp
+libstdc++-v3
+libvtv
+lto-plugin
+zlib'
 
 # Initialize some variables set by options.
 ac_init_help=
@@ -20081,3 +20112,70 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
+
+# Enable top-level recursive 'autoreconf' by enumerating all relevant
+# directories here.  This is intentionally done at end of 'configure.ac',
+# *after* 'AC_OUTPUT', so that we don't attempt to prematurely 'configure'
+# these directories when the top-level 'configure' is invoked.
+subdirs="$subdirs c++tools"
+
+subdirs="$subdirs fixincludes"
+
+subdirs="$subdirs gcc"
+
+subdirs="$subdirs gcc/m2"
+
+subdirs="$subdirs gnattools"
+
+subdirs="$subdirs gotools"
+
+subdirs="$subdirs intl"
+
+subdirs="$subdirs libada"
+
+subdirs="$subdirs libatomic"
+
+subdirs="$subdirs libbacktrace"
+
+subdirs="$subdirs libcc1"
+
+subdirs="$subdirs libcody"
+
+subdirs="$subdirs libcpp"
+
+subdirs="$subdirs libdecnumber"
+
+subdirs="$subdirs libffi"
+
+subdirs="$subdirs libgcc"
+
+subdirs="$subdirs libgfortran"
+
+subdirs="$subdirs libgm2"
+
+subdirs="$subdirs libgo"
+
+subdirs="$subdirs libgomp"
+
+subdirs="$subdirs libiberty"
+
+subdirs="$subdirs libitm"
+
+subdirs="$subdirs libobjc"
+
+subdirs="$subdirs libphobos"
+
+subdirs="$subdirs libquadmath"
+
+subdirs="$subdirs libsanitizer"
+
+subdirs="$subdirs libssp"
+
+subdirs="$subdirs libstdc++-v3"
+
+subdirs="$subdirs libvtv"
+
+subdirs="$subdirs lto-plugin"
+
+subdirs="$subdirs zlib"
+
diff --git a/configure.ac b/configure.ac
index 1d16530140a..0d37d30196e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3944,3 +3944,39 @@ AC_CONFIG_FILES([Makefile],
    extrasub_host="$extrasub_host"
    extrasub_target="$extrasub_target"])
 AC_OUTPUT
+
+# Enable top-level recursive 'autoreconf' by enumerating all relevant
+# directories here.  This is intentionally done at end of 'configure.ac',
+# *after* 'AC_OUTPUT', so that we don't attempt to prematurely 'configure'
+# these directories when the top-level 'configure' is invoked.
+AC_CONFIG_SUBDIRS([c++tools])
+AC_CONFIG_SUBDIRS([fixincludes])
+AC_CONFIG_SUBDIRS([gcc])
+AC_CONFIG_SUBDIRS([gcc/m2])
+AC_CONFIG_SUBDIRS([gnattools])
+AC_CONFIG_SUBDIRS([gotools])
+AC_CONFIG_SUBDIRS([intl])
+AC_CONFIG_SUBDIRS([libada])
+AC_CONFIG_SUBDIRS([libatomic])
+AC_CONFIG_SUBDIRS([libbacktrace])
+AC_CONFIG_SUBDIRS([libcc1])
+AC_CONFIG_SUBDIRS([libcody])
+AC_CONFIG_SUBDIRS([libcpp])
+AC_CONFIG_SUBDIRS([libdecnumber])
+AC_CONFIG_SUBDIRS([libffi])
+AC_CONFIG_SUBDIRS([libgcc])
+AC_CONFIG_SUBDIRS([libgfortran])
+AC_CONFIG_SUBDIRS([libgm2])
+AC_CONFIG_SUBDIRS([libgo])
+AC_CONFIG_SUBDIRS([libgomp])
+AC_CONFIG_SUBDIRS([libiberty])
+AC_CONFIG_SUBDIRS([libitm])
+AC_CONFIG_SUBDIRS([libobjc])
+AC_CONFIG_SUBDIRS([libphobos])
+AC_CONFIG_SUBDIRS([libquadmath])
+AC_CONFIG_SUBDIRS([libsanitizer])
+AC_CONFIG_SUBDIRS([libssp])
+AC_CONFIG_SUBDIRS([libstdc++-v3])
+AC_CONFIG_SUBDIRS([libvtv])
+AC_CONFIG_SUBDIRS([lto-plugin])
+AC_CONFIG_SUBDIRS([zlib])
-- 
2.34.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Enable top-level recursive 'autoreconf'
  2023-10-19  9:30       ` Enable top-level recursive 'autoreconf' (was: Hints on reconfiguring GCC) Thomas Schwinge
@ 2023-10-19  9:57         ` Andreas Schwab
  2023-10-19 10:42           ` Thomas Schwinge
  2023-10-20  4:07         ` Alexandre Oliva
  1 sibling, 1 reply; 9+ messages in thread
From: Andreas Schwab @ 2023-10-19  9:57 UTC (permalink / raw)
  To: Thomas Schwinge
  Cc: 3246251196ryan, gcc-patches, Iain Sandoe, gcc, Paolo Bonzini,
	Nathanael Nerode, Alexandre Oliva, Ralf Wildenhues, Joseph Myers

On Okt 19 2023, Thomas Schwinge wrote:

> Hi!
>
> On 2023-10-18T15:42:18+0100, R jd <3246251196ryan@gmail.com> wrote:
>> I guess I can ask, why there is not a recursive approach for configuring
>> GCC. e.g. AC_SUBDIRS in the top level?
>
> ('AC_CONFIG_SUBDIRS' you mean.)  You know, often it just takes someone to
> ask the right questions...  ;-)
>
> What do people think about the attached
> "Enable top-level recursive 'autoreconf'"?  Only lightly tested, so far.

The top-level files are shared with binutils-gdb, which has a different
set of subdirs.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Enable top-level recursive 'autoreconf'
  2023-10-19  9:57         ` Enable top-level recursive 'autoreconf' Andreas Schwab
@ 2023-10-19 10:42           ` Thomas Schwinge
  2023-10-19 23:13             ` Eric Gallager
  2023-10-30  1:31             ` Hans-Peter Nilsson
  0 siblings, 2 replies; 9+ messages in thread
From: Thomas Schwinge @ 2023-10-19 10:42 UTC (permalink / raw)
  To: Andreas Schwab, gcc-patches, binutils, gdb-patches
  Cc: 3246251196ryan, Iain Sandoe, gcc, Paolo Bonzini,
	Nathanael Nerode, Alexandre Oliva, Ralf Wildenhues, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 2683 bytes --]

Hi!

On 2023-10-19T11:57:33+0200, Andreas Schwab <schwab@suse.de> wrote:
> On Okt 19 2023, Thomas Schwinge wrote:
>> On 2023-10-18T15:42:18+0100, R jd <3246251196ryan@gmail.com> wrote:
>>> I guess I can ask, why there is not a recursive approach for configuring
>>> GCC. e.g. AC_SUBDIRS in the top level?
>>
>> ('AC_CONFIG_SUBDIRS' you mean.)  You know, often it just takes someone to
>> ask the right questions...  ;-)
>>
>> What do people think about the attached
>> "Enable top-level recursive 'autoreconf'"?  Only lightly tested, so far.
>
> The top-level files are shared with binutils-gdb, which has a different
> set of subdirs.

Good point, thanks!  Fortunately, the failure mode for non-existing
directories is non-fatal (skipped with 'subdirectory [...] not present'
diagnostic); with my original "Enable top-level recursive 'autoreconf'"
(also re-attached) applied to Binutils/GDB Git master branch, we get:

    $ PATH=[...] autoreconf -v
    autoreconf: Entering directory `.'
    autoreconf: configure.ac: not using Gettext
    autoreconf: running: aclocal
    autoreconf: configure.ac: tracing
    autoreconf: configure.ac: subdirectory c++tools not present
    autoreconf: configure.ac: subdirectory fixincludes not present
    autoreconf: configure.ac: subdirectory gcc not present
    autoreconf: configure.ac: subdirectory gcc/m2 not present
    autoreconf: configure.ac: subdirectory gnattools not present
    autoreconf: configure.ac: subdirectory gotools not present
    autoreconf: configure.ac: adding subdirectory intl to autoreconf
    autoreconf: Entering directory `intl'
    [...]
    autoreconf: Leaving directory `intl'
    autoreconf: configure.ac: subdirectory libada not present
    autoreconf: configure.ac: subdirectory libatomic not present
    autoreconf: configure.ac: adding subdirectory libbacktrace to autoreconf
    autoreconf: Entering directory `libbacktrace'
    [...]

So we could (a) simply list *all* directories in the shared top-level
'configure.ac', or (b) configure GCC vs. other projrcts via a non-shared
file ('m4_include([config/AC_CONFIG_SUBDIRS.m4])' or similar -- is there
an established procedure for non-shared top-level files)?  (I don't have
a strong preference either way.)

It's just GCC and Binutils/GDB, or are the top-level files also shared
with additional projects?


Grüße
 Thomas


-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Enable-top-level-recursive-autoreconf.patch --]
[-- Type: text/x-diff, Size: 4233 bytes --]

From 43127e5643337ca407071ad93bccbc716024352e Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <thomas@codesourcery.com>
Date: Thu, 19 Oct 2023 10:28:30 +0200
Subject: [PATCH] Enable top-level recursive 'autoreconf'

	* configure.ac: At end of file, instantiate 'AC_CONFIG_SUBDIRS'
	for all relevant directories.
	* configure: Regenerate.
---
 configure    | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 configure.ac |  36 ++++++++++++++++++
 2 files changed, 136 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 8fc163d36bd..fcb4d591334 100755
--- a/configure
+++ b/configure
@@ -584,7 +584,8 @@ PACKAGE_URL=
 
 ac_unique_file="move-if-change"
 enable_option_checking=no
-ac_subst_vars='LTLIBOBJS
+ac_subst_vars='subdirs
+LTLIBOBJS
 LIBOBJS
 compare_exclusions
 stage2_werror_flag
@@ -909,7 +910,37 @@ READELF_FOR_TARGET
 STRIP_FOR_TARGET
 WINDRES_FOR_TARGET
 WINDMC_FOR_TARGET'
-
+ac_subdirs_all='c++tools
+fixincludes
+gcc
+gcc/m2
+gnattools
+gotools
+intl
+libada
+libatomic
+libbacktrace
+libcc1
+libcody
+libcpp
+libdecnumber
+libffi
+libgcc
+libgfortran
+libgm2
+libgo
+libgomp
+libiberty
+libitm
+libobjc
+libphobos
+libquadmath
+libsanitizer
+libssp
+libstdc++-v3
+libvtv
+lto-plugin
+zlib'
 
 # Initialize some variables set by options.
 ac_init_help=
@@ -20081,3 +20112,70 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
+
+# Enable top-level recursive 'autoreconf' by enumerating all relevant
+# directories here.  This is intentionally done at end of 'configure.ac',
+# *after* 'AC_OUTPUT', so that we don't attempt to prematurely 'configure'
+# these directories when the top-level 'configure' is invoked.
+subdirs="$subdirs c++tools"
+
+subdirs="$subdirs fixincludes"
+
+subdirs="$subdirs gcc"
+
+subdirs="$subdirs gcc/m2"
+
+subdirs="$subdirs gnattools"
+
+subdirs="$subdirs gotools"
+
+subdirs="$subdirs intl"
+
+subdirs="$subdirs libada"
+
+subdirs="$subdirs libatomic"
+
+subdirs="$subdirs libbacktrace"
+
+subdirs="$subdirs libcc1"
+
+subdirs="$subdirs libcody"
+
+subdirs="$subdirs libcpp"
+
+subdirs="$subdirs libdecnumber"
+
+subdirs="$subdirs libffi"
+
+subdirs="$subdirs libgcc"
+
+subdirs="$subdirs libgfortran"
+
+subdirs="$subdirs libgm2"
+
+subdirs="$subdirs libgo"
+
+subdirs="$subdirs libgomp"
+
+subdirs="$subdirs libiberty"
+
+subdirs="$subdirs libitm"
+
+subdirs="$subdirs libobjc"
+
+subdirs="$subdirs libphobos"
+
+subdirs="$subdirs libquadmath"
+
+subdirs="$subdirs libsanitizer"
+
+subdirs="$subdirs libssp"
+
+subdirs="$subdirs libstdc++-v3"
+
+subdirs="$subdirs libvtv"
+
+subdirs="$subdirs lto-plugin"
+
+subdirs="$subdirs zlib"
+
diff --git a/configure.ac b/configure.ac
index 1d16530140a..0d37d30196e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3944,3 +3944,39 @@ AC_CONFIG_FILES([Makefile],
    extrasub_host="$extrasub_host"
    extrasub_target="$extrasub_target"])
 AC_OUTPUT
+
+# Enable top-level recursive 'autoreconf' by enumerating all relevant
+# directories here.  This is intentionally done at end of 'configure.ac',
+# *after* 'AC_OUTPUT', so that we don't attempt to prematurely 'configure'
+# these directories when the top-level 'configure' is invoked.
+AC_CONFIG_SUBDIRS([c++tools])
+AC_CONFIG_SUBDIRS([fixincludes])
+AC_CONFIG_SUBDIRS([gcc])
+AC_CONFIG_SUBDIRS([gcc/m2])
+AC_CONFIG_SUBDIRS([gnattools])
+AC_CONFIG_SUBDIRS([gotools])
+AC_CONFIG_SUBDIRS([intl])
+AC_CONFIG_SUBDIRS([libada])
+AC_CONFIG_SUBDIRS([libatomic])
+AC_CONFIG_SUBDIRS([libbacktrace])
+AC_CONFIG_SUBDIRS([libcc1])
+AC_CONFIG_SUBDIRS([libcody])
+AC_CONFIG_SUBDIRS([libcpp])
+AC_CONFIG_SUBDIRS([libdecnumber])
+AC_CONFIG_SUBDIRS([libffi])
+AC_CONFIG_SUBDIRS([libgcc])
+AC_CONFIG_SUBDIRS([libgfortran])
+AC_CONFIG_SUBDIRS([libgm2])
+AC_CONFIG_SUBDIRS([libgo])
+AC_CONFIG_SUBDIRS([libgomp])
+AC_CONFIG_SUBDIRS([libiberty])
+AC_CONFIG_SUBDIRS([libitm])
+AC_CONFIG_SUBDIRS([libobjc])
+AC_CONFIG_SUBDIRS([libphobos])
+AC_CONFIG_SUBDIRS([libquadmath])
+AC_CONFIG_SUBDIRS([libsanitizer])
+AC_CONFIG_SUBDIRS([libssp])
+AC_CONFIG_SUBDIRS([libstdc++-v3])
+AC_CONFIG_SUBDIRS([libvtv])
+AC_CONFIG_SUBDIRS([lto-plugin])
+AC_CONFIG_SUBDIRS([zlib])
-- 
2.34.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Enable top-level recursive 'autoreconf'
  2023-10-19 10:42           ` Thomas Schwinge
@ 2023-10-19 23:13             ` Eric Gallager
  2023-10-30  1:31             ` Hans-Peter Nilsson
  1 sibling, 0 replies; 9+ messages in thread
From: Eric Gallager @ 2023-10-19 23:13 UTC (permalink / raw)
  To: Thomas Schwinge
  Cc: Andreas Schwab, gcc-patches, binutils, gdb-patches,
	3246251196ryan, Iain Sandoe, gcc, Paolo Bonzini,
	Nathanael Nerode, Alexandre Oliva, Ralf Wildenhues, Joseph Myers

On Thu, Oct 19, 2023 at 6:43 AM Thomas Schwinge <thomas@codesourcery.com> wrote:
>
> Hi!
>
> On 2023-10-19T11:57:33+0200, Andreas Schwab <schwab@suse.de> wrote:
> > On Okt 19 2023, Thomas Schwinge wrote:
> >> On 2023-10-18T15:42:18+0100, R jd <3246251196ryan@gmail.com> wrote:
> >>> I guess I can ask, why there is not a recursive approach for configuring
> >>> GCC. e.g. AC_SUBDIRS in the top level?
> >>
> >> ('AC_CONFIG_SUBDIRS' you mean.)  You know, often it just takes someone to
> >> ask the right questions...  ;-)
> >>
> >> What do people think about the attached
> >> "Enable top-level recursive 'autoreconf'"?  Only lightly tested, so far.
> >
> > The top-level files are shared with binutils-gdb, which has a different
> > set of subdirs.
>
> Good point, thanks!  Fortunately, the failure mode for non-existing
> directories is non-fatal (skipped with 'subdirectory [...] not present'
> diagnostic); with my original "Enable top-level recursive 'autoreconf'"
> (also re-attached) applied to Binutils/GDB Git master branch, we get:
>
>     $ PATH=[...] autoreconf -v
>     autoreconf: Entering directory `.'
>     autoreconf: configure.ac: not using Gettext
>     autoreconf: running: aclocal
>     autoreconf: configure.ac: tracing
>     autoreconf: configure.ac: subdirectory c++tools not present
>     autoreconf: configure.ac: subdirectory fixincludes not present
>     autoreconf: configure.ac: subdirectory gcc not present
>     autoreconf: configure.ac: subdirectory gcc/m2 not present
>     autoreconf: configure.ac: subdirectory gnattools not present
>     autoreconf: configure.ac: subdirectory gotools not present
>     autoreconf: configure.ac: adding subdirectory intl to autoreconf
>     autoreconf: Entering directory `intl'
>     [...]
>     autoreconf: Leaving directory `intl'
>     autoreconf: configure.ac: subdirectory libada not present
>     autoreconf: configure.ac: subdirectory libatomic not present
>     autoreconf: configure.ac: adding subdirectory libbacktrace to autoreconf
>     autoreconf: Entering directory `libbacktrace'
>     [...]
>
> So we could (a) simply list *all* directories in the shared top-level
> 'configure.ac', or (b) configure GCC vs. other projrcts via a non-shared
> file ('m4_include([config/AC_CONFIG_SUBDIRS.m4])' or similar -- is there
> an established procedure for non-shared top-level files)?  (I don't have
> a strong preference either way.)
>

I'd just like to note that I have GCC bug 103459 open about silencing
warnings from autoreconf:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103459
Although I guess in this case, they're just notices, and not warnings,
so it's probably okay. (-Werror doesn't turn them into errors, does
it?)

> It's just GCC and Binutils/GDB, or are the top-level files also shared
> with additional projects?
>
>
> Grüße
>  Thomas
>
>
> -----------------
> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Enable top-level recursive 'autoreconf'
  2023-10-19  9:30       ` Enable top-level recursive 'autoreconf' (was: Hints on reconfiguring GCC) Thomas Schwinge
  2023-10-19  9:57         ` Enable top-level recursive 'autoreconf' Andreas Schwab
@ 2023-10-20  4:07         ` Alexandre Oliva
  1 sibling, 0 replies; 9+ messages in thread
From: Alexandre Oliva @ 2023-10-20  4:07 UTC (permalink / raw)
  To: Thomas Schwinge
  Cc: 3246251196ryan, gcc-patches, Iain Sandoe, gcc, Paolo Bonzini,
	Nathanael Nerode, Ralf Wildenhues, Joseph Myers

On Oct 19, 2023, Thomas Schwinge <thomas@codesourcery.com> wrote:

> On 2023-10-18T15:42:18+0100, R jd <3246251196ryan@gmail.com> wrote:
>> I guess I can ask, why there is not a recursive approach for configuring
>> GCC. e.g. AC_SUBDIRS in the top level?

> ('AC_CONFIG_SUBDIRS' you mean.)  You know, often it just takes someone to
> ask the right questions...  ;-)

> What do people think about the attached
> "Enable top-level recursive 'autoreconf'"?  Only lightly tested, so far.

Interesting idea!

It is a little hackish, in that it seems to exploit an implementation
detail in AC_CONFIG_SUBDIRS rather than a documented feature.

I like it!

The autoconf documentation suggests that optional directories can be
tested for:

  if test -d "$srcdir/foo"; then
    AC_CONFIG_SUBDIRS([foo])
  fi

We could use a macro that takes a list and iterates over the list (untested):

dnl Handle a list of optional subdirs.
dnl After AC_OUTPUT, affects autoreconf runs, but not configure runs.
AC_DEFUN([AC_CONFIG_SUBDIRS_OPT], [
  m4_foreach_w([dir], [$1], [
    if test -d "$srcdir/dir"; then
      AC_CONFIG_SUBDIRS(dir)
    fi
  ])
])

Thanks,

-- 
Alexandre Oliva, happy hacker            https://FSFLA.org/blogs/lxo/
   Free Software Activist                   GNU Toolchain Engineer
More tolerance and less prejudice are key for inclusion and diversity
Excluding neuro-others for not behaving ""normal"" is *not* inclusive

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Enable top-level recursive 'autoreconf'
  2023-10-19 10:42           ` Thomas Schwinge
  2023-10-19 23:13             ` Eric Gallager
@ 2023-10-30  1:31             ` Hans-Peter Nilsson
  1 sibling, 0 replies; 9+ messages in thread
From: Hans-Peter Nilsson @ 2023-10-30  1:31 UTC (permalink / raw)
  To: Thomas Schwinge
  Cc: schwab, gcc-patches, binutils, gdb-patches, 3246251196ryan, iain,
	gcc, bonzini, neroden, aoliva, Ralf.Wildenhues, joseph

> From: Thomas Schwinge <thomas@codesourcery.com>
> Date: Thu, 19 Oct 2023 12:42:26 +0200

> It's just GCC and Binutils/GDB, or are the top-level files also shared
> with additional projects?

Not sure if that counts as "shared", but I regularly drop
in* newlib to build simulator targets (*-elf, *-newabi).
That's git://sourceware.org/git/newlib-cygwin.git but I
extract tarballs for the merging.

"Drop in" is actually the other way round, starting with a
newlib tarball, so gcc files overwrite newlib ones.

(FWIW, I never drop in binutils like that; they're better
built separately.  "Better" for your long-term sanity.)

brgds, H-P

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-10-30  1:31 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CAPB2dxkMVi=ijhoOo7YVugVPAo3WeOvEpk_FvQMxU7F0BcP2Gw@mail.gmail.com>
2023-10-15 13:00 ` Hints on reconfiguring GCC Iain Sandoe
2023-10-18 12:55   ` Thomas Schwinge
2023-10-18 14:42     ` R jd
2023-10-19  9:30       ` Enable top-level recursive 'autoreconf' (was: Hints on reconfiguring GCC) Thomas Schwinge
2023-10-19  9:57         ` Enable top-level recursive 'autoreconf' Andreas Schwab
2023-10-19 10:42           ` Thomas Schwinge
2023-10-19 23:13             ` Eric Gallager
2023-10-30  1:31             ` Hans-Peter Nilsson
2023-10-20  4:07         ` Alexandre Oliva

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).