50 lines
1.1 KiB
Plaintext
50 lines
1.1 KiB
Plaintext
|
#-*-mode:sh;indent-tabs-mode:nil;tab-width:2;coding:utf-8-*-┐
|
||
|
#───vi: set net ft=sh ts=2 sts=2 fenc=utf-8 :vi─────────────┘
|
||
|
#
|
||
|
# OVERVIEW
|
||
|
#
|
||
|
# GNU Assembler Veneer
|
||
|
#
|
||
|
# DESCRIPTION
|
||
|
#
|
||
|
# This script wraps normal assembler commands that're transparently
|
||
|
# passed-through. It adds ephemeral logging and directory creation.
|
||
|
#
|
||
|
# EXAMPLE
|
||
|
#
|
||
|
# TARGET=program build/assemble as -o program program.o
|
||
|
#
|
||
|
# SEE ALSO
|
||
|
#
|
||
|
# https://justine.storage.googleapis.com/perm/as.pdf
|
||
|
|
||
|
if [ ! -d o/third_party/gcc ]; then
|
||
|
third_party/gcc/unbundle.sh
|
||
|
fi
|
||
|
|
||
|
export LC_ALL=C
|
||
|
MKDIR=${MKDIR:-$(command -v mkdir) -p} || exit
|
||
|
|
||
|
if [ "$SILENT" = "0" ]; then
|
||
|
printf "%s\n" "$*" >&2
|
||
|
else
|
||
|
printf "$LOGFMT" "${ACTION:-OBJECTIFY.s}" "$TARGET" >&2
|
||
|
fi
|
||
|
|
||
|
if [ "$TARGET" ]; then
|
||
|
TARGETDIR="${TARGET%/*}"
|
||
|
if [ "$TARGETDIR" != "$TARGET" ] && [ ! -d "$TARGETDIR" ]; then
|
||
|
$MKDIR "$TARGETDIR" || exit 2
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
"$@" && exit
|
||
|
|
||
|
if [ "$TERM" = "dumb" ]; then
|
||
|
f='%s %s\r\n\r\n'
|
||
|
else
|
||
|
f='\033[91m%s\033[39m \033[94m%s\033[39m\r\n\r\n'
|
||
|
fi
|
||
|
printf "$f" "assemble failed:" "$*" >&2
|
||
|
exit 1
|