gdb/gdbserver: switch to AC_CONFIG_MACRO_DIRS

Message ID 20210615054416.1232-1-vapier@gentoo.org
State New
Headers show
Series
  • gdb/gdbserver: switch to AC_CONFIG_MACRO_DIRS
Related show

Commit Message

Simon Marchi via Gdb-patches June 15, 2021, 5:44 a.m.
These dirs don't use automake, so use AC_CONFIG_MACRO_DIRS to specify
../config as a search dir for m4 macros.  This allows removal of a lot
of hand-written m4_include's from acinclude.m4 files, and simplifies
use of `aclocal` or `autoreconf` as manual -I is not needed.
---
 gdb/ChangeLog          |  7 +++++++
 gdb/acinclude.m4       | 39 ---------------------------------------
 gdb/aclocal.m4         | 15 +++++++++++++++
 gdb/configure          |  1 +
 gdb/configure.ac       |  3 +--
 gdbserver/ChangeLog    |  7 +++++++
 gdbserver/acinclude.m4 | 19 -------------------
 gdbserver/aclocal.m4   |  9 +++++++++
 gdbserver/configure    |  1 +
 gdbserver/configure.ac |  1 +
 10 files changed, 42 insertions(+), 60 deletions(-)

-- 
2.31.1

Comments

Simon Marchi via Gdb-patches June 17, 2021, 2:30 a.m. | #1
On 2021-06-15 1:44 a.m., Mike Frysinger via Gdb-patches wrote:
> These dirs don't use automake, so use AC_CONFIG_MACRO_DIRS to specify

> ../config as a search dir for m4 macros.  This allows removal of a lot

> of hand-written m4_include's from acinclude.m4 files, and simplifies

> use of `aclocal` or `autoreconf` as manual -I is not needed.


For some reason, I get this when reconfiguring gdb:

    configure.ac:531: warning: macro 'AM_ICONV' not found in library

The result looks ok, the resulting configure looks fine, but if you
happen to know why...

Simon
Simon Marchi via Gdb-patches June 17, 2021, 4:21 a.m. | #2
On 16 Jun 2021 22:30, Simon Marchi wrote:
> On 2021-06-15 1:44 a.m., Mike Frysinger via Gdb-patches wrote:

> > These dirs don't use automake, so use AC_CONFIG_MACRO_DIRS to specify

> > ../config as a search dir for m4 macros.  This allows removal of a lot

> > of hand-written m4_include's from acinclude.m4 files, and simplifies

> > use of `aclocal` or `autoreconf` as manual -I is not needed.

> 

> For some reason, I get this when reconfiguring gdb:

> 

>     configure.ac:531: warning: macro 'AM_ICONV' not found in library

> 

> The result looks ok, the resulting configure looks fine, but if you

> happen to know why...


i don't know why automake is able to find some of the ../config/ m4 files
just fine, but a few others it barfs on.  i don't see the warning because
i have gettext installed and automake finds the system iconv.m4.

restoring the explicit include in the gdb file should fix it.
-mike

From 971050c6ba9f839ec9ec02d1fb21ca1a6dbef73c Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@gentoo.org>

Date: Tue, 15 Jun 2021 01:40:33 -0400
Subject: [PATCH] gdb/gdbserver: switch to AC_CONFIG_MACRO_DIRS

These dirs don't use automake, so use AC_CONFIG_MACRO_DIRS to specify
../config as a search dir for m4 macros.  This allows removal of a lot
of hand-written m4_include's from acinclude.m4 files, and simplifies
use of `aclocal` or `autoreconf` as manual -I is not needed.
---
 gdb/ChangeLog          |  7 +++++++
 gdb/acinclude.m4       | 37 -------------------------------------
 gdb/aclocal.m4         | 14 ++++++++++++++
 gdb/configure          |  1 +
 gdb/configure.ac       |  3 +--
 gdbserver/ChangeLog    |  7 +++++++
 gdbserver/acinclude.m4 | 19 -------------------
 gdbserver/aclocal.m4   |  9 +++++++++
 gdbserver/configure    |  1 +
 gdbserver/configure.ac |  1 +
 10 files changed, 41 insertions(+), 58 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2444773bde93..58311e6a4e70 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2021-06-15  Mike Frysinger  <vapier@gentoo.org>
+
+	* acinclude.m4: Delete most m4_include's of ../config files.
+	* configure.ac: Delete m4_include call and call AC_CONFIG_MACRO_DIR.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
 2021-06-16  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* silent-rules.mk (ECHO_CCLD, ECHO_AR, ECHO_RANLIB): New.
diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4
index 68520d6d9381..0fbef22bb0f4 100644
--- a/gdb/acinclude.m4
+++ b/gdb/acinclude.m4
@@ -21,41 +21,6 @@ m4_include(../gdbsupport/selftest.m4)
 dnl gdb/configure.in uses BFD_NEED_DECLARATION, so get its definition.
 m4_include(../bfd/bfd.m4)
 
-dnl This gets the standard macros.
-m4_include(../config/acinclude.m4)
-
-dnl This gets GCC_ENABLE.
-sinclude(../config/enable.m4)
-
-dnl This gets AC_PLUGINS, needed by ACX_LARGEFILE.
-m4_include(../config/plugins.m4)
-
-dnl For ACX_LARGEFILE.
-m4_include(../config/largefile.m4)
-
-dnl For AM_SET_LEADING_DOT.
-m4_include(../config/lead-dot.m4)
-
-dnl This gets autoconf bugfixes.
-m4_include(../config/override.m4)
-
-dnl For ZW_GNU_GETTEXT_SISTER_DIR.
-m4_include(../config/gettext-sister.m4)
-
-dnl For AC_LIB_HAVE_LINKFLAGS.
-m4_include(../config/lib-ld.m4)
-m4_include(../config/lib-prefix.m4)
-m4_include(../config/lib-link.m4)
-
-dnl For ACX_PKGVERSION and ACX_BUGURL.
-m4_include(../config/acx.m4)
-
-dnl for TCL definitions
-m4_include(../config/tcl.m4)
-
-dnl For dependency tracking macros.
-m4_include([../config/depstand.m4])
-
 dnl For AM_LC_MESSAGES
 m4_include([../config/lcmessage.m4])
 
@@ -76,8 +41,6 @@ m4_include(../gdbsupport/ptrace.m4)
 
 m4_include(ax_cxx_compile_stdcxx.m4)
 
-m4_include([../config/ax_pthread.m4])
-
 dnl written by Guido Draheim <guidod@gmx.de>, original by Alexandre Oliva 
 dnl Version 1.3 (2001/03/02)
 dnl source http://www.gnu.org/software/ac-archive/Miscellaneous/ac_define_dir.html
diff --git a/gdb/aclocal.m4 b/gdb/aclocal.m4
index cbea739c0e51..3869777d20c4 100644
--- a/gdb/aclocal.m4
+++ b/gdb/aclocal.m4
@@ -199,5 +199,19 @@ AC_DEFUN([_AM_SUBST_NOTMAKE])
 # Public sister of _AM_SUBST_NOTMAKE.
 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
+m4_include([../config/acx.m4])
+m4_include([../config/ax_pthread.m4])
+m4_include([../config/debuginfod.m4])
+m4_include([../config/depstand.m4])
+m4_include([../config/enable.m4])
+m4_include([../config/gettext-sister.m4])
+m4_include([../config/largefile.m4])
+m4_include([../config/lead-dot.m4])
+m4_include([../config/lib-ld.m4])
+m4_include([../config/lib-link.m4])
+m4_include([../config/lib-prefix.m4])
+m4_include([../config/override.m4])
 m4_include([../config/pkg.m4])
+m4_include([../config/plugins.m4])
+m4_include([../config/tcl.m4])
 m4_include([acinclude.m4])
diff --git a/gdb/configure b/gdb/configure
index c6b5906d9e47..a5c6fab118c5 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -2997,6 +2997,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
 ac_config_headers="$ac_config_headers config.h:config.in"
 
 
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 68cf84d6ca3f..67aa628c47d4 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -18,9 +18,8 @@ dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 dnl Process this file with autoconf to produce a configure script.
 
-m4_include(../config/debuginfod.m4)
-
 AC_INIT
+AC_CONFIG_MACRO_DIRS([../config])
 AC_CONFIG_SRCDIR([main.c])
 AC_CONFIG_HEADERS(config.h:config.in, [echo > stamp-h])
 AM_MAINTAINER_MODE
diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog
index 9f4fcf81603f..d29e438dcf36 100644
--- a/gdbserver/ChangeLog
+++ b/gdbserver/ChangeLog
@@ -1,3 +1,10 @@
+2021-06-15  Mike Frysinger  <vapier@gentoo.org>
+
+	* acinclude.m4: Delete most m4_include's of ../config files.
+	* configure.ac: Delete m4_include call and call AC_CONFIG_MACRO_DIR.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
 2021-06-14  Mike Frysinger  <vapier@gentoo.org>
 
 	* Makefile.in (GNULIB_BUILDDIR): Rename to ...
diff --git a/gdbserver/acinclude.m4 b/gdbserver/acinclude.m4
index e18ee9913a5c..741ac820fd2c 100644
--- a/gdbserver/acinclude.m4
+++ b/gdbserver/acinclude.m4
@@ -4,20 +4,6 @@ m4_include(../bfd/bfd.m4)
 dnl This gets AM_GDB_WARNINGS.
 m4_include(../gdbsupport/warning.m4)
 
-dnl This gets autoconf bugfixes
-m4_include(../config/override.m4)
-
-dnl For ACX_PKGVERSION and ACX_BUGURL.
-m4_include(../config/acx.m4)
-
-m4_include(../config/depstand.m4)
-m4_include(../config/lead-dot.m4)
-
-dnl Needed for common.m4
-dnl For AC_LIB_HAVE_LINKFLAGS.
-m4_include(../config/lib-ld.m4)
-m4_include(../config/lib-prefix.m4)
-m4_include(../config/lib-link.m4)
 dnl codeset.m4 is needed for common.m4, but not for
 dnl anything else in gdbserver.
 m4_include(../config/codeset.m4)
@@ -34,11 +20,6 @@ m4_include(../gdb/ax_cxx_compile_stdcxx.m4)
 dnl For GDB_AC_SELFTEST.
 m4_include(../gdbsupport/selftest.m4)
 
-m4_include([../config/ax_pthread.m4])
-
-dnl For ZW_GNU_GETTEXT_SISTER_DIR.
-m4_include(../config/gettext-sister.m4)
-
 dnl Check for existence of a type $1 in libthread_db.h
 dnl Based on BFD_HAVE_SYS_PROCFS_TYPE in bfd/bfd.m4.
 
diff --git a/gdbserver/aclocal.m4 b/gdbserver/aclocal.m4
index 110b416e6156..bceb92fdb5dd 100644
--- a/gdbserver/aclocal.m4
+++ b/gdbserver/aclocal.m4
@@ -199,4 +199,13 @@ AC_DEFUN([_AM_SUBST_NOTMAKE])
 # Public sister of _AM_SUBST_NOTMAKE.
 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
+m4_include([../config/acx.m4])
+m4_include([../config/ax_pthread.m4])
+m4_include([../config/depstand.m4])
+m4_include([../config/gettext-sister.m4])
+m4_include([../config/lead-dot.m4])
+m4_include([../config/lib-ld.m4])
+m4_include([../config/lib-link.m4])
+m4_include([../config/lib-prefix.m4])
+m4_include([../config/override.m4])
 m4_include([acinclude.m4])
diff --git a/gdbserver/configure b/gdbserver/configure
index aab72c0b8c51..b9d4653ae5e1 100755
--- a/gdbserver/configure
+++ b/gdbserver/configure
@@ -2714,6 +2714,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
 ac_config_headers="$ac_config_headers config.h:config.in"
 
 
diff --git a/gdbserver/configure.ac b/gdbserver/configure.ac
index 5ec222dfc605..afac1831ecde 100644
--- a/gdbserver/configure.ac
+++ b/gdbserver/configure.ac
@@ -19,6 +19,7 @@ dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
 dnl Process this file with autoconf to produce a configure script.
 
 AC_INIT
+AC_CONFIG_MACRO_DIRS([../config])
 AC_CONFIG_SRCDIR([server.cc])
 AC_CONFIG_HEADERS(config.h:config.in, [echo > stamp-h])
 
-- 
2.31.1
Simon Marchi via Gdb-patches June 17, 2021, 2:43 p.m. | #3
On 2021-06-17 12:21 a.m., Mike Frysinger wrote:
> On 16 Jun 2021 22:30, Simon Marchi wrote:

>> On 2021-06-15 1:44 a.m., Mike Frysinger via Gdb-patches wrote:

>>> These dirs don't use automake, so use AC_CONFIG_MACRO_DIRS to specify

>>> ../config as a search dir for m4 macros.  This allows removal of a lot

>>> of hand-written m4_include's from acinclude.m4 files, and simplifies

>>> use of `aclocal` or `autoreconf` as manual -I is not needed.

>>

>> For some reason, I get this when reconfiguring gdb:

>>

>>     configure.ac:531: warning: macro 'AM_ICONV' not found in library

>>

>> The result looks ok, the resulting configure looks fine, but if you

>> happen to know why...

> 

> i don't know why automake is able to find some of the ../config/ m4 files

> just fine, but a few others it barfs on.  i don't see the warning because

> i have gettext installed and automake finds the system iconv.m4.


There seems to be a special case for printing that warning for AM_*
macros:

https://github.com/autotools-mirror/automake/blob/e7724fb1b7b97f662caf154414e6f71ffcbd966c/bin/aclocal.in#L528-L540

I debugged aclocal as much as I could, and it seems to find AM_ICONV
just fine, with --verbose I see:

  aclocal: found macro AM_ICONV in ../config/iconv.m4: 104

Also, note that with `aclocal -I ../config` I do not see the warning...
but aclocal does support AC_CONFIG_MACRO_DIRS, so this difference is
surprising.

So I'd be tempted to call that an aclocal bug, although a benign one.
I'd suggest still just doing the right thing and removing all the
../config/* includes, and just ignore the warnings.  I'll try to open an
automake bug or ask on the mailing list eventually.

Simon
Simon Marchi via Gdb-patches June 18, 2021, 4:38 a.m. | #4
On 17 Jun 2021 10:43, Simon Marchi via Gdb-patches wrote:
> On 2021-06-17 12:21 a.m., Mike Frysinger wrote:

> > On 16 Jun 2021 22:30, Simon Marchi wrote:

> >> On 2021-06-15 1:44 a.m., Mike Frysinger via Gdb-patches wrote:

> >>> These dirs don't use automake, so use AC_CONFIG_MACRO_DIRS to specify

> >>> ../config as a search dir for m4 macros.  This allows removal of a lot

> >>> of hand-written m4_include's from acinclude.m4 files, and simplifies

> >>> use of `aclocal` or `autoreconf` as manual -I is not needed.

> >>

> >> For some reason, I get this when reconfiguring gdb:

> >>

> >>     configure.ac:531: warning: macro 'AM_ICONV' not found in library

> >>

> >> The result looks ok, the resulting configure looks fine, but if you

> >> happen to know why...

> > 

> > i don't know why automake is able to find some of the ../config/ m4 files

> > just fine, but a few others it barfs on.  i don't see the warning because

> > i have gettext installed and automake finds the system iconv.m4.

> 

> There seems to be a special case for printing that warning for AM_*

> macros:

> 

> https://github.com/autotools-mirror/automake/blob/e7724fb1b7b97f662caf154414e6f71ffcbd966c/bin/aclocal.in#L528-L540

> 

> I debugged aclocal as much as I could, and it seems to find AM_ICONV

> just fine, with --verbose I see:

> 

>   aclocal: found macro AM_ICONV in ../config/iconv.m4: 104

> 

> Also, note that with `aclocal -I ../config` I do not see the warning...

> but aclocal does support AC_CONFIG_MACRO_DIRS, so this difference is

> surprising.

> 

> So I'd be tempted to call that an aclocal bug, although a benign one.


oof, i agree, that smells like an aclocal bug.  i'm not sure i'd call it benign
when it's indistinguishable from actual missing macros.  for example:
$ echo AM_FOO >> configure.ac
$ aclocal
configure.ac:121: warning: macro 'AM_FOO' not found in library
$ echo $?
0

i think autoconf might fail (i hope that's always the case), but it feels a
bit wrong for it to be disconnected as such.  and hopefully people always
check the exit code of their tools ;).

> I'd suggest still just doing the right thing and removing all the

> ../config/* includes, and just ignore the warnings.  I'll try to open an

> automake bug or ask on the mailing list eventually.


this seems to go against our -Werror approach to things.  i also suspect
it'll trip up devs who waste time trying to figure out why there's this
warning (and surely it's their problem because no one else in the project
would allow this to creep in), which means a snowball effect for people.

so all things considered, i think the explicit include to silence the
warning is the right trade-off.  we can add some comments explaining
why they're there so that at least doesn't keep tripping us up.

how about at the top of acinclude.m4:
dnl NB: When possible, try to avoid explicit includes of ../config/ files.
dnl They're normally found by aclocal automatically and recorded in aclocal.m4.
dnl However, some are kept here explicitly to silence harmless warnings from
dnl aclocal when it finds AM_xxx macros via local search paths instead of
dnl system search paths.
-mike
Simon Marchi via Gdb-patches June 18, 2021, 1:22 p.m. | #5
> oof, i agree, that smells like an aclocal bug.  i'm not sure i'd call it benign

> when it's indistinguishable from actual missing macros.  for example:

> $ echo AM_FOO >> configure.ac

> $ aclocal

> configure.ac:121: warning: macro 'AM_FOO' not found in library

> $ echo $?

> 0


The aclocal warning is indistinguishable between a valid and an invalid
macro.  But if the macro is valid, it will successfully get replaced by
autoconf and we will get the expected result in the configure file.
That's why I called it benign.

If the macro doesn't exist (like AM_FOO), of course it won't get
replaced, and AM_FOO will appear literally in the configure file.  But
then the configure file will just be obviously broken.

> 

> i think autoconf might fail (i hope that's always the case), but it feels a

> bit wrong for it to be disconnected as such.  and hopefully people always

> check the exit code of their tools ;).

> 

>> I'd suggest still just doing the right thing and removing all the

>> ../config/* includes, and just ignore the warnings.  I'll try to open an

>> automake bug or ask on the mailing list eventually.

> 

> this seems to go against our -Werror approach to things.  i also suspect

> it'll trip up devs who waste time trying to figure out why there's this

> warning (and surely it's their problem because no one else in the project

> would allow this to creep in), which means a snowball effect for people.


Hmm, right.

> so all things considered, i think the explicit include to silence the

> warning is the right trade-off.  we can add some comments explaining

> why they're there so that at least doesn't keep tripping us up.

> 

> how about at the top of acinclude.m4:

> dnl NB: When possible, try to avoid explicit includes of ../config/ files.

> dnl They're normally found by aclocal automatically and recorded in aclocal.m4.

> dnl However, some are kept here explicitly to silence harmless warnings from

> dnl aclocal when it finds AM_xxx macros via local search paths instead of

> dnl system search paths.

> -mike


That LGTM.

Simon
Pedro Alves June 23, 2021, 9:38 a.m. | #6
On 2021-06-18 5:38 a.m., Mike Frysinger via Gdb-patches wrote:
> 

> how about at the top of acinclude.m4:

> dnl NB: When possible, try to avoid explicit includes of ../config/ files.

> dnl They're normally found by aclocal automatically and recorded in aclocal.m4.

> dnl However, some are kept here explicitly to silence harmless warnings from

> dnl aclocal when it finds AM_xxx macros via local search paths instead of

> dnl system search paths.

> -mike


That seems good to me, but I think better would be to put all such include lines
together and put the comment right on top of that section.  Like:

dnl NB: When possible, we try to avoid explicit includes of ../config/ files.
dnl They're normally found by aclocal automatically and recorded in aclocal.m4.
dnl However, the following are kept here explicitly to silence harmless warnings
dnl from aclocal when it finds AM_xxx macros via local search paths instead of
dnl system search paths.
m4_include([../config/foo.m4])
m4_include([../config/bar.m4])


I've had my share of "comments at the top" that I've missed in the past...
Simon Marchi via Gdb-patches June 23, 2021, 10:26 p.m. | #7
On 23 Jun 2021 10:38, Pedro Alves wrote:
> On 2021-06-18 5:38 a.m., Mike Frysinger via Gdb-patches wrote:

> > 

> > how about at the top of acinclude.m4:

> > dnl NB: When possible, try to avoid explicit includes of ../config/ files.

> > dnl They're normally found by aclocal automatically and recorded in aclocal.m4.

> > dnl However, some are kept here explicitly to silence harmless warnings from

> > dnl aclocal when it finds AM_xxx macros via local search paths instead of

> > dnl system search paths.

> > -mike

> 

> That seems good to me, but I think better would be to put all such include lines

> together and put the comment right on top of that section.  Like:

> 

> dnl NB: When possible, we try to avoid explicit includes of ../config/ files.

> dnl They're normally found by aclocal automatically and recorded in aclocal.m4.

> dnl However, the following are kept here explicitly to silence harmless warnings

> dnl from aclocal when it finds AM_xxx macros via local search paths instead of

> dnl system search paths.

> m4_include([../config/foo.m4])

> m4_include([../config/bar.m4])

> 

> 

> I've had my share of "comments at the top" that I've missed in the past...


how about:

--- a/gdb/acinclude.m4
+++ b/gdb/acinclude.m4
@@ -9,6 +9,18 @@ dnl They're normally found by aclocal automatically and recorded in aclocal.m4.
 dnl However, some are kept here explicitly to silence harmless warnings from
 dnl aclocal when it finds AM_xxx macros via local search paths instead of
 dnl system search paths.
+dnl
+dnl For AM_LC_MESSAGES
+m4_include([../config/lcmessage.m4])
+dnl For AM_LANGINFO_CODESET.
+m4_include([../config/codeset.m4])
+dnl We need to explicitly include these before iconv.m4 to avoid warnings.
+m4_include([../config/lib-ld.m4])
+m4_include([../config/lib-prefix.m4])
+m4_include([../config/lib-link.m4])
+m4_include([../config/iconv.m4])
+dnl For zlib itself.
+m4_include([../config/zlib.m4])
 
 m4_include(acx_configure_dir.m4)
 
@@ -27,20 +39,6 @@ m4_include(../gdbsupport/selftest.m4)
 dnl gdb/configure.in uses BFD_NEED_DECLARATION, so get its definition.
 m4_include(../bfd/bfd.m4)
 
-dnl For AM_LC_MESSAGES
-m4_include([../config/lcmessage.m4])
-
-dnl For AM_LANGINFO_CODESET.
-m4_include([../config/codeset.m4])
-
-dnl We need to explicitly include these before iconv.m4 to avoid warnings.
-m4_include([../config/lib-ld.m4])
-m4_include([../config/lib-prefix.m4])
-m4_include([../config/lib-link.m4])
-m4_include([../config/iconv.m4])
-
-m4_include([../config/zlib.m4])
-
 m4_include([../gdbsupport/common.m4])
 
 dnl For libiberty_INIT.
--- a/gdbserver/acinclude.m4
+++ b/gdbserver/acinclude.m4
@@ -3,6 +3,10 @@ dnl They're normally found by aclocal automatically and recorded in aclocal.m4.
 dnl However, some are kept here explicitly to silence harmless warnings from
 dnl aclocal when it finds AM_xxx macros via local search paths instead of
 dnl system search paths.
+dnl
+dnl codeset.m4 is needed for common.m4, but not for
+dnl anything else in gdbserver.
+m4_include(../config/codeset.m4)
 
 dnl gdb/gdbserver/configure.in uses BFD_HAVE_SYS_PROCFS_TYPE.
 m4_include(../bfd/bfd.m4)
@@ -10,9 +14,6 @@ m4_include(../bfd/bfd.m4)
 dnl This gets AM_GDB_WARNINGS.
 m4_include(../gdbsupport/warning.m4)
 
-dnl codeset.m4 is needed for common.m4, but not for
-dnl anything else in gdbserver.
-m4_include(../config/codeset.m4)
 m4_include(../gdbsupport/common.m4)
 
 dnl For libiberty_INIT.
Pedro Alves June 24, 2021, 6:45 p.m. | #8
On 2021-06-23 11:26 p.m., Mike Frysinger wrote:
> On 23 Jun 2021 10:38, Pedro Alves wrote:

>> On 2021-06-18 5:38 a.m., Mike Frysinger via Gdb-patches wrote:

>>>

>>> how about at the top of acinclude.m4:

>>> dnl NB: When possible, try to avoid explicit includes of ../config/ files.

>>> dnl They're normally found by aclocal automatically and recorded in aclocal.m4.

>>> dnl However, some are kept here explicitly to silence harmless warnings from

>>> dnl aclocal when it finds AM_xxx macros via local search paths instead of

>>> dnl system search paths.

>>> -mike

>>

>> That seems good to me, but I think better would be to put all such include lines

>> together and put the comment right on top of that section.  Like:

>>

>> dnl NB: When possible, we try to avoid explicit includes of ../config/ files.

>> dnl They're normally found by aclocal automatically and recorded in aclocal.m4.

>> dnl However, the following are kept here explicitly to silence harmless warnings

>> dnl from aclocal when it finds AM_xxx macros via local search paths instead of

>> dnl system search paths.

>> m4_include([../config/foo.m4])

>> m4_include([../config/bar.m4])

>>

>>

>> I've had my share of "comments at the top" that I've missed in the past...

> 

> how about:

> 


LGTM, thanks.  I'd still suggest tweaking the comments to make it clearer
that by "some are kept" we're talking about the ones right below
the comment, like say, "these below are kept" instead or something like that.

Pedro Alves

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c56c129d0b1f..c914fa97cb23 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@ 
+2021-06-15  Mike Frysinger  <vapier@gentoo.org>
+
+	* acinclude.m4: Delete most m4_include's of ../config files.
+	* configure.ac: Delete m4_include call and call AC_CONFIG_MACRO_DIR.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
 2021-06-15  Alan Modra  <amodra@gmail.com>
 
 	* testsuite/lib/gdb.exp (exec_is_pie): Match new PIE readelf output.
diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4
index 68520d6d9381..b162201a67b7 100644
--- a/gdb/acinclude.m4
+++ b/gdb/acinclude.m4
@@ -21,49 +21,12 @@  m4_include(../gdbsupport/selftest.m4)
 dnl gdb/configure.in uses BFD_NEED_DECLARATION, so get its definition.
 m4_include(../bfd/bfd.m4)
 
-dnl This gets the standard macros.
-m4_include(../config/acinclude.m4)
-
-dnl This gets GCC_ENABLE.
-sinclude(../config/enable.m4)
-
-dnl This gets AC_PLUGINS, needed by ACX_LARGEFILE.
-m4_include(../config/plugins.m4)
-
-dnl For ACX_LARGEFILE.
-m4_include(../config/largefile.m4)
-
-dnl For AM_SET_LEADING_DOT.
-m4_include(../config/lead-dot.m4)
-
-dnl This gets autoconf bugfixes.
-m4_include(../config/override.m4)
-
-dnl For ZW_GNU_GETTEXT_SISTER_DIR.
-m4_include(../config/gettext-sister.m4)
-
-dnl For AC_LIB_HAVE_LINKFLAGS.
-m4_include(../config/lib-ld.m4)
-m4_include(../config/lib-prefix.m4)
-m4_include(../config/lib-link.m4)
-
-dnl For ACX_PKGVERSION and ACX_BUGURL.
-m4_include(../config/acx.m4)
-
-dnl for TCL definitions
-m4_include(../config/tcl.m4)
-
-dnl For dependency tracking macros.
-m4_include([../config/depstand.m4])
-
 dnl For AM_LC_MESSAGES
 m4_include([../config/lcmessage.m4])
 
 dnl For AM_LANGINFO_CODESET.
 m4_include([../config/codeset.m4])
 
-m4_include([../config/iconv.m4])
-
 m4_include([../config/zlib.m4])
 
 m4_include([../gdbsupport/common.m4])
@@ -76,8 +39,6 @@  m4_include(../gdbsupport/ptrace.m4)
 
 m4_include(ax_cxx_compile_stdcxx.m4)
 
-m4_include([../config/ax_pthread.m4])
-
 dnl written by Guido Draheim <guidod@gmx.de>, original by Alexandre Oliva 
 dnl Version 1.3 (2001/03/02)
 dnl source http://www.gnu.org/software/ac-archive/Miscellaneous/ac_define_dir.html
diff --git a/gdb/aclocal.m4 b/gdb/aclocal.m4
index cbea739c0e51..6a050f54fe67 100644
--- a/gdb/aclocal.m4
+++ b/gdb/aclocal.m4
@@ -199,5 +199,20 @@  AC_DEFUN([_AM_SUBST_NOTMAKE])
 # Public sister of _AM_SUBST_NOTMAKE.
 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
+m4_include([../config/acx.m4])
+m4_include([../config/ax_pthread.m4])
+m4_include([../config/debuginfod.m4])
+m4_include([../config/depstand.m4])
+m4_include([../config/enable.m4])
+m4_include([../config/gettext-sister.m4])
+m4_include([../config/iconv.m4])
+m4_include([../config/largefile.m4])
+m4_include([../config/lead-dot.m4])
+m4_include([../config/lib-ld.m4])
+m4_include([../config/lib-link.m4])
+m4_include([../config/lib-prefix.m4])
+m4_include([../config/override.m4])
 m4_include([../config/pkg.m4])
+m4_include([../config/plugins.m4])
+m4_include([../config/tcl.m4])
 m4_include([acinclude.m4])
diff --git a/gdb/configure b/gdb/configure
index c6b5906d9e47..a5c6fab118c5 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -2997,6 +2997,7 @@  ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
 ac_config_headers="$ac_config_headers config.h:config.in"
 
 
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 68cf84d6ca3f..67aa628c47d4 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -18,9 +18,8 @@  dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 dnl Process this file with autoconf to produce a configure script.
 
-m4_include(../config/debuginfod.m4)
-
 AC_INIT
+AC_CONFIG_MACRO_DIRS([../config])
 AC_CONFIG_SRCDIR([main.c])
 AC_CONFIG_HEADERS(config.h:config.in, [echo > stamp-h])
 AM_MAINTAINER_MODE
diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog
index 9f4fcf81603f..d29e438dcf36 100644
--- a/gdbserver/ChangeLog
+++ b/gdbserver/ChangeLog
@@ -1,3 +1,10 @@ 
+2021-06-15  Mike Frysinger  <vapier@gentoo.org>
+
+	* acinclude.m4: Delete most m4_include's of ../config files.
+	* configure.ac: Delete m4_include call and call AC_CONFIG_MACRO_DIR.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
 2021-06-14  Mike Frysinger  <vapier@gentoo.org>
 
 	* Makefile.in (GNULIB_BUILDDIR): Rename to ...
diff --git a/gdbserver/acinclude.m4 b/gdbserver/acinclude.m4
index e18ee9913a5c..741ac820fd2c 100644
--- a/gdbserver/acinclude.m4
+++ b/gdbserver/acinclude.m4
@@ -4,20 +4,6 @@  m4_include(../bfd/bfd.m4)
 dnl This gets AM_GDB_WARNINGS.
 m4_include(../gdbsupport/warning.m4)
 
-dnl This gets autoconf bugfixes
-m4_include(../config/override.m4)
-
-dnl For ACX_PKGVERSION and ACX_BUGURL.
-m4_include(../config/acx.m4)
-
-m4_include(../config/depstand.m4)
-m4_include(../config/lead-dot.m4)
-
-dnl Needed for common.m4
-dnl For AC_LIB_HAVE_LINKFLAGS.
-m4_include(../config/lib-ld.m4)
-m4_include(../config/lib-prefix.m4)
-m4_include(../config/lib-link.m4)
 dnl codeset.m4 is needed for common.m4, but not for
 dnl anything else in gdbserver.
 m4_include(../config/codeset.m4)
@@ -34,11 +20,6 @@  m4_include(../gdb/ax_cxx_compile_stdcxx.m4)
 dnl For GDB_AC_SELFTEST.
 m4_include(../gdbsupport/selftest.m4)
 
-m4_include([../config/ax_pthread.m4])
-
-dnl For ZW_GNU_GETTEXT_SISTER_DIR.
-m4_include(../config/gettext-sister.m4)
-
 dnl Check for existence of a type $1 in libthread_db.h
 dnl Based on BFD_HAVE_SYS_PROCFS_TYPE in bfd/bfd.m4.
 
diff --git a/gdbserver/aclocal.m4 b/gdbserver/aclocal.m4
index 110b416e6156..bceb92fdb5dd 100644
--- a/gdbserver/aclocal.m4
+++ b/gdbserver/aclocal.m4
@@ -199,4 +199,13 @@  AC_DEFUN([_AM_SUBST_NOTMAKE])
 # Public sister of _AM_SUBST_NOTMAKE.
 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
+m4_include([../config/acx.m4])
+m4_include([../config/ax_pthread.m4])
+m4_include([../config/depstand.m4])
+m4_include([../config/gettext-sister.m4])
+m4_include([../config/lead-dot.m4])
+m4_include([../config/lib-ld.m4])
+m4_include([../config/lib-link.m4])
+m4_include([../config/lib-prefix.m4])
+m4_include([../config/override.m4])
 m4_include([acinclude.m4])
diff --git a/gdbserver/configure b/gdbserver/configure
index aab72c0b8c51..b9d4653ae5e1 100755
--- a/gdbserver/configure
+++ b/gdbserver/configure
@@ -2714,6 +2714,7 @@  ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
 ac_config_headers="$ac_config_headers config.h:config.in"
 
 
diff --git a/gdbserver/configure.ac b/gdbserver/configure.ac
index 5ec222dfc605..afac1831ecde 100644
--- a/gdbserver/configure.ac
+++ b/gdbserver/configure.ac
@@ -19,6 +19,7 @@  dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
 dnl Process this file with autoconf to produce a configure script.
 
 AC_INIT
+AC_CONFIG_MACRO_DIRS([../config])
 AC_CONFIG_SRCDIR([server.cc])
 AC_CONFIG_HEADERS(config.h:config.in, [echo > stamp-h])