implementing cava for real time visualization
This commit is contained in:
79
scripts/build-cavacore.sh
Executable file
79
scripts/build-cavacore.sh
Executable file
@@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Build cavacore as a shared library with fftw3 statically linked.
|
||||
#
|
||||
# Prerequisites:
|
||||
# macOS: brew install fftw
|
||||
# Linux: apt install libfftw3-dev (or equivalent)
|
||||
#
|
||||
# Output: src/native/libcavacore.{dylib,so}
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
SRC="$ROOT/cava/cavacore.c"
|
||||
OUT_DIR="$ROOT/src/native"
|
||||
|
||||
mkdir -p "$OUT_DIR"
|
||||
|
||||
OS="$(uname -s)"
|
||||
ARCH="$(uname -m)"
|
||||
|
||||
# Resolve fftw3 paths
|
||||
if [ "$OS" = "Darwin" ]; then
|
||||
if [ "$ARCH" = "arm64" ]; then
|
||||
FFTW_PREFIX="${FFTW_PREFIX:-/opt/homebrew}"
|
||||
else
|
||||
FFTW_PREFIX="${FFTW_PREFIX:-/usr/local}"
|
||||
fi
|
||||
LIB_EXT="dylib"
|
||||
SHARED_FLAG="-dynamiclib"
|
||||
INSTALL_NAME="-install_name @rpath/libcavacore.dylib"
|
||||
else
|
||||
FFTW_PREFIX="${FFTW_PREFIX:-/usr}"
|
||||
LIB_EXT="so"
|
||||
SHARED_FLAG="-shared"
|
||||
INSTALL_NAME=""
|
||||
fi
|
||||
|
||||
FFTW_INCLUDE="$FFTW_PREFIX/include"
|
||||
FFTW_STATIC="$FFTW_PREFIX/lib/libfftw3.a"
|
||||
|
||||
if [ ! -f "$FFTW_STATIC" ]; then
|
||||
echo "Error: libfftw3.a not found at $FFTW_STATIC"
|
||||
echo "Install fftw3: brew install fftw (macOS) or apt install libfftw3-dev (Linux)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$SRC" ]; then
|
||||
echo "Error: cavacore.c not found at $SRC"
|
||||
echo "Ensure the cava submodule is initialized: git submodule update --init"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
OUT="$OUT_DIR/libcavacore.$LIB_EXT"
|
||||
|
||||
echo "Building libcavacore.$LIB_EXT ($OS $ARCH)"
|
||||
echo " Source: $SRC"
|
||||
echo " FFTW3: $FFTW_STATIC"
|
||||
echo " Output: $OUT"
|
||||
|
||||
cc -O2 \
|
||||
$SHARED_FLAG \
|
||||
$INSTALL_NAME \
|
||||
-fPIC \
|
||||
-I"$FFTW_INCLUDE" \
|
||||
-I"$ROOT/cava" \
|
||||
-o "$OUT" \
|
||||
"$SRC" \
|
||||
"$FFTW_STATIC" \
|
||||
-lm
|
||||
|
||||
echo "Built: $OUT"
|
||||
|
||||
# Verify exported symbols
|
||||
if [ "$OS" = "Darwin" ]; then
|
||||
echo ""
|
||||
echo "Exported symbols:"
|
||||
nm -gU "$OUT" | grep "cava_"
|
||||
fi
|
||||
Reference in New Issue
Block a user