#!/usr/bin/env bash set -euo pipefail # build_larson_dev.sh — deterministic dev builds for Larson (Tiny) # # Usage: # scripts/build_larson_dev.sh [--route] [--frontgate] [--clean] # # Profiles (defaults): # - NEW_3LAYER_DEFAULT=1 (3-layer front) # - BOX_REFACTOR_DEFAULT=1 (box refactor on) # - USE_LTO=0 OPT_LEVEL=1 (debuggability) # - Adds EXTRA_CFLAGS based on flags: # --route → -DHAKMEM_ROUTE=1 (alloc/free route fingerprint) # --frontgate → -DHAKMEM_TINY_FRONT_GATE_BOX=1 (Front Gate Box) ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd)" cd "$ROOT_DIR" CLEAN=0 ROUTE=0 FRONTGATE=0 for a in "$@"; do case "$a" in --clean) CLEAN=1 ;; --route) ROUTE=1 ;; --frontgate) FRONTGATE=1 ;; *) echo "Unknown arg: $a" >&2; exit 2 ;; esac done [[ $CLEAN -eq 1 ]] && make clean XCF=() [[ $ROUTE -eq 1 ]] && XCF+=(" -DHAKMEM_ROUTE=1") [[ $FRONTGATE -eq 1 ]] && XCF+=(" -DHAKMEM_TINY_FRONT_GATE_BOX=1") echo "[build] NEW_3LAYER_DEFAULT=1 BOX_REFACTOR_DEFAULT=1 USE_LTO=0 OPT_LEVEL=1" [[ $ROUTE -eq 1 ]] && echo "[build] EXTRA_CFLAGS+=-DHAKMEM_ROUTE=1" [[ $FRONTGATE -eq 1 ]] && echo "[build] EXTRA_CFLAGS+=-DHAKMEM_TINY_FRONT_GATE_BOX=1" make NEW_3LAYER_DEFAULT=1 BOX_REFACTOR_DEFAULT=1 USE_LTO=0 OPT_LEVEL=1 \ EXTRA_CFLAGS+="${XCF[*]}" larson_hakmem echo "" echo "✓ Built ./larson_hakmem (dev config)" echo "Quick run (tput mode):" echo " HAKMEM_QUIET=1 HAKMEM_TINY_SUKESUKE=0 HAKMEM_TINY_TRACE_RING=0 \\" echo " HAKMEM_TINY_FREE_TO_SS=0 HAKMEM_TINY_MUST_ADOPT=0 HAKMEM_TINY_REG_SCAN_MAX=64 \\" echo " ./larson_hakmem 10 8 128 1024 1 12345 4" echo "" echo "Quick run (pf/sys mode):" echo " HAKMEM_QUIET=1 HAKMEM_TINY_SUKESUKE=0 HAKMEM_TINY_TRACE_RING=0 \\" echo " HAKMEM_TINY_FREE_TO_SS=1 HAKMEM_TINY_MUST_ADOPT=1 HAKMEM_TINY_SS_ADOPT_COOLDOWN=64 HAKMEM_TINY_REG_SCAN_MAX=32 \\" echo " ./larson_hakmem 10 8 128 1024 1 12345 4"