diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-10-09 13:18:06 +0200 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-10-09 15:59:39 +0200 |
commit | 704b8970f4aab8fbe5638a7d3fab6601c1f17484 (patch) | |
tree | 247e899a62af8e213e434d436ce7c97d2ed60f9c /crawl-ref/source/util/includes.sh | |
parent | e604c285417f3c2fd209d599738a33fc57cdc2b4 (diff) | |
download | crawl-ref-704b8970f4aab8fbe5638a7d3fab6601c1f17484.tar.gz crawl-ref-704b8970f4aab8fbe5638a7d3fab6601c1f17484.zip |
Further improvements to util/includes.sh.
Currently running
$ checkall | cleanup | removelst
strips a bunch of includes while the result still
compiles (Unix console build).
Diffstat (limited to 'crawl-ref/source/util/includes.sh')
-rw-r--r-- | crawl-ref/source/util/includes.sh | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/crawl-ref/source/util/includes.sh b/crawl-ref/source/util/includes.sh index 7eedf1d3c6..f2583ed87a 100644 --- a/crawl-ref/source/util/includes.sh +++ b/crawl-ref/source/util/includes.sh @@ -5,15 +5,31 @@ # $ . util/include.sh # $ checkall - # Tries to list all names defined in the header file $1. # Indented names are assumed to be members that don't need to be checked, # which will fail for indented declarations with #ifdefs. +_wrap_etags() +{ + tmp=$1.etags.h + # clean up const member functions since they confuse etags + sed -e 's/) const\;/)\;/' < $1 > $tmp + etags --declarations $tmp -o - + rm $tmp +} + names () { b=$(basename $1 .h); - etags --declarations -D $1 -o - | grep '^[#a-z]' | grep -v '^'$b'\.h' \ - | tr '\177' '\t' | awk '{ print $(NF-1) }' + { + _wrap_etags $1 \ + | grep '\(^[#a-z]\|^ *[0-9A-Z_][0-9A-Z_][0-9A-Z_]\)' \ + | grep -v '^'$b'\.h' \ + | tr '\177' '\t' | awk '{ print $(NF-1) }' \ + # etags misses namespace declarations + grep namespace $1 | awk '{ print $NF }' + # and some function definitions... + grep '^[a-z]' $1 | grep '(' | cut -d'(' -f 1 | awk '{ print $NF }' + } | sed -e 's/^\**//;s/[^a-zA-Z0-9]$//' | sort | uniq } # lists possible uses in $2 of names defined in $1 @@ -66,8 +82,11 @@ checkall () remove () { b=$(basename $1 .h) - sed -e '/^#include "'$b'\.h"$/d' < $2 > $2.rmincl - mv $2.rmincl $2 + re='^#include "'$b'\.h"$' + if grep "$re" $2 > /dev/null; then + sed -e '/^#include "'$b'\.h"$/d' < $2 > $2.rmincl + mv $2.rmincl $2 + fi } # remove doubtful includes for a list as output by checkall. @@ -78,3 +97,17 @@ removelst () done } +# remove special includes +cleanup () +{ + sed -e '/^quiver.h debug.cc$/d; + /^quiver.h command.cc$/d; + /^quiver.h it_use2.cc$/d; + /^quiver.h output.cc$/d; + /^ghost.h kills.cc$/d; + /^cmd-\(name\|keys\)\.h macro.cc$/d; + /^mon-spll.h mon-util.cc$/d; + /^AppHdr.h /d; + / artefact.cc/d' +} + |