#!/bin/bash # HAKMEM Main Build Script # Phase 7 (Tiny) + Pool TLS Phase 1 (Mid-Large) optimizations enabled set -e # Exit on error echo "========================================" echo " HAKMEM Memory Allocator - Full Build" echo "========================================" echo "" # Build configuration HEADER_CLASSIDX=1 # Phase 7: Header-based O(1) free AGGRESSIVE_INLINE=1 # Phase 7 Task 2: Inline TLS cache PREWARM_TLS=1 # Phase 7 Task 3: Pre-warm TLS cache POOL_TLS_PHASE1=1 # Pool TLS Phase 1: Lock-free TLS freelist echo "Build Configuration:" echo " - Phase 7 Tiny: Header ClassIdx + Aggressive Inline + Pre-warm" echo " - Pool TLS Phase 1: Lock-free TLS freelist (33M ops/s)" echo " - Optimization: -O3 -march=native -flto" echo "" # Clean previous build echo "[1/4] Cleaning previous build..." make clean > /dev/null 2>&1 || true # Build main benchmarks echo "[2/4] Building benchmarks..." make -j$(nproc) \ HEADER_CLASSIDX=${HEADER_CLASSIDX} \ AGGRESSIVE_INLINE=${AGGRESSIVE_INLINE} \ PREWARM_TLS=${PREWARM_TLS} \ POOL_TLS_PHASE1=${POOL_TLS_PHASE1} \ bench_mid_large_mt_hakmem \ bench_random_mixed_hakmem \ larson_hakmem if [ $? -eq 0 ]; then echo "✅ Build successful!" else echo "❌ Build failed!" exit 1 fi # Build shared library (optional) echo "[3/4] Building shared library..." make -j$(nproc) \ HEADER_CLASSIDX=${HEADER_CLASSIDX} \ AGGRESSIVE_INLINE=${AGGRESSIVE_INLINE} \ PREWARM_TLS=${PREWARM_TLS} \ POOL_TLS_PHASE1=${POOL_TLS_PHASE1} \ shared echo "✅ Shared library built!" # Summary echo "" echo "[4/4] Build Summary" echo "========================================" echo "Built executables:" ls -lh bench_mid_large_mt_hakmem bench_random_mixed_hakmem larson_hakmem 2>/dev/null | awk '{print " - " $9 " (" $5 ")"}' echo "" echo "Shared library:" ls -lh libhakmem.so 2>/dev/null | awk '{print " - " $9 " (" $5 ")"}' echo "" echo "========================================" echo "Ready to test!" echo "" echo "Quick tests:" echo " - Mid-Large: ./bench_mid_large_mt_hakmem" echo " - Tiny: ./bench_random_mixed_hakmem 1000 128 12345" echo " - Larson: ./larson_hakmem 2 8 128 1024 1 12345 4" echo "" echo "For full benchmark suite, run:" echo " ./run_benchmarks.sh" echo ""