-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild-lib.sh
More file actions
executable file
·67 lines (54 loc) · 1.87 KB
/
Copy pathbuild-lib.sh
File metadata and controls
executable file
·67 lines (54 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env bash
# build-lib.sh — Build libqwen_asr.a static library for macOS (Universal Binary)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENDOR_DIR="$SCRIPT_DIR/vendor/qwen-asr"
OUTPUT_DIR="$VENDOR_DIR/lib"
CC=clang
CFLAGS_BASE="-Wall -Wextra -O3 -ffast-math -DUSE_BLAS -DACCELERATE_NEW_LAPACK"
SRCS=(
qwen_asr.c
qwen_asr_kernels.c
qwen_asr_kernels_generic.c
qwen_asr_kernels_neon.c
qwen_asr_kernels_avx.c
qwen_asr_audio.c
qwen_asr_encoder.c
qwen_asr_decoder.c
qwen_asr_tokenizer.c
qwen_asr_safetensors.c
)
build_arch() {
local ARCH=$1
local BUILD_DIR="$VENDOR_DIR/build-$ARCH"
mkdir -p "$BUILD_DIR"
echo " Compiling for $ARCH..."
for src in "${SRCS[@]}"; do
$CC $CFLAGS_BASE -target "${ARCH}-apple-macos14" -c "$VENDOR_DIR/$src" -o "$BUILD_DIR/${src%.c}.o"
done
echo " Archiving libqwen_asr-$ARCH.a..."
ar rcs "$BUILD_DIR/libqwen_asr.a" "$BUILD_DIR"/*.o
}
echo "=== Building libqwen_asr.a (Universal Binary) ==="
build_arch "arm64"
build_arch "x86_64"
mkdir -p "$OUTPUT_DIR"
echo " Creating universal binary..."
lipo -create \
"$VENDOR_DIR/build-arm64/libqwen_asr.a" \
"$VENDOR_DIR/build-x86_64/libqwen_asr.a" \
-output "$OUTPUT_DIR/libqwen_asr.a"
# Copy headers
mkdir -p "$OUTPUT_DIR/../include"
cp "$VENDOR_DIR/qwen_asr.h" "$OUTPUT_DIR/../include/"
cp "$VENDOR_DIR/qwen_asr_audio.h" "$OUTPUT_DIR/../include/"
cp "$VENDOR_DIR/qwen_asr_tokenizer.h" "$OUTPUT_DIR/../include/"
cp "$VENDOR_DIR/qwen_asr_safetensors.h" "$OUTPUT_DIR/../include/"
cp "$VENDOR_DIR/qwen_asr_kernels.h" "$OUTPUT_DIR/../include/"
cp "$VENDOR_DIR/qwen_asr_kernels_impl.h" "$OUTPUT_DIR/../include/"
# Cleanup
rm -rf "$VENDOR_DIR/build-arm64" "$VENDOR_DIR/build-x86_64"
echo ""
echo "Done: $OUTPUT_DIR/libqwen_asr.a"
lipo -info "$OUTPUT_DIR/libqwen_asr.a"
echo "Headers: $OUTPUT_DIR/../include/"