Kazeia-engine/dist/build_kazeia_tts.sh

44 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Build libkazeia_tts.so (SHARED, JNI) + test_jni_tts (harness standalone).
set -euo pipefail
HERE="$(cd "$(dirname "$0")" && pwd)"
NDK_ROOT="${ANDROID_NDK_ROOT:-/opt/Kazeia/android-ndk-r27d}"
CXX="$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang++"
JNI="$HERE/jni"
INC="$HERE/include"
LIB="$HERE/lib"
DEC="/opt/Kazeia/kazeia-tts-decoder-ggml"
mkdir -p "$HERE/b-jni"
CFLAGS=( -std=c++17 -O3 -fPIC
-march=armv8.6-a+i8mm+bf16+dotprod+fp16
-Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare
-I"$INC" -I"$DEC/src"
)
SRCS=(
"$JNI/kazeia_tts_jni.cpp"
"$JNI/tts_engine.cpp"
"$JNI/cp_inference.cpp"
"$JNI/sampler.cpp"
"$JNI/kazeia_text_tokenizer.cpp"
)
LIBS=(
"$DEC/build-android-engine/libqwen3tts-decoder.a"
-L"$LIB" -lllama -lggml -lggml-base -lggml-cpu
-Wl,-rpath,'$ORIGIN'
-llog -ldl -lm
)
echo "== building libkazeia_tts.so =="
"$CXX" "${CFLAGS[@]}" -shared "${SRCS[@]}" "${LIBS[@]}" -o "$HERE/b-jni/libkazeia_tts.so"
ls -la "$HERE/b-jni/libkazeia_tts.so"
# Harness JNI sans VM Java : dlopen + JNIEnv mock minimal, vérifie load/synthesize/free.
echo "== building test_jni_tts (harness sans Java VM) =="
"$CXX" "${CFLAGS[@]}" \
"$JNI/test_jni_tts.cpp" \
-Wl,-rpath,'$ORIGIN' \
-ldl -lm \
-o "$HERE/b-jni/test_jni_tts"
ls -la "$HERE/b-jni/test_jni_tts"