Re: disabling the built-in rules

2023-07-17 Thread Paul Smith
On Mon, 2023-07-17 at 20:41 +0200, Alejandro Colomar wrote: > BTW, could you point out the problems with the following? > > MAKEFLAGS += --no-builtin-rules > MAKEFLAGS += --no-builtin-variables > MAKEFLAGS += --warn-undefined-variables > > This is what I currently use, and never had a big issue w

Re: disabling the built-in rules

2023-07-17 Thread Bruno Haible
Paul Smith wrote: > POSIX > reserves all targets prefixed with "." (that are not already specified > in the standard) to the implementation. So it's fine with POSIX to add > a pseudo target like .NOBUILTINS; no conforming makefile can use that > target for anything else. Thanks for explaining!

Re: disabling the built-in rules

2023-07-17 Thread Alejandro Colomar
Hi Paul, On 2023-07-17 20:35, Paul Smith wrote: > On Mon, 2023-07-17 at 19:31 +0200, Bruno Haible wrote: >> Except possibly that POSIX does not allow this? Then we would need a >> pseudo-target the turns off only the non-standardized part of the >> built-in database, say, .NO_GNU_BUILTINS. And use

Re: disabling the built-in rules

2023-07-17 Thread Paul Smith
On Mon, 2023-07-17 at 19:31 +0200, Bruno Haible wrote: > Except possibly that POSIX does not allow this? Then we would need a > pseudo-target the turns off only the non-standardized part of the > built-in database, say, .NO_GNU_BUILTINS. And users would have to > write: > >   .SUFFIXES: >   .NO_GN

Re: disabling the built-in rules

2023-07-17 Thread Bruno Haible
Paul Smith wrote: > Or, to test: > > all: > > .SUFFIXES: > %:: %,v > %:: RCS/%,v > %:: RCS/% > %:: s.% > %:: SCCS/s.% Indeed, this works fine with the 'make' on FreeBSD, NetBSD, OpenBSD, Solaris 10, and AIX. > If we were to add something it would be a pseudo-target like: > > .N

Re: disabling the built-in rules

2023-07-17 Thread Paul Smith
On Mon, 2023-07-17 at 18:49 +0200, Bruno Haible wrote: > It's also annyoing because it does not work portably: On FreeBSD and > NetBSD, > 'make' gives an error: > >   make: don't know how to make %,v. Stop > > Similarly on OpenBSD: > >   make: don't know how to make %,v (prerequisite of: %) > >

Re: disabling the built-in rules

2023-07-17 Thread Bruno Haible
Paul Smith wrote: > I do not > usually recommend this method of clearing the default rules. There are > issues with modifying MAKEFLAGS, especially with some older versions of > GNU Make. And also, in some older versions setting MAKEFLAGS in the > makefile doesn't actually take effect anyway: it

Re: MAKEFLAGS=-r

2023-07-17 Thread Bruno Haible
David Boyce wrote: > You say GNUMAKEFLAGS+=-r is "invalid syntax" but I don't know quite how to > read that. It's not invalid in the sense of causing an error, it's just > that it would be invisible to any non-GNU make program Indeed, sorry. You're right. I confused it with the := assignment opera

Re: MAKEFLAGS=-r

2023-07-17 Thread Paul Smith
On Mon, 2023-07-17 at 11:45 +0200, Bruno Haible wrote: > Dmitry Goncharov wrote: > > Once the makefile author knows the makefile does not need built-in > > rules, they should add MAKEFLAGS=-r in the makefile and > > this will do a good service to all their users. I'm not sure I've followed the ent

Re: MAKEFLAGS=-r

2023-07-17 Thread David Boyce
I know nothing about autotools, so I should probably stop talking, but not quite yet. You say GNUMAKEFLAGS+=-r is "invalid syntax" but I don't know quite how to read that. It's not invalid in the sense of causing an error, it's just that it would be invisible to any non-GNU make program so presuma

Re: MAKEFLAGS=-r

2023-07-17 Thread Bruno Haible
David Boyce wrote: > Everything else aside, there's a profound difference between MAKEFLAGS=-r > and MAKEFLAGS+=-r. The latter is far less destabilizing. At least the '-n' option does not get lost by MAKEFLAGS=-r. That is, setting MAKEFLAGS=-r and running 'make -n' does not cause the actions to be

Re: MAKEFLAGS=-r

2023-07-17 Thread David Boyce
Everything else aside, there's a profound difference between MAKEFLAGS=-r and MAKEFLAGS+=-r. The latter is far less destabilizing. And yes, GNUMAKEFLAGS is definitely better for this use. On Mon, Jul 17, 2023 at 5:45 AM Bruno Haible wrote: > Dmitry Goncharov wrote: > > Once the makefile author k

Re: GNU make troubleshooting

2023-07-17 Thread Bruno Haible
Dmitry Goncharov wrote: > > I believe these two user goals are so different; they belong in different > > chapters. > ... > In other words, i don't see a chapter on how to avoid big debug output > without optimizing the makefile. Wait a second. "How to avoid big debug output?" is not one of the pr

Re: wildcard and globstar

2023-07-17 Thread Paul Smith
On Mon, 2023-07-17 at 09:02 -0400, David Boyce wrote: > This raises a side question: it's quite common for glob libraries to > support ** as meaning "search recursively", such as > https://docs.python.org/3/library/glob.html. I'd be a bit surprised > if gnulib's glob implementation didn't support t

Re: wildcard and globstar

2023-07-17 Thread Alejandro Colomar
On 2023-07-17 09:34, Andreas Schwab wrote: > On Jul 16 2023, Alejandro Colomar wrote: > >> However, after the suggestion from Torbjörn, I've picked this workaround >> to reduce the code. It ended up being as small as this: >> >> MK := \ >> $(srcdir)/Makefile \ >> $(wildcard $(MAKEFILEDI

Re: wildcard and globstar

2023-07-17 Thread David Boyce
This raises a side question: it's quite common for glob libraries to support ** as meaning "search recursively", such as https://docs.python.org/3/library/glob.html. I'd be a bit surprised if gnulib's glob implementation didn't support this. Is it possible for GNU make to support $(wildcard **/.mk)

Re: GNU make troubleshooting

2023-07-17 Thread Paul Smith
On Sat, 2023-07-15 at 11:28 -0400, Dmitry Goncharov wrote: > Appendix A Debug Output. Thanks for this Dmitry; I spent some time this weekend working on a new section of the manual that would overlap with this. However I will definitely examine your patch and make sure the points you (and everyone

Re: MAKEFLAGS=-r

2023-07-17 Thread Bruno Haible
Dmitry Goncharov wrote: > Once the makefile author knows the makefile does not need built-in > rules, they should add MAKEFLAGS=-r in the makefile and > this will do a good service to all their users. The premise "does not need built-in rules" is likely true for most Makefiles generated by GNU Aut

Re: wildcard and globstar

2023-07-17 Thread Andreas Schwab
On Jul 16 2023, Alejandro Colomar wrote: > However, after the suggestion from Torbjörn, I've picked this workaround > to reduce the code. It ended up being as small as this: > > MK := \ > $(srcdir)/Makefile \ > $(wildcard $(MAKEFILEDIR)/*.mk $(MAKEFILEDIR)/*/*.mk > $(MAKEFILEDIR)/*/*