#!/usr/bin/env bash # shellcheck disable=SC2059,SC2016 # replace default echo _echo() { printf "$*\n"; } cleanup() { IS_SIGINT="${IS_SIGINT:-true}" _echo "cleaning up..." rm -fr {luvit,luvi,lit}-build "$IS_SIGINT" && exit 1 } _echo "installing build dependencies..." trap cleanup SIGINT pkg i clang make cmake binutils -y for repo in https://github.com/luvit/{luvit,luvi,lit}; do git clone "$repo" --recursive "${repo##*/}-build" done BUILD_DIR="${PWD:-$(pwd)}" cd luvi-build || exit 1 # build luvi _echo "building luvi..." LUVI_BUILD_TYPE="${1:-regular}" NPROC_FLAG="-j$(nproc)" if [[ "$LUVI_BUILD_TYPE" = 'regular' || "$LUVI_BUILD_TYPE" = 'tiny' ]]; then make "$LUVI_BUILD_TYPE" "$NPROC_FLAG" || exit 1 echo fi make luvi "$NPROC_FLAG" || exit 1 mv build/luvi "$BUILD_DIR" cd "$BUILD_DIR" || exit 1 cd lit-build || exit 1 # build lit _echo "building lit..." "$BUILD_DIR"/luvi . -- make . ./lit "$BUILD_DIR"/luvi || exit 1 mv lit "$BUILD_DIR" cd "$BUILD_DIR" || exit 1 cd luvit-build || exit 1 # build luvit _echo "building luvit..." "$BUILD_DIR"/lit make . ./luvit "$BUILD_DIR"/luvi || exit 1 mv luvit "$BUILD_DIR" cd "$BUILD_DIR" || exit 1 # cleanup IS_SIGINT='false' cleanup _echo "installation successful!"