scripts/tags.sh: Support subarch for ARM
PATCH v2 1/2 scripts/tags.sh: Support subarch for ARM
Current tags.sh doesn't handle subarch for ARM.
There are too many subarch on ARM, it is hard that we locate some functions which are defined in every subarch with tags util family. Therefore support subarch for removing this unconvenience.
We can use ARM subarch functionality like below.
"make cscope O=. SRCARCH=arm SUBARCH=xxx"
---
v2: change bash specific '[[]]' to 'case in' statement.
scripts/tags.sh +18 -2
@@ -48,13 +48,14 @@ find_arch_sources() for i in $archincludedir; do prune="$prune -wholename $i -prune -o" done - find ${tree}arch/$1 $ignore $prune -name "$2" -print; + find ${tree}arch/$1 $ignore $subarchprune $prune -name "$2" -print; } # find sources in arch/$1/include find_arch_include_sources() { - include=$(find ${tree}arch/$1/ -name include -type d); + include=$(find ${tree}arch/$1/ $subarchprune \ + -name include -type d -print); if [ -n "$include" ]; then archincludedir="$archincludedir $include" find $include $ignore -name "$2" -print;
@@ -234,6 +235,21 @@ if [ "${ARCH}" = "um" ]; then else archinclude=${SUBARCH} fi +elif [ "${SRCARCH}" = "arm" -a "${SUBARCH}" != "" ]; then + subarchdir=$(find ${tree}arch/$SRCARCH/ -name mach-* -type d -o \ + -name plat-* -type d); + for i in $subarchdir; do + case "$i" in + *"mach-"${SUBARCH}) + ;; + *"plat-"${SUBARCH}) + ;; + *) + subarchprune="$subarchprune \ + -wholename $i -prune -o" + ;; + esac + done fi remove_structs=
Signature · 1 line
1.7.9.5
PATCH v2 2/2 scripts/tags.sh: Support compiled source
We usually have interst in compiled files only, because they are strongly related to individual's work. Current tags.sh can't select compiled files, so support it.
We can use this functionality like below. "make cscope O=. SRCARCH=xxxx COMPILED_SOURCE=compiled"
It must be executed after building the kernel.
---
v2: change bash specific '[[]]' to 'case in' statement.
use COMPILED_SOURCE env var, instead of abusing SUBARCH
scripts/tags.sh +31 -6
@@ -96,6 +96,32 @@ all_sources() find_other_sources '*.[chS]' } +all_compiled_sources() +{ + for i in $(all_sources); do + case "$i" in + *.[cS]) + j=${i/\.[cS]/\.o} + if [ -e $j ]; then + echo $i + fi + ;; + *) + echo $i + ;; + esac + done +} + +all_target_sources() +{ + if [ "$COMPILED_SOURCE" = "compiled" ]; then + all_compiled_sources + else + all_sources + fi +} + all_kconfigs() { for arch in $ALLSOURCE_ARCHS; do
@@ -111,18 +137,18 @@ all_defconfigs() docscope() { - (echo \-k; echo \-q; all_sources) > cscope.files + (echo \-k; echo \-q; all_target_sources) > cscope.files cscope -b -f cscope.out } dogtags() { - all_sources | gtags -i -f - + all_target_sources | gtags -i -f - } exuberant() { - all_sources | xargs $1 -a \ + all_target_sources | xargs $1 -a \ -I __initdata,__exitdata,__acquires,__releases \ -I __read_mostly,____cacheline_aligned \ -I ____cacheline_aligned_in_smp \
@@ -174,7 +200,7 @@ exuberant() emacs() { - all_sources | xargs $1 -a \ + all_target_sources | xargs $1 -a \ --regex='/^(ENTRY|_GLOBAL)(\([^)]*\)).*/\2/' \ --regex='/^SYSCALL_DEFINE[0-9]?(\([^,)]*\).*/sys_\1/' \ --regex='/^TRACE_EVENT(\([^,)]*\).*/trace_\1/' \
@@ -221,11 +247,10 @@ xtags() elif $1 --version 2>&1 | grep -iq emacs; then emacs $1 else - all_sources | xargs $1 -a + all_target_sources | xargs $1 -a fi } - # Support um (which uses SUBARCH) if [ "${ARCH}" = "um" ]; then if [ "$SUBARCH" = "i386" ]; then
Signature · 1 line
1.7.9.5
Re: [PATCH v2 2/2] scripts/tags.sh: Support compiled source
Quoted 7 lines · Joonsoo Kim
We usually have interst in compiled files only, because they are strongly related to individual's work. Current
tags.shcan't select compiled files, so support it.We can use this functionality like below. "make cscope O=. SRCARCH=xxxx COMPILED_SOURCE=compiled"
Quoted 6 lines
It must be executed after building the kernel.
Signed-off-by Joonsoo Kim <[email protected]>---
v2: change bash specific '[[]]' to 'case in' statement.
useCOMPILED_SOURCEenv var, instead of abusing SUBARCH
Looks much better, I have only one minor nitpick:
scripts/tags.sh all_sources() · line 119
Quoted 2 lines
scripts/tags.sh +2
-0+ if [ "$COMPILED_SOURCE" = "compiled" ]; then + all_compiled_sources
Please change it to -n "$COMPILED_SOURCE", so that COMPILED_SOURCE=1 works as well.
Michal
scripts/tags.sh if [ "${ARCH}" = "um" ]; then · line 240
Quoted 3 lines · Joonsoo Kim
scripts/tags.sh +3
-0+elif [ "${SRCARCH}" = "arm" -a "${SUBARCH}" != "" ]; then + subarchdir=$(find ${tree}arch/$SRCARCH/ -name mach-* -type d -o \ + -name plat-* -type d);
Please quote the patterns, otherwise the shell will expand them if you have a file named mach-* or plat-* in the top-level directory.