#!/bin/bash
# Script per compilare libsecp256k1 con ottimizzazioni massime

set -e

echo "[+] Compilazione libsecp256k1 ottimizzata per massime performance..."

# Directory di lavoro - locale nella cartella bruteforce
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
WORK_DIR="$SCRIPT_DIR/secp256k1_build"
INSTALL_DIR="$SCRIPT_DIR/secp256k1"

# Cleanup
echo "[+] Pulizia directory precedenti..."
rm -rf "$WORK_DIR"
rm -rf "$INSTALL_DIR"
mkdir -p "$WORK_DIR"
mkdir -p "$INSTALL_DIR"

cd "$WORK_DIR"

# Clone repository ufficiale
echo "[+] Download libsecp256k1 da Bitcoin Core..."
git clone --depth 1 https://github.com/bitcoin-core/secp256k1.git
cd secp256k1

# Configura con ottimizzazioni massime
echo "[+] Configurazione con ottimizzazioni massime..."
./autogen.sh

# FLAGS CRITICI PER PERFORMANCE:
# --with-ecmult-window=15: Window size standard ottimale (24 richiede rigenerazione tabelle)
# --enable-module-recovery: Abilita recovery
# --enable-benchmark: Per testare performance
# --disable-tests: Velocizza la compilazione
# --disable-exhaustive-tests: Velocizza la compilazione

echo "[+] Configurazione..."
CFLAGS="-O3 -march=native -mtune=native -flto -fomit-frame-pointer -funroll-loops" \
./configure \
    --prefix="$INSTALL_DIR" \
    --with-ecmult-window=15 \
    --enable-module-recovery \
    --enable-module-extrakeys \
    --enable-module-schnorrsig \
    --enable-benchmark \
    --disable-tests \
    --disable-exhaustive-tests

echo "[+] Compilazione (usando $(nproc) core)..."
make -j$(nproc)

echo "[+] Installazione in $INSTALL_DIR..."
make install

# Test rapido
echo "[+] Test performance..."
if [ -f "$INSTALL_DIR/bin/bench_ecmult" ]; then
    echo "[+] Running benchmark..."
    "$INSTALL_DIR/bin/bench_ecmult" || true
fi

# Pulizia directory temporanea di build (28MB risparmiati)
echo "[+] Rimozione directory temporanea di build..."
cd "$SCRIPT_DIR"
rm -rf "$WORK_DIR"

echo ""
echo "=========================================="
echo "  libsecp256k1 INSTALLATA"
echo "=========================================="
echo ""
echo "Directory: $INSTALL_DIR"
echo "Libreria: $INSTALL_DIR/lib/libsecp256k1.so"
echo "Headers: $INSTALL_DIR/include/secp256k1.h"
echo ""
echo "Performance atteso: 1.5-2x più veloce della versione di sistema"
echo "=========================================="
