build: rework cloc recipe
authorAnthony PERARD <anthony.perard@citrix.com>
Fri, 18 Feb 2022 07:58:52 +0000 (08:58 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 18 Feb 2022 07:58:52 +0000 (08:58 +0100)
We are going to make other modifications to the cloc recipe, so this
patch prepare make those modification easier.

We replace the Makefile meta programming by just a shell script which
should be easier to read and is actually faster to execute.

Instead of looking for files in "$(BASEDIR)", we use "." which is give
the same result overall. We also avoid the need for a temporary file
as cloc can read the list of files from stdin.

No change intended to the output of `cloc`.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
xen/Makefile

index 0dc44ddd2741adf07c18265bc561cbc040bcb091..6e4ea200aaf15cc9b8ef78f5c56b1746d7d52428 100644 (file)
@@ -473,14 +473,12 @@ _MAP:
 
 .PHONY: cloc
 cloc:
-       $(eval tmpfile := $(shell mktemp))
-       $(foreach f, $(shell find $(BASEDIR) -name *.o.d), \
-               $(eval path := $(dir $(f))) \
-               $(eval names := $(shell grep -o "[a-zA-Z0-9_/-]*\.[cS]" $(f))) \
-               $(foreach sf, $(names), \
-                       $(shell if test -f $(path)/$(sf) ; then echo $(path)/$(sf) >> $(tmpfile); fi;)))
-       cloc --list-file=$(tmpfile)
-       rm $(tmpfile)
+       find . -name '*.o.d' | while read f; do \
+           for sf in $$(grep -o "[a-zA-Z0-9_/-]*\.[cS]" $$f); do \
+               sf="$$(dirname $$f)/$$sf"; \
+               test -f "$$sf" && echo "$$sf"; \
+           done; \
+       done | cloc --list-file=-
 
 endif #config-build