It's common for drivers that share same physical components to also duplicate source code (or at least portions of it). A good example is both drivers/gpu/drm/amdgpu/* and drivers/gpu/drm/radeon/* have a header file called atombios.h. While their contents aren't the same, a lot of their structs have the exact same names which makes navigating through the code base a bit messy as cscope will show up 'references' across drivers which aren't exactly correct. This patch makes it possible for the devs to specify which folders they don't want to include into database as part of the find_other_sources func if a makefile variable IGNOREDIRS is present, otherwise the original behaviour is kept. Example: make ARCH=x86 IGNOREDIRS=drivers/gpu/drm/radeon,tools cscope Signed-off-by: Paulo Miguel Almeida <paulo.miguel.almeida.rodenas@xxxxxxxxx> --- Changelog: - v2: change approach to include everything unless specified by the IGNOREDIRS variable: (Req: Vipin Sharma) - v1: https://lore.kernel.org/lkml/Y5OKDvbGk4Kro6MK@xxxxxxxxxxxxxxx/ --- Documentation/kbuild/kbuild.rst | 7 +++++++ scripts/tags.sh | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Documentation/kbuild/kbuild.rst b/Documentation/kbuild/kbuild.rst index 08f575e6236c..5f99f30e20d8 100644 --- a/Documentation/kbuild/kbuild.rst +++ b/Documentation/kbuild/kbuild.rst @@ -278,6 +278,13 @@ To get all available archs you can also specify all. E.g.:: $ make ALLSOURCE_ARCHS=all tags +IGNOREDIRS +--------------- +For tags/TAGS/cscope targets, you can choose which directories won't +be included in the databases, separated by comma. E.g.: + + $ make IGNOREDIRS=drivers/gpu/drm/radeon,tools cscope + KBUILD_BUILD_TIMESTAMP ---------------------- Setting this to a date string overrides the timestamp used in the diff --git a/scripts/tags.sh b/scripts/tags.sh index e137cf15aae9..554721e9cad2 100755 --- a/scripts/tags.sh +++ b/scripts/tags.sh @@ -59,10 +59,17 @@ find_include_sources() } # find sources in rest of tree -# we could benefit from a list of dirs to search in here find_other_sources() { - find ${tree}* $ignore \ + local loc_ignore=${ignore} + if [ -n "${IGNOREDIRS}" ]; then + exp_ignored_dirs=$(sed 's/,/ /g' <<< ${IGNOREDIRS}) + for i in ${exp_ignored_dirs}; do + loc_ignore="${loc_ignore} ( -path $i ) -prune -o" + done + fi + + find ${tree}* ${loc_ignore} \ \( -path ${tree}include -o -path ${tree}arch -o -name '.tmp_*' \) -prune -o \ -name "$1" -not -type l -print; } -- 2.38.1