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

Loading…
Cancel
Save