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