Follow-up Comment #6, bug #57676 (project make):

> I would consider this a bug in make
Well, it's not wrong that there is no rule to make the dependency file and
adding one does silence it (this is make-4.3.90):

martind@paris:~/tmp/make-57676$ cat Makefile2
-include deps

BADGER := $(shell touch deps)

some-file: deps;

deps:;
martind@paris:~/tmp/make-57676$ rm -f deps; make -f Makefile2
make: 'some-file' is up to date.
martind@paris:~/tmp/make-57676$ 


https://www.gnu.org/software/make/manual/html_node/Include.html doesn't just
say the leading hyphen suppresses errors when the file doesn't exist, but also
says that it suppresses errors when it cannot be remade.  Indeed, this is
silent:


martind@paris:~/tmp/make-57676$ cat Makefile3
-include deps

some-file:;
martind@paris:~/tmp/make-57676$ 


So the issue only arises when the -include()d file is also a dependency.  It's
not just that there's no rule to make that dependency, because Make does
notice that it's appeared in:


martind@paris:~/tmp/make-57676$ cat Makefile4
BADGER := $(shell touch deps)

some-file: deps;
martind@paris:~/tmp/make-57676$ rm -f deps; make -f Makefile4
make: 'some-file' is up to date.
martind@paris:~/tmp/make-57676$ 


If the side-effect happens before the -include, then all is also well:


martind@paris:~/tmp/make-57676$ cat Makefile5
BADGER := $(shell touch deps)

-include deps

some-file: deps;
martind@paris:~/tmp/make-57676$ rm -f deps; make -f Makefile5
make: 'some-file' is up to date.
martind@paris:~/tmp/make-57676$ 


Putting all that together, the new behavior does feel... unfortunate, at least
to me.

    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?57676>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/


Reply via email to