#!/usr/bin/env bash # Top-level installer for the llvm816 project. Installs everything into # ./tools/ so the tree is self-contained and deletable. # # Usage: # ./setup.sh # install everything (no llvm-mos source build) # ./setup.sh --build-llvm # also cmake+ninja build llvm-mos (slow) # ./setup.sh --skip-deps # skip apt packages # ./setup.sh --skip-llvm # skip llvm-mos # ./setup.sh --skip-mame # skip MAME + ROM fetch # ./setup.sh --skip-calypsi # skip Calypsi # ./setup.sh --skip-orca # skip ORCA/C reference # ./setup.sh --verify-only # run verification only set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/scripts/common.sh" doDeps=1 doLlvm=1 doMame=1 doCalypsi=1 doOrca=1 doVerify=1 buildLlvm=0 verifyOnly=0 for arg in "$@"; do case "$arg" in --skip-deps) doDeps=0 ;; --skip-llvm) doLlvm=0 ;; --skip-mame) doMame=0 ;; --skip-calypsi) doCalypsi=0 ;; --skip-orca) doOrca=0 ;; --skip-verify) doVerify=0 ;; --build-llvm) buildLlvm=1 ;; --verify-only) verifyOnly=1 ;; -h|--help) sed -n '2,15p' "$0" exit 0 ;; *) die "unknown flag: $arg" ;; esac done if [ "$verifyOnly" -eq 1 ]; then exec "$SCRIPT_DIR/scripts/verify.sh" fi log "project root: $PROJECT_ROOT" log "tools dir: $TOOLS_DIR" if [ "$doDeps" -eq 1 ]; then log "=== 1/5 system dependencies ===" bash "$SCRIPT_DIR/scripts/installDeps.sh" fi if [ "$doLlvm" -eq 1 ]; then log "=== 2/5 llvm-mos ===" if [ "$buildLlvm" -eq 1 ]; then bash "$SCRIPT_DIR/scripts/installLlvmMos.sh" --build else bash "$SCRIPT_DIR/scripts/installLlvmMos.sh" fi fi if [ "$doMame" -eq 1 ]; then log "=== 3/5 mame + iigs roms ===" bash "$SCRIPT_DIR/scripts/installMame.sh" fi if [ "$doCalypsi" -eq 1 ]; then log "=== 4/5 calypsi ===" bash "$SCRIPT_DIR/scripts/installCalypsi.sh" fi if [ "$doOrca" -eq 1 ]; then log "=== 5/5 orca-c reference ===" bash "$SCRIPT_DIR/scripts/installOrcaC.sh" fi if [ "$doVerify" -eq 1 ]; then log "=== verify ===" bash "$SCRIPT_DIR/scripts/verify.sh" || warn "verification reported failures; see above" fi log "setup complete"