mmake: formatting + aarch64 tab-completion helper

o/aarch64/* is turned into o/$mode/* in a way analogous to o//, so
aarch64 systems can use tab complete for alternate modes just like
x86_64 can.
This commit is contained in:
Jōshin 2023-12-18 21:25:50 -05:00
parent 1280797db2
commit 85e4c020a3
No known key found for this signature in database

View file

@ -1,24 +1,22 @@
# Cosmopolitan zsh make helper. # Cosmopolitan zsh make helper.
# Setup (in ~/.zshrc, for instance): # Setup (in ~/.zshrc, for instance):
# fpath+=($COSMO/tool/zsh) # fpath+=($COSMO/tool/zsh)
# autoload -Uz mmake # autoload -Uz mmake
# e.g.: # e.g.:
# mmake tiny ape/ape.elf # mmake tiny ape/ape.elf
local mode local mode
case $1 in case $1 in
(m|MODE)=*) (m|MODE)=*) mode=${1#*=}; shift ;;
mode=${1#*=}; shift ;; aarch64|x86_64|aarch64-(zero|tiny)|x86_64-tiny) ;&
aarch64|x86_64|aarch64-(zero|tiny)|x86_64-tiny) ;& zero|fastbuild|opt|optlinux|rel|asan|dbg|sysv) ;&
zero|fastbuild|opt|optlinux|rel|asan|dbg|sysv) ;& tiny(|linux(|bsd)|sysv|nowin)|nox87|llvm|ansi) ##
tiny(|linux(|bsd)|sysv|nowin)|nox87|llvm|ansi) mode=$1; shift ;;
mode=$1; shift ;; *) mode=${MODE:-${m}} ;;
*)
mode=${MODE:-${m}} ;;
esac esac
[[ -z $mode ]] && { [[ -z $mode ]] && {
local arch=$(uname -m) local arch=$(uname -m)
case $arch in case $arch in
arm64|aarch64) mode=aarch64 ;; arm64|aarch64) mode=aarch64 ;;
esac esac
} }
local -a targs local -a targs
@ -26,17 +24,18 @@ local -a flags
local j local j
while (( $# > 0 )); do while (( $# > 0 )); do
case $1 in case $1 in
-j*) j=$1; shift ;; all|o|bins|check|test|depend|tags|aarch64) ;&
-*|*=*) flags+=($1); shift ;; clean|toolchain|clean_toolchain|o/$mode/*) ##
all|o|bins|check|test|depend|tags|aarch64) ;& targs+=($1); shift ;;
clean|toolchain|clean_toolchain|o/$mode/*) -j*) j=$1; shift ;;
targs+=($1); shift ;; -*|*=*) flags+=($1); shift ;;
o/*) targs+=(o/$mode/${1#*/}); shift ;; o/(|aarch64)/*) targs+=(o/$mode/${1#*/*/}); shift ;;
*) targs+=(o/$mode/$1); shift ;; o/*) targs+=(o/$mode/${1#*/}); shift ;;
*) targs+=(o/$mode/$1); shift ;;
esac esac
done done
[[ -z $j ]] && { [[ -z $j ]] && {
whence nproc >/dev/null 2>&1 || autoload -Uz nproc whence nproc >/dev/null || autoload -Uz nproc
j=-j$(nproc) j=-j$(nproc)
} }
local make local make