Files
palladum-lightning/devtools/reduce-includes.sh
Rusty Russell bc44d3c629 devtools/reduce-includes.sh: don't remove our own .h from .c file includes.
Even if we would currently include it indirectly, we must include it directly.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-10-23 06:44:04 +10:30

34 lines
892 B
Bash
Executable File

#! /bin/sh -e
if [ $# -lt 1 ]; then
echo "Usage: $0 <cfilepath>...; removes #includes one at a time and checks compile" >&2
exit 1
fi
CCMD=$(make show-flags | sed -n 's/CC://p')
for file; do
# We have a rule (and a check!) that a .c includes its own .h directly.
OWN_HDR='<'$(echo "$file" | sed -n 's/\.c$/.h/p')'>'
i=1
echo "$file":
while true; do
# Don't eliminate config.h includes!
LINE="$(grep '^#include <' "$file" | grep -v '[<"]config.h[">]' | grep -F -v "$OWN_HDR" | tail -n +$i | head -n1)"
[ -n "$LINE" ] || break
# Make sure even headers end in .c
grep -F -v "$LINE" "$file" > "$file".c
if $CCMD /tmp/out.$$.o "$file".c 2>/dev/null; then
printf "%s" "-$LINE"
mv "$file".c "$file"
else
# shellcheck disable=SC2039,SC3037
printf "."
rm -f "$file".c
i=$((i + 1))
fi
rm -f /tmp/out.$$.o
done
echo
done