mu/tools/treeshake_all

64 lines
1.6 KiB
Plaintext
Raw Normal View History

#!/bin/sh
# Build minimal-size versions of all apps.
# Hacky; only intended for some stats at the moment.
set -e
[ ! -f tools/treeshake ] && {
echo building tools/treeshake
c++ -g -O3 tools/treeshake.cc -o tools/treeshake
}
export OS=${OS:-linux}
2020-02-10 05:12:41 +00:00
process() {
app=$1
2020-07-25 22:35:43 +00:00
tools/treeshake_translate init.$OS [012]*.subx apps/subx-params.subx apps/$app.subx
2020-02-10 05:12:41 +00:00
echo "LoC $(cat apps/$app.subx |wc -l) => $(grep -vh '^\s*$\|^\s*#' apps/$app.subx |tools/treeshake |wc -l)"
echo "LoC including common libraries: $(cat a.in |wc -l) => $(cat a.treeshake |wc -l)"
echo "binary size: $(ls -lh apps/$app |column 5) => $(ls -lh a.elf |column 5)"
}
if [ $# -gt 0 ]
then
process $1
exit 0
fi
echo "== deleting dead code"
2020-07-25 22:35:43 +00:00
for app in factorial crenshaw2-1 crenshaw2-1b hex survey pack dquotes assort tests sigils calls braces
do
echo "- $app"
2020-02-10 05:12:41 +00:00
process $app
mv a.in apps/$app.in
mv a.treeshake apps/$app.treeshake
mv a.elf apps/$app.treeshake.bin
done
echo "== testing treeshaken binaries"
for app in factorial crenshaw2-1 crenshaw2-1b
do
echo $app
2020-07-25 22:35:43 +00:00
tools/test_treeshake_translate init.$OS [01]*.subx apps/$app.subx
diff apps/$app a.elf
done
2020-01-20 01:52:25 +00:00
for app in hex survey pack assort dquotes tests
do
echo $app
2020-07-25 22:35:43 +00:00
tools/test_treeshake_translate init.$OS [01]*.subx apps/subx-params.subx apps/$app.subx
2020-01-20 01:52:25 +00:00
diff apps/$app a.elf
done
for app in sigils calls braces
do
echo $app
2020-07-25 22:35:43 +00:00
tools/test_treeshake_translate init.$OS [012]*.subx apps/subx-params.subx apps/$app.subx
diff apps/$app a.elf
done
2020-02-10 05:03:04 +00:00
app=mu
echo $app
tools/test_treeshake_translate init.$OS [0-9]*.subx apps/$app.subx
diff apps/$app a.elf