nip/build_arm64_diagnostic.sh

78 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# Voxis Diagnostic Build Protocol (ARM64 + LibreSSL)
set -e # Exit immediately if any command fails
# --- 1. PATH RECONNAISSANCE ---
# Resolve absolute paths to stop relative path madness
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$BASE_DIR" # Ensure we are in core/nip/
VENDOR="$(realpath ../../core/nexus/vendor)"
ZSTD_PATH="$VENDOR/zstd-1.5.5/lib"
LIBRE_PATH="$VENDOR/libressl-3.8.2"
LIBRE_SSL_LIB="$LIBRE_PATH/ssl/.libs"
LIBRE_CRYPTO_LIB="$LIBRE_PATH/crypto/.libs"
LIBRE_TLS_LIB="$LIBRE_PATH/tls/.libs"
OUTPUT_DIR="$BASE_DIR/build/arm64"
TARGET_BIN="$OUTPUT_DIR/nip"
echo "🔎 [DIAGNOSTIC] Path Verification:"
echo " Base: $BASE_DIR"
echo " Vendor: $VENDOR"
echo " Output: $OUTPUT_DIR"
# Check Critical Assets
for lib in "$ZSTD_PATH/libzstd.a" "$LIBRE_SSL_LIB/libssl.a" "$LIBRE_CRYPTO_LIB/libcrypto.a"; do
if [ ! -f "$lib" ]; then
echo "❌ CRITICAL FAILURE: Missing Asset -> $lib"
echo " Did you run 'make' inside the library directories?"
exit 1
fi
done
echo "✅ All Static Libraries Found."
mkdir -p "$OUTPUT_DIR"
# --- 2. THE COMPILATION (FORCE MODE) ---
echo "🔨 [FORGE] Starting Compilation..."
# Put wrapper in PATH to filter x86 flags
export PATH="/tmp/gcc-wrapper-bin:$PATH"
# -f : Force rebuild (ignore cache)
# --listCmd : SHOW ME THE LINKER COMMAND
nim c -f --listCmd \
--skipProjCfg \
--nimcache:/tmp/nip-arm64-cache \
-d:release -d:ssl -d:openssl \
-d:nimcrypto_disable_neon \
-d:nimcrypto_no_asm \
--cpu:arm64 --os:linux \
--cc:gcc \
--gcc.exe:aarch64-linux-gnu-gcc \
--gcc.linkerexe:aarch64-linux-gnu-gcc \
--dynlibOverride:ssl --dynlibOverride:crypto \
--passC:"-I$ZSTD_PATH -I$LIBRE_PATH/include" \
--passL:"-L$ZSTD_PATH -L$LIBRE_SSL_LIB -L$LIBRE_CRYPTO_LIB -L$LIBRE_TLS_LIB" \
--passL:"-static -lssl -lcrypto -ltls -lzstd -lpthread -ldl -lm -lresolv" \
--opt:size \
--mm:orc \
--threads:on \
-o:"$TARGET_BIN" \
src/nip.nim
# --- 3. POST-MORTEM ---
echo "---------------------------------------------------"
if [ -f "$TARGET_BIN" ]; then
echo "✅ SUCCESS: Binary located at:"
ls -l "$TARGET_BIN"
file "$TARGET_BIN"
else
echo "❌ FAILURE: Output file missing at $TARGET_BIN"
echo "🔎 Searching for 'nip' binaries in the tree..."
find . -type f -name nip -exec ls -l {} +
fi