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.

Signed-off-by: Joonsoo Kim <js1...@gmail.com>
---
v2: change bash specific '[[]]' to 'case in' statement.
    use COMPILED_SOURCE env var, instead of abusing SUBARCH
v3: change [ "$COMPILED_SOURCE"="compiled" ] to [ -n $COMPILED_SOURCE" ]

diff --git a/scripts/tags.sh b/scripts/tags.sh
index 8fb18d1..08f06c0 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -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 [ -n "$COMPILED_SOURCE" ]; 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
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to