mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 03:27:39 +00:00
a6baba1b07
The WIN32 CreateProcess() function does not require an .exe or .com suffix in order to spawn an executable. Now that we have Cosmo bash we're no longer so dependent on the cmd.exe prompt.
45 lines
1.4 KiB
Bash
45 lines
1.4 KiB
Bash
# 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
|