#!/bin/bash # Measures core demo size by building with STRIP_EXTERNAL_LIBS # Binary compiles but does NOT run (all I/O stubbed) set -e echo "=== Demo Size Measurement ===" echo "" # Clean previous build rm -rf build_size # Build with STRIP_EXTERNAL_LIBS echo "Building with STRIP_EXTERNAL_LIBS..." cmake -S . -B build_size -DDEMO_STRIP_EXTERNAL_LIBS=ON cmake --build build_size -j4 # Strip debug symbols strip build_size/demo64k # Measure sizes echo "" echo "=== Size Results ===" echo "" DEMO_SIZE=$(stat -f%z build_size/demo64k 2>/dev/null || stat -c%s build_size/demo64k) DEMO_SIZE_KB=$((DEMO_SIZE / 1024)) echo "Demo code only: ${DEMO_SIZE_KB} KB (${DEMO_SIZE} bytes)" # Compare with normal build if it exists if [ -f build/demo64k ]; then NORMAL_SIZE=$(stat -f%z build/demo64k 2>/dev/null || stat -c%s build/demo64k) NORMAL_SIZE_KB=$((NORMAL_SIZE / 1024)) EXTERNAL_SIZE=$((NORMAL_SIZE - DEMO_SIZE)) EXTERNAL_SIZE_KB=$((EXTERNAL_SIZE / 1024)) echo "" echo "Normal build: ${NORMAL_SIZE_KB} KB (${NORMAL_SIZE} bytes)" echo "External libs: ${EXTERNAL_SIZE_KB} KB (${EXTERNAL_SIZE} bytes)" echo "" echo "Demo is $(echo "scale=1; $DEMO_SIZE * 100 / $NORMAL_SIZE" | bc)% of total size" fi echo "" echo "Note: Size measurement binary does NOT run (all I/O stubbed)"