#!/bin/bash # build_verify.sh — meow_verify 交叉编译(mipsel 静态,固件 /usr/bin/meow_verify)+ 宿主编译可选。 # # 目标:R3 Pro II / MeowOS(mipsel-linux-muslsf,静态)。纯 POSIX+Linux(无外部依赖,除 vendor # tweetnacl.c/sha256.c 全内编)。公钥编译期固化:meow_signing_pub.h(由 meow_sign keygen 生成)。 # # 警告策略(诚实标注):本项目自有代码为 0 warning; # - meow_verify.c / sha256.c / meow_sig.h → -Wall -Wextra(0 warning) # - tweetnacl.c(第三方 public-domain vendor 单文件)→ 单独对象 + -Wno-sign-compare # -Wno-unterminated-string-initialization -Wno-unused-function(作者原写法:u64/u32 与 int 混比、 # "expand 32-byte k" 16B char 数组塞 17 字节。非本项目代码,局部放宽)。 # - 不启用 gc-sections:meow_verify.c 的 randombytes() stub 满足 crypto_sign_keypair 的引用,整链静态。 # # 用法: # ./build_verify.sh # 交叉编译 → patch_v2/meow_verify/meow_verify(mipsel 静态) # ./build_verify.sh host # 宿主编译 → patch_v2/meow_verify/meow_verify_host set -e cd "$(dirname "$0")" ROOT="$HOME/Project/R3ProII" CC="$ROOT/.tools/zig-mipsel-cc" TNFLAGS="-Os -Wno-sign-compare -Wno-unterminated-string-initialization -Wno-unused-function -static" if [ "$1" = "host" ]; then HOST_CC="${CC_HOST:-cc}" "$HOST_CC" -Os -Wno-sign-compare -Wno-unterminated-string-initialization -Wno-unused-function -c tweetnacl.c -o tweetnacl_v.o "$HOST_CC" -Os -Wall -Wextra -c sha256.c -o sha256_v.o "$HOST_CC" -Os -Wall -Wextra -c meow_verify.c -o meow_verify_v.o "$HOST_CC" meow_verify_v.o sha256_v.o tweetnacl_v.o -o meow_verify_host rm -f tweetnacl_v.o sha256_v.o meow_verify_v.o echo "== meow_verify (host) ==" ls -la meow_verify_host; md5sum meow_verify_host; file meow_verify_host exit 0 fi "$CC" $TNFLAGS -c tweetnacl.c -o tweetnacl_v.o "$CC" -Os -Wall -Wextra -static -c sha256.c -o sha256_v.o "$CC" -Os -Wall -Wextra -static -c meow_verify.c -o meow_verify_v.o "$CC" -Os -static meow_verify_v.o sha256_v.o tweetnacl_v.o -o meow_verify rm -f tweetnacl_v.o sha256_v.o meow_verify_v.o echo "== meow_verify (mipsel static) ==" ls -la meow_verify md5sum meow_verify file meow_verify