public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* Re: Enable top-level recursive 'autoreconf'
       [not found]         ` <mvmo7gv9boy.fsf@suse.de>
@ 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; 3+ 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] 3+ messages in thread

* Re: Enable top-level recursive 'autoreconf'
  2023-10-19 10:42           ` Enable top-level recursive 'autoreconf' Thomas Schwinge
@ 2023-10-19 23:13             ` Eric Gallager
  2023-10-30  1:31             ` Hans-Peter Nilsson
  1 sibling, 0 replies; 3+ 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] 3+ messages in thread

* Re: Enable top-level recursive 'autoreconf'
  2023-10-19 10:42           ` Enable top-level recursive 'autoreconf' Thomas Schwinge
  2023-10-19 23:13             ` Eric Gallager
@ 2023-10-30  1:31             ` Hans-Peter Nilsson
  1 sibling, 0 replies; 3+ 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] 3+ messages in thread

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

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CAPB2dxkMVi=ijhoOo7YVugVPAo3WeOvEpk_FvQMxU7F0BcP2Gw@mail.gmail.com>
     [not found] ` <4BD76988-F7CE-4AD1-8802-BAE371D1F9F5@sandoe.co.uk>
     [not found]   ` <875y343xah.fsf@euler.schwinge.homeip.net>
     [not found]     ` <CAPB2dxmWCU9vzu-=BqB1ZfYBq8GoQRNDBf4gYy_GvnB40tPA=Q@mail.gmail.com>
     [not found]       ` <87v8b37ye7.fsf@euler.schwinge.homeip.net>
     [not found]         ` <mvmo7gv9boy.fsf@suse.de>
2023-10-19 10:42           ` Enable top-level recursive 'autoreconf' Thomas Schwinge
2023-10-19 23:13             ` Eric Gallager
2023-10-30  1:31             ` Hans-Peter Nilsson

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).