]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Makefile: remove duplicate and unwanted files in FOUND_SOURCE_FILES
authorJiang Xin <zhiyou.jx@alibaba-inc.com>
Thu, 26 May 2022 14:50:30 +0000 (22:50 +0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 26 May 2022 17:30:29 +0000 (10:30 -0700)
We get source files saved in "$(FOUND_SOURCE_FILES)" by running the
command "git ls-files" or the command "find". We tried to have the
both commands return the same list of files, but apparently the "find"
command will return more files, such as the generated headers. We can
filter out these generated headers to get closer results.

In addition to this, "$(FOUND_SOURCE_FILES)" may contain duplicate
files. E.g. "git-ls-files" may have duplicate entries for the same file
in different staging areas if there are unresolved conflicts in the
working tree. For this case, we can reduce duplicate entries by passing
the option "--deduplicate" to git-ls-files.

Junio reported that when running "make" in a working tree with
unresolved conflicts, "make" may report warnings like below:

    Makefile:xxxx: target '.build/pot/po/FOO.c.po' given more than once
                   in the same rule

The duplicate targets are introduced by the following pattern rule we
added in the preceding commit for incremental build of "po/git.pot".

    $(LOCALIZED_C_GEN_PO): .build/pot/po/%.po: %

Although we have resolved this issue by sorting to create a unique
$(LOCALIZED_C), other targets may benefit from this. Such as: tags,
cscope.out, etc.

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile

index 72a3ddaed4fed26f1f195b0d084fb4d856d8886f..0cc397d21417c8d580c5d21d13765fd29e5ed610 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -845,7 +845,7 @@ generated-hdrs: $(GENERATED_H)
 ## Exhaustive lists of our source files, either dynamically generated,
 ## or hardcoded.
 SOURCES_CMD = ( \
-       git ls-files \
+       git ls-files --deduplicate \
                '*.[hcS]' \
                '*.sh' \
                ':!*[tp][0-9][0-9][0-9][0-9]*' \
@@ -862,7 +862,7 @@ SOURCES_CMD = ( \
                -o \( -name '*.sh' -type f -print \) \
                | sed -e 's|^\./||' \
        )
-FOUND_SOURCE_FILES := $(shell $(SOURCES_CMD))
+FOUND_SOURCE_FILES := $(filter-out $(GENERATED_H),$(shell $(SOURCES_CMD)))
 
 FOUND_C_SOURCES = $(filter %.c,$(FOUND_SOURCE_FILES))
 FOUND_H_SOURCES = $(filter %.h,$(FOUND_SOURCE_FILES))