make-chicken.sh added by mario-goulart on Fri Jan 19 13:57:16 2024

#! /bin/sh

set -e

PREFIX=${PREFIX:-$HOME/local/chicken-test}
C_COMPILER=${C_COMPILER:-tcc}
DEBUGBUILD=${DEBUGBUILD:-0}
CHICKEN=${CHICKEN:-chicken}

usage() {
    cat <<EOF
Usage: $(basename "$0") <options>

<options>
  --force-boot      Force boot-chicken
  --no-install      Do not install
  --check           Run make check
EOF
}

force_boot=false
installp=true
check=false

while [ $# -gt 0 ]; do
    case "$1" in
        -h|-help|--help)
            usage
            exit 0
            ;;
        --force-boot)
            force_boot=true
            shift
            ;;
        --no-install)
            installp=false
            shift
            ;;
        --check)
            check=true
            shift
            ;;
        *)
            shift
            ;;
    esac
done


bootp=true
[ -x chicken-boot ] && ! "$force_boot" && bootp=false

jobs=$(nproc)

build() {
    set -e
    set -x
    make PREFIX="$PREFIX" C_COMPILER="$C_COMPILER" DEBUGBUILD="$DEBUGBUILD" "$@"
    set +x
}

if "$bootp"; then
    build CHICKEN="$CHICKEN" spotless
    build CHICKEN="$CHICKEN" boot-chicken -j "$jobs"
fi

build CHICKEN=./chicken-boot -j "$jobs"

if "$installp"; then
    rm -rf "$PREFIX"
    build CHICKEN=./chicken-boot install
fi

if "$check"; then
    build CHICKEN=./chicken-boot check
fi