Makefile: Skip symbolic links to files for cscope
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 8 Oct 2019 18:12:45 +0000 (21:12 +0300)
committerTom Rini <trini@konsulko.com>
Wed, 16 Oct 2019 22:09:26 +0000 (18:09 -0400)
cscope complains that it can't find files that appears to be symbolic links

cscope: cannot find file tools/binman/test/u_boot_binman_syms_bad.c
cscope: cannot find file tools/version.h

`find -L` tests properties, but name, and cscope can't cope with symbolic
links (a lot of bugs in upstream were simple closed as kinda invalid).

To work around the problem, exclude symbolic links from the cscope.files.
Note, it's done in two pass to speed up the process (`-exec realpath ...`
approach is not portable and introduces a 3x delay).

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Makefile

index 6fda3268e766cccfcee646d8a0aa01ebda331563..c583e40ed1911668894830d4c22330fb0164ad0e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1808,6 +1808,9 @@ etags:
 cscope:
                $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
                                                cscope.files
+               @find $(TAG_SUBDIRS) -name '*.[chS]' -type l -print | \
+                       grep -xvf - cscope.files > cscope.files.no-symlinks; \
+               mv cscope.files.no-symlinks cscope.files
                cscope -b -q -k
 
 SYSTEM_MAP = \