]> xenbits.xensource.com Git - xen.git/commitdiff
xen: add cloc target
authorStefano Stabellini <sstabellini@kernel.org>
Tue, 31 Jul 2018 15:23:01 +0000 (08:23 -0700)
committerJulien Grall <julien.grall@arm.com>
Thu, 2 Aug 2018 11:27:30 +0000 (12:27 +0100)
Add a Xen build target to count the lines of code of the source files
built. Uses `cloc' to do the job.

With Xen on ARM taking off in embedded, IoT, and automotive, we are
seeing more and more uses of Xen in constrained environments. Users and
system integrators want the smallest Xen and Dom0 configurations. Some
of these deployments require certifications, where you definitely want
the smallest lines of code count. I provided this patch to give us the
lines of code count for that purpose.

Use the .o.d files to account for all the built source files. Generate a
list for the `cloc' utility and invoke `cloc'.

Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
Acked-by: Jan Beulich <jbeulich@suse.com>
CC: jbeulich@suse.com
CC: andrew.cooper3@citrix.com
---
Changes in v4:
- use grep regex to get multiple source files from .d files

Changes in v3:
- remove build as dependecy for the cloc target

Changes in v2:
- change implementation to use .o.d to find built source files

xen/Makefile

index e0b17f61be92cb6a31ecf70ab5a07fc03f2a6230..e131cf4b71505932f6b7ece5995c2e0bc81c9373 100644 (file)
@@ -278,3 +278,15 @@ $(KCONFIG_CONFIG):
 include/config/auto.conf.cmd: ;
 
 -include $(BASEDIR)/include/config/auto.conf.cmd
+
+.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)
+