Currently running $ checkall | cleanup | removelst strips a bunch of includes while the result still compiles (Unix console build).
MFLOLBCNL6CT72EB3I3QV3E7U6DKOGGCU3DNRF33D7R6GKA5JL6AC
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
# 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'
}