blob: 65950d307f1aabc8ca578306a56cd8453c088023 [file] [log] [blame]
#!/bin/sh
#
# Run the include-what-you-use tool (iwyu) on a file in the webrtc source
# directory.
#
# The script uses a subsequent grep pass to remove #include files from .cc
# that are also in the .h file, or are problematic to include.
#
# To get iwyu on Debian/glinux, do "sudo apt-get install iwyu".
set -e
set -x
FILE=$1
# If you want to exclude files that are in $FILE.h from $FILE.cc, set
# the following variable to "yes". This is a style guide violation.
REMOVE_CC_INCLUDES=no
if [ ! -f $FILE.h ]; then
echo "$FILE.h not found"
exit 1
fi
if [ ! -f $FILE.cc ]; then
echo "$FILE.cc not found"
exit 1
fi
iwyu -Xiwyu --no_fwd_decls -D__X86_64__ -DWEBRTC_POSIX -I . -I third_party/abseil-cpp $FILE.cc |& fix_include || echo "Some files modified"
if [ $REMOVE_CC_INCLUDES == "yes" ]; then
grep ^#include $FILE.h | grep -v -f - $FILE.cc > $FILE.ccnew
grep -v -f tools_webrtc/iwyu/iwyu-filter-list $FILE.ccnew > $FILE.cc
rm $FILE.ccnew
else
grep -v -f tools_webrtc/iwyu/iwyu-filter-list $FILE.cc > $FILE.ccnew
mv $FILE.ccnew $FILE.cc
fi
grep -v -f tools_webrtc/iwyu/iwyu-filter-list $FILE.h > $FILE.hnew
mv $FILE.hnew $FILE.h
echo "Finished. Check diff, compile and git cl format before uploading."