core-lightning/tools/mockup.sh

38 lines
1.2 KiB
Bash
Raw Normal View History

#! /bin/sh
if [ $# -eq 0 ]; then
# With no args, read stdin to scrape compiler output.
2018-04-03 22:23:57 +02:00
# shellcheck disable=SC2046
set -- $(while read -r LINE; do
case "$LINE" in
*undefined\ reference\ to*)
LINE=${LINE#*undefined reference to \`}
2018-04-03 22:23:57 +02:00
echo "${LINE%\'*}"
;;
*)
continue
;;
esac; done | sort -u)
fi
for SYMBOL; do
# If there are multiple declarations, pick first (eg. common/memleak.h
# has notleak_ as a declaration, and then an inline).
2018-04-03 22:23:57 +02:00
WHERE=$(grep -nH "^[a-zA-Z0-9_ (),]* [*]*$SYMBOL(" ./*/*.h | head -n1)
if [ x"$WHERE" != x ]; then
STUB='\n{ fprintf(stderr, "'$SYMBOL' called!\\n"); abort(); }'
else
echo "/* Could not find declaration for $SYMBOL */"
continue
fi
2017-12-10 13:41:10 +01:00
echo "/* Generated stub for $SYMBOL */"
FILE=${WHERE%%:*}
FILE_AND_LINE=${WHERE%:*}
LINE=${FILE_AND_LINE#*:}
2018-04-03 22:23:57 +02:00
END=$(tail -n "+${LINE}" < "$FILE" | grep -n ';$');
NUM=${END%%:*}
2018-04-03 22:23:57 +02:00
tail -n "+${LINE}" < "$FILE" | head -n "$NUM" | sed 's/^extern *//' | sed 's/PRINTF_FMT([^)]*)//' | sed 's/NORETURN//g' | sed 's/,/ UNNEEDED,/g' | sed 's/\([a-z0-9A-Z*_]* [a-z0-9A-Z*_]*\));/\1 UNNEEDED);/' | sed "s/;\$/$STUB/" | sed 's/\s*$//'
done