Re: [PATCH v2 3/5] Makefile: fix "cscope" target to refer to cscope.out
- From
Jeff King <peff@peff.net>
- Date
- Jul 1, 2021, 22:23 UTC
- Message-ID
- <YN5AeMiTiHFrFW/7@coredump.intra.peff.net>
- In-Reply-To
- <patch-3.5-35c8b83904-20210629T110837Z-avarab@gmail.com>
On Tue, Jun 29, 2021 at 01:12:57PM +0200, Ævar Arnfjörð Bjarmason wrote:
Show 17 quoted lines
> diff --git a/Makefile b/Makefile > index faa8900097..2e3b257164 100644 > --- a/Makefile > +++ b/Makefile > @@ -2737,10 +2737,12 @@ tags: FORCE > $(FIND_SOURCE_FILES) | xargs ctags -a -o tags+ && \ > mv tags+ tags > > +cscope.out: > + $(QUIET_GEN)$(RM) cscope.out && \ > + $(FIND_SOURCE_FILES) | xargs cscope -f$@ -b > + > .PHONY: cscope > -cscope: > - $(QUIET_GEN)$(RM) cscope* && \ > - $(FIND_SOURCE_FILES) | xargs cscope -b > +cscope: cscope.out
Doesn't this break subsequent runs after the first generation? With a phony "cscope" target, "make cscope" will always run the command, even if it's not necessary. But with a real "cscope.out" target but not dependencies, it will _never_ run it, even if one of the files changed.
E.g., with your patch:
$ make cscope.out
GEN cscope.out$ make cscope.out make: 'cscope.out' is up to date.
$ echo 'void foo(void) { }' >>git.c
$ make cscope.out
GIT_VERSION = 2.32.0.96.g5daee1b7bb.dirty
make: 'cscope.out' is up to date.-Peff