#!/bin/bash # build_ncm.sh — 构建 dev.player.ncm(网易云 App,SDK framework=1):链 meow_ui.a + 核心库 + minimp3 + dr_flac + mbedtls。 # 静态 MIPS32r2 (musl sf)。自有代码(app/ + core/)+ core 支撑 vendor 编译;vendor/minimp3/dr_flac/qrcodegen/jsmn 豁免告警。 # 仅改本 App 目录;编译期不改 SDK(patch_v2/sdk/)、不动 meow_launcherd/。mipsel -Wall -Wextra 0 warning。 set -e cd "$(dirname "$0")" ROOT="$HOME/Project/R3ProII" CC="$ROOT/.tools/zig-mipsel-cc" SYSROOT="$ROOT/.tools/mipsel-linux-muslsf-cross/mipsel-linux-muslsf" OUT="$PWD/out" mkdir -p "$OUT/app-mipsel" INC="-Icore -I../sdk -I../meow_launcherd \ -Ivendor/mbedtls/include -Ivendor/jsmn -Ivendor/qrcodegen/c -Ivendor/minimp3 -Ivendor/dr_flac" STRICT="-Wall -Wextra -Os -DJSMN_HEADER" CORE="core/ncm_common.c core/ncm_json.c core/ncm_store.c core/ncm_http.c \ core/ncm_crypto.c core/ncm_req.c core/ncm_login.c core/ncm_api.c \ core/ncm_cache.c core/ncm_ctx.c core/ncm_apicache.c" APP="app/app.c app/ui/login.c app/ui/home.c app/ui/playlist.c app/ui/player.c \ app/ui/settings.c app/ui/search.c app/ui/ncm_colors.c app/ui/chrome.c \ app/logic/appstate.c app/logic/lyric.c app/logic/songmeta.c \ app/logic/cover.c app/logic/account.c app/play/player_manager.c app/play/audio_out.c \ app/play/ipc_media.c app/play/decoder.c app/play/stream_src.c app/play/minimp3_impl.c \ app/play/mem_watch.c" echo "==> app+core (strict)" for f in $APP $CORE; do b=$(basename "$f" .c) $CC -static -c $STRICT $INC "$f" -o "$OUT/app-mipsel/$b.o" done echo "==> vendor impl (warn-exempt)" $CC -static -c -Os -I../meow_launcherd -Ivendor/minimp3 app/play/minimp3_impl.c -o "$OUT/app-mipsel/minimp3_impl.o" $CC -static -c -Os -Ivendor/dr_flac app/play/dr_flac_impl.c -o "$OUT/app-mipsel/dr_flac_impl.o" $CC -static -c -Os -Ivendor/jsmn core/jsmn_impl.c -o "$OUT/app-mipsel/jsmn_impl.o" $CC -static -c -Os -Ivendor/qrcodegen/c vendor/qrcodegen/c/qrcodegen.c -o "$OUT/app-mipsel/qrcodegen.o" echo "==> link" MIPS_LIBS="$OUT/mbedtls/mipsel/libmbedtls.a $OUT/mbedtls/mipsel/libmbedx509.a $OUT/mbedtls/mipsel/libmbedcrypto.a" $CC -Os -static -Wl,--gc-sections -o ncm \ $OUT/app-mipsel/*.o \ ../sdk/meow_ui.a "$SYSROOT/lib/libz.a" \ $MIPS_LIBS -lpthread -lm ls -la ncm file ncm echo echo "== size ==" size ncm echo "(own code -Wall -Wextra: 0 warning enforced above; vendor exempt)"