Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 122977
b: refs/heads/master
c: a680eed
h: refs/heads/master
i:
  122975: 37473c2
v: v3
  • Loading branch information
Sam Ravnborg committed Dec 3, 2008
1 parent b33f7dc commit 15346fc
Show file tree
Hide file tree
Showing 3 changed files with 164 additions and 115 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f6682f915760ccfe57ef1b6cd5ff2d8f2bf8c1d4
refs/heads/master: a680eedc6c621c75695c68198533fc3c98f4053b
117 changes: 3 additions & 114 deletions trunk/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1409,123 +1409,12 @@ endif # KBUILD_EXTMOD

# Generate tags for editors
# ---------------------------------------------------------------------------
quiet_cmd_tags = GEN $@
cmd_tags = $(CONFIG_SHELL) $(srctree)/scripts/tags.sh $@

#We want __srctree to totally vanish out when KBUILD_OUTPUT is not set
#(which is the most common case IMHO) to avoid unneeded clutter in the big tags file.
#Adding $(srctree) adds about 20M on i386 to the size of the output file!

ifeq ($(src),$(obj))
__srctree =
else
__srctree = $(srctree)/
endif

ifeq ($(ALLSOURCE_ARCHS),)
ifeq ($(ARCH),um)
ALLINCLUDE_ARCHS := $(ARCH) $(SUBARCH)
else
ALLINCLUDE_ARCHS := $(SRCARCH)
endif
else
#Allow user to specify only ALLSOURCE_PATHS on the command line, keeping existing behaviour.
ALLINCLUDE_ARCHS := $(ALLSOURCE_ARCHS)
endif

ALLSOURCE_ARCHS := $(SRCARCH)

define find-sources
( for arch in $(ALLSOURCE_ARCHS) ; do \
find $(__srctree)arch/$${arch} $(RCS_FIND_IGNORE) \
-wholename $(__srctree)arch/$${arch}/include/asm -type d -prune \
-o -name $1 -print; \
done ; \
find $(__srctree)security/selinux/include $(RCS_FIND_IGNORE) \
-name $1 -print; \
find $(__srctree)include $(RCS_FIND_IGNORE) \
\( -name config -o -name 'asm-*' \) -prune \
-o -name $1 -print; \
for arch in $(ALLINCLUDE_ARCHS) ; do \
test -e $(__srctree)include/asm-$${arch} && \
find $(__srctree)include/asm-$${arch} $(RCS_FIND_IGNORE) \
-name $1 -print; \
test -e $(__srctree)arch/$${arch}/include/asm && \
find $(__srctree)arch/$${arch}/include/asm $(RCS_FIND_IGNORE) \
-name $1 -print; \
done ; \
find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \
-name $1 -print; \
find $(__srctree) $(RCS_FIND_IGNORE) \
\( -name include -o -name arch -o -name '.tmp_*' \) -prune -o \
-name $1 -print; \
)
endef

define all-sources
$(call find-sources,'*.[chS]')
endef
define all-kconfigs
$(call find-sources,'Kconfig*')
endef
define all-defconfigs
$(call find-sources,'defconfig')
endef

define xtags
if $1 --version 2>&1 | grep -iq exuberant; then \
$(all-sources) | xargs $1 -a \
-I __initdata,__exitdata,__acquires,__releases \
-I __read_mostly,____cacheline_aligned,____cacheline_aligned_in_smp,____cacheline_internodealigned_in_smp \
-I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \
--extra=+f --c-kinds=+px \
--regex-asm='/^ENTRY\(([^)]*)\).*/\1/'; \
$(all-kconfigs) | xargs $1 -a \
--langdef=kconfig \
--language-force=kconfig \
--regex-kconfig='/^[[:blank:]]*(menu|)config[[:blank:]]+([[:alnum:]_]+)/\2/'; \
$(all-defconfigs) | xargs -r $1 -a \
--langdef=dotconfig \
--language-force=dotconfig \
--regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'; \
elif $1 --version 2>&1 | grep -iq emacs; then \
$(all-sources) | xargs $1 -a; \
$(all-kconfigs) | xargs $1 -a \
--regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'; \
$(all-defconfigs) | xargs -r $1 -a \
--regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'; \
else \
$(all-sources) | xargs $1 -a; \
fi
endef

quiet_cmd_cscope-file = FILELST cscope.files
cmd_cscope-file = (echo \-k; echo \-q; $(all-sources)) > cscope.files

quiet_cmd_cscope = MAKE cscope.out
cmd_cscope = cscope -b -f cscope.out

cscope: FORCE
$(call cmd,cscope-file)
$(call cmd,cscope)

quiet_cmd_TAGS = MAKE $@
define cmd_TAGS
rm -f $@; \
$(call xtags,etags)
endef

TAGS: FORCE
$(call cmd,TAGS)

quiet_cmd_tags = MAKE $@
define cmd_tags
rm -f $@; \
$(call xtags,ctags)
endef

tags: FORCE
tags TAGS cscope: FORCE
$(call cmd,tags)


# Scripts to check various things for consistency
# ---------------------------------------------------------------------------

Expand Down
160 changes: 160 additions & 0 deletions trunk/scripts/tags.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
#!/bin/sh
# Generate tags or cscope files
# Usage tags.sh <mode>
#
# mode may be any of: tags, TAGS, cscope
#
# Uses the following environment variables:
# ARCH, SUBARCH, srctree, src, obj

if [ $KBUILD_VERBOSE == 1 ]; then
set -x
fi

# This is a duplicate of RCS_FIND_IGNORE without escaped '()'
ignore="( -name SCCS -o -name BitKeeper -o -name .svn -o \
-name CVS -o -name .pc -o -name .hg -o \
-name .git ) \
-prune -o"

# Do not use full path is we do not use O=.. builds
if [ ${src} == ${obj} ]; then
tree=
else
tree=${srctree}
fi

# find sources in arch/$ARCH
find_arch_sources()
{
find ${tree}arch/$1 $ignore -name $2 -print;
}

# find sources in arch/$1/include
find_arch_include_sources()
{
find ${tree}arch/$1/include $ignore -name $2 -print;
}

# find sources in include/
find_include_sources()
{
find ${tree}include $ignore -name config -prune -o -name $1 -print;
}

# find sources in rest of tree
# we could benefit from a list of dirs to search in here
find_other_sources()
{
find ${tree}* $ignore \
\( -name include -o -name arch -o -name '.tmp_*' \) -prune -o \
-name $1 -print;
}

find_sources()
{
find_arch_sources $1 $2
find_include_sources $2
find_other_sources $2
}

all_sources()
{
find_sources $SRCARCH *.[chS]
if [ ! -z "$archinclude" ]; then
find_arch_include_sources $archinclude *.[chS]
fi
}

all_kconfigs()
{
find_sources $SRCARCH "Kconfig*"
}

all_defconfigs()
{
find_sources $SRCARCH "defconfig"
}

docscope()
{
(echo \-k; echo \-q; all_sources) > cscope.files
cscope -b -f cscope.out
}

exuberant()
{
all_sources > all
all_sources | xargs $1 -a \
-I __initdata,__exitdata,__acquires,__releases \
-I __read_mostly,____cacheline_aligned \
-I ____cacheline_aligned_in_smp \
-I ____cacheline_internodealigned_in_smp \
-I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \
--extra=+f --c-kinds=+px \
--regex-asm='/^ENTRY\(([^)]*)\).*/\1/'

all_kconfigs | xargs $1 -a \
--langdef=kconfig --language-force=kconfig \
--regex-kconfig='/^[[:blank:]]*(menu|)config[[:blank:]]+([[:alnum:]_]+)/\2/'

all_kconfigs | xargs $1 -a \
--langdef=kconfig --language-force=kconfig \
--regex-kconfig='/^[[:blank:]]*(menu|)config[[:blank:]]+([[:alnum:]_]+)/CONFIG_\2/'

all_defconfigs | xargs -r $1 -a \
--langdef=dotconfig --language-force=dotconfig \
--regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'

}

emacs()
{
all_sources | xargs $1 -a

all_kconfigs | xargs $1 -a \
--regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'

all_kconfigs | xargs $1 -a \
--regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/CONFIG_\3/'

all_defconfigs | xargs -r $1 -a \
--regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'
}

xtags()
{
if $1 --version 2>&1 | grep -iq exuberant; then
exuberant $1
elif $1 --version 2>&1 | grep -iq emacs; then
emacs $1
else
all_sources | xargs $1 -a
fi
}


# Support um (which uses SUBARCH)
if [ ${ARCH} == um ]; then
if [ $SUBARCH == i386 ]; then
archinclude=x86
elif [ $SUBARCH == x86_64 ]; then
archinclude=x86
else
archinclude=${SUBARCH}
fi
fi

case "$1" in
"cscope")
docscope
;;

"tags")
xtags ctags
;;

"TAGS")
xtags etags
;;
esac

0 comments on commit 15346fc

Please sign in to comment.