Signed-off-by: Guennadi Liakhovetski <g.liakh...@gmx.de>
---
I am no expert in Kbuild, so, please, review, comment, suggest
improvements, but at least, this does make TAGS usable for me.
diff --git a/scripts/tags.sh b/scripts/tags.sh
index 1a0c44d..b84ce1c 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -32,13 +32,18 @@ fi
# find sources in arch/$ARCH
find_arch_sources()
{
- find ${tree}arch/$1 $ignore -name "$2" -print;
+ for i in $archincludedir; do
+ prune+="-wholename $i -prune -o "
+ done
+ find ${tree}arch/$1 $ignore $prune -name "$2" -print;
}
# find sources in arch/$1/include
find_arch_include_sources()
{
- find ${tree}arch/$1/include $ignore -name "$2" -print;
+ include=$(find ${tree}arch/$1/ -name include -type d);
+ archincludedir+=$include
+ find $include $ignore -name "$2" -print;
}
# find sources in include/
@@ -63,14 +68,15 @@ find_sources()
all_sources()
{
- for arch in $ALLSOURCE_ARCHS
- do
- find_sources $arch '*.[chS]'
- done
+ find_arch_include_sources $ARCH '*.[chS]'
if [ ! -z "$archinclude" ]; then
find_arch_include_sources $archinclude '*.[chS]'
fi
find_include_sources '*.[chS]'
+ for arch in $ALLSOURCE_ARCHS
+ do
+ find_sources $arch '*.[chS]'
+ done
find_other_sources '*.[chS]'
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Hi Guennadi
This is a cool idea, but there is one issue:
> # find sources in arch/$1/include
> find_arch_include_sources()
> {
> - find ${tree}arch/$1/include $ignore -name "$2" -print;
> + include=$(find ${tree}arch/$1/ -name include -type d);
> + archincludedir+=$include
> + find $include $ignore -name "$2" -print;
You need to check if $include isn't empty, which it is on i386 or x86_64
(and on other archs where $ARCH != $SRCARCH). If I do a 'make cscope'
after your change, the second find statement crawls the whole filesystem.
Michal
This is a good idea!
>
>Signed-off-by: Guennadi Liakhovetski <g.liakh...@gmx.de>
Besides what Michal mentioned, this patch looks fine for me too.
Reviewed-by: WANG Cong <xiyou.w...@gmail.com>
Thanks.
--
Live like a child, think like the god.
Signed-off-by: Guennadi Liakhovetski <g.liakh...@gmx.de>
Reviewed-by: WANG Cong <xiyou.w...@gmail.com>
---
v1 -> v2:
1. check if $include variable is not empty - thanks, Michal, for testing
diff --git a/scripts/tags.sh b/scripts/tags.sh
index 1a0c44d..6f0985d 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -32,13 +32,20 @@ fi
# find sources in arch/$ARCH
find_arch_sources()
{
- find ${tree}arch/$1 $ignore -name "$2" -print;
+ for i in $archincludedir; do
+ prune+="-wholename $i -prune -o "
+ done
+ find ${tree}arch/$1 $ignore $prune -name "$2" -print;
}
# find sources in arch/$1/include
find_arch_include_sources()
{
- find ${tree}arch/$1/include $ignore -name "$2" -print;
+ include=$(find ${tree}arch/$1/ -name include -type d);
+ if [ -n "$include" ]; then
+ archincludedir+="$include "
+ find $include $ignore -name "$2" -print;
+ fi
}
# find sources in include/
@@ -63,14 +70,15 @@ find_sources()
all_sources()
{
- for arch in $ALLSOURCE_ARCHS
- do
- find_sources $arch '*.[chS]'
- done
+ find_arch_include_sources ${ARCH} '*.[chS]'
if [ ! -z "$archinclude" ]; then
find_arch_include_sources $archinclude '*.[chS]'
fi
find_include_sources '*.[chS]'
+ for arch in $ALLSOURCE_ARCHS
+ do
+ find_sources $arch '*.[chS]'
+ done
find_other_sources '*.[chS]'
}
Thanks, applied with the following change added (+= is a bash extension):
diff --git a/scripts/tags.sh b/scripts/tags.sh
index 6f0985d..c122041 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -33,7 +33,7 @@ fi
find_arch_sources()
{
for i in $archincludedir; do
- prune+="-wholename $i -prune -o "
+ prune="$prune -wholename $i -prune -o"
done
find ${tree}arch/$1 $ignore $prune -name "$2" -print;
}
@@ -43,7 +43,7 @@ find_arch_include_sources()
{
include=$(find ${tree}arch/$1/ -name include -type d);
if [ -n "$include" ]; then
- archincludedir+="$include "
+ archincludedir="$archincludedir $include"
find $include $ignore -name "$2" -print;
fi
}
Michal