45 lines
1.8 KiB
Bash
Executable File
45 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build kazeia_decoder_chraac : sous-process décodeur statique chraac.
|
|
# Link entièrement statique contre les .a chraac (libggml + libqwen3tts-decoder)
|
|
# pour être autonome — aucun .so chraac sur la tablette n'est requis au runtime.
|
|
set -euo pipefail
|
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
NDK="${ANDROID_NDK_ROOT:-/opt/Kazeia/android-ndk-r27d}"
|
|
CXX="$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang++"
|
|
|
|
DEC_BUILD="/opt/Kazeia/kazeia-tts-decoder-ggml/build-android-chraac-fresh"
|
|
DEC_SRC="/opt/Kazeia/kazeia-tts-decoder-ggml/src"
|
|
CHRAAC_GGML_INC="/opt/Kazeia/chraac-llama/ggml/include"
|
|
|
|
[ -f "$DEC_BUILD/libqwen3tts-decoder.a" ] || { echo "decoder.a chraac absent: $DEC_BUILD"; exit 1; }
|
|
|
|
mkdir -p "$HERE/b-jni"
|
|
OUT="$HERE/b-jni/kazeia_decoder_chraac"
|
|
|
|
CFLAGS=( -std=c++17 -O3 -fPIE
|
|
-march=armv8.6-a+i8mm+bf16+dotprod+fp16
|
|
-Wno-unused-parameter -Wno-unused-variable -Wno-sign-compare
|
|
)
|
|
INCS=( -I"$DEC_SRC" -I"$CHRAAC_GGML_INC" )
|
|
|
|
# Important : --start-group / --end-group pour résoudre les références cycliques
|
|
# entre libqwen3tts-decoder et ggml. Ordre: decoder.a en premier (références
|
|
# ggml symbols), puis ggml-cpu, ggml-base, ggml (qui se référencent entre eux).
|
|
LIBS=(
|
|
"$HERE/jni/decoder_subprocess.cpp"
|
|
-Wl,--start-group
|
|
"$DEC_BUILD/libqwen3tts-decoder.a"
|
|
"$DEC_BUILD/ggml-build/src/libggml-cpu.a"
|
|
"$DEC_BUILD/ggml-build/src/libggml-base.a"
|
|
"$DEC_BUILD/ggml-build/src/libggml.a"
|
|
-Wl,--end-group
|
|
-fopenmp -static-openmp
|
|
-llog -ldl -lm
|
|
)
|
|
|
|
echo "== building $OUT =="
|
|
"$CXX" "${CFLAGS[@]}" "${INCS[@]}" "${LIBS[@]}" -o "$OUT"
|
|
ls -la "$OUT"
|
|
echo "== check qu'il n'y a pas de dépendance .so chraac =="
|
|
"$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-readelf" -d "$OUT" | grep -E "NEEDED|RUNPATH"
|