#!/usr/bin/env bash
# Build RocksDB db_bench and sst_dump for series experiments.
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROCKSDB_DIR="${SCRIPT_DIR}/rocksdb"
ROCKSDB_TAG="${ROCKSDB_TAG:-v9.4.0}"
BUILD_DIR="${ROCKSDB_DIR}/_bin"

if [[ ! -d "${ROCKSDB_DIR}/.git" ]]; then
  git clone --depth 1 --branch "${ROCKSDB_TAG}" \
    https://github.com/facebook/rocksdb.git "${ROCKSDB_DIR}" 2>/dev/null || {
    rm -rf "${ROCKSDB_DIR}"
    git clone https://github.com/facebook/rocksdb.git "${ROCKSDB_DIR}"
    git -C "${ROCKSDB_DIR}" checkout "${ROCKSDB_TAG}"
  }
fi

# GCC 16+ toolchains: force <cstdint> and relax -Werror (upstream headers).
mkdir -p "${BUILD_DIR}"
cd "${ROCKSDB_DIR}"

export EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS:-} -include cstdint -Wno-error -Wno-error=maybe-uninitialized"
make -j"$(nproc)" db_bench sst_dump PORTABLE=1 USE_RTTI=1 DEBUG_LEVEL=0

install -m 755 db_bench sst_dump "${BUILD_DIR}/"
echo "built: ${BUILD_DIR}/db_bench"
"${BUILD_DIR}/db_bench" --version 2>&1 | head -3 || true
