Browse Source

Add timing stats option to build tool

master
cancel 6 years ago
parent
commit
65d8a293dc
  1. 24
      tool

24
tool

@ -21,6 +21,7 @@ Options:
-d Enable compiler safeguards like -fstack-protector.
You should probably do this if you plan to give the
compiled binary to other people.
-s Print statistics about compile time and binary size.
-h or --help Print this message and exit.
EOF
}
@ -38,8 +39,9 @@ compiler_exe="${CC:-cc}"
verbose=0
protections_enabled=0
stats_enabled=0
while getopts c:dhv-: opt_val; do
while getopts c:dhsv-: opt_val; do
case "$opt_val" in
-)
case "$OPTARG" in
@ -54,6 +56,7 @@ while getopts c:dhv-: opt_val; do
c) compiler_exe="$OPTARG";;
h) print_usage; exit 0;;
d) protections_enabled=1;;
s) stats_enabled=1;;
v) verbose=1;;
\?) print_usage >&2; exit 1;;
*) break;;
@ -79,6 +82,18 @@ verbose_echo() {
"$@"
}
TIMEFORMAT='%3R'
last_time=
timed_stats() {
if [[ $stats_enabled = 1 ]]; then
{ last_time=$( { time "$@" 1>&3- 2>&4-; } 2>&1 ); } 3>&1 4>&2
else
"$@"
fi
}
if [[ ($os == bsd) || ($os == unknown) ]]; then
warn "Build script not tested on this platform"
fi
@ -175,9 +190,14 @@ build_target() {
add source_files cli_main.c
try_make_dir "$build_dir"
try_make_dir "$build_dir/$build_subdir"
local out_path=$build_dir/$build_subdir/$out_exe
# bash versions quirk: empty arrays might give error on expansion, use +
# trick to avoid expanding second operand
verbose_echo "$compiler_exe" "${compiler_flags[@]}" -o "$build_dir/$build_subdir/$out_exe" "${source_files[@]}" ${libraries[@]+"${libraries[@]}"}
verbose_echo timed_stats "$compiler_exe" "${compiler_flags[@]}" -o "$out_path" "${source_files[@]}" ${libraries[@]+"${libraries[@]}"}
if [[ $stats_enabled = 1 ]]; then
echo "time: $last_time"
stat -c "size: %s" -- "$out_path"
fi
}
print_info() {

Loading…
Cancel
Save