# Serifu 0.1.0 重链接包（LGPL relink kit）

Serifu.app 静态链接了 mpv / FFmpeg 等 LGPL 许可的库（完整清单与许可证见
THIRD-PARTY-NOTICES.txt）。本包依 LGPL-2.1 §6(a) / LGPL-3.0 §4 提供应用侧目标码
与说明，让你可以用**自行修改/重新构建**的这些库重链接出等价的 Serifu 可执行文件。

## 本次构建环境（重要）

- Xcode 26.6 Build version 17F113 
- macOS SDK：26.5
- Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101)
- 目标：macOS 14.0+，架构：arm64（Release，-Os，App Sandbox + Hardened Runtime）

**诚实注明**：objects/ 里是 Swift 编译出的目标文件。Swift 没有稳定的模块 ABI
（跨编译器版本），重链接需使用**同版本 Xcode 工具链**（上列）。用别的版本链接
可能报 swiftmodule 不兼容——这不影响你的 LGPL 权利：也可以按 recipe/ 从源码重建
全部库后，用任意版本工具链重新构建整个 app 工程（构建系统为 XcodeGen + xcodebuild，
工程定义见仓库 app/project.yml）。

## 包内容

- objects/ ： app 侧全部 .o（按 xcodebuild 中间目录结构存放），含
  - Serifu.build/Release/Serifu.build/Objects-normal/<arch>/*.o（app 本体，逐文件）
  - 各 *.build/Release/*.build/Objects-normal（SPM 包装 target）
  - Products/*.o（_MPVKit / _FFmpeg / WhisperShim 的 SPM shim 目标码）
  - *.LinkFileList（链接器实际吃的 .o 清单，见 linker/linkfilelists.txt 索引）
  - *.swiftmodule / *.swiftdoc（同版本工具链重链接时需要）
- linker/link-command.txt ： 本次构建的真实链接命令（逐架构一条；本包对应
  架构：arm64。多架构时分别链接后 lipo -create 合并）
- recipe/ ： mpv/FFmpeg 静态库 xcframework 的构建配方：
  - MPVKit-Package.swift ： 全部依赖 xcframework 的版本钉板（URL + checksum），
    其中 8 个（Libmpv + Libav* + Libsw*）为本地自建，其余为 mpvkit 官方 prebuilt
  - mpvkit-buildscripts.patch ： 对 https://github.com/mpvkit/MPVKit 构建脚本的
    全部修改（禁用 lua；构建环境注入 DEVELOPER_DIR）。基准 commit：5e94d4a
    （2026-07-13 自建时的 main；重建 xcframework 后如换了基准请同步更新这行）。
    打补丁后：
        export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
        make build platform=macos
    产物 dist/release/xcframework/ 即与本包对应的 8 个自建 xcframework
  - populate.sh ： 把重建的 xcframework 铺进 app/vendor/MPVKit/xcframeworks/
  - whisper-*.{sh,md} ： whisper.cpp（MIT，非 LGPL，顺带提供）xcframework 配方
- THIRD-PARTY-NOTICES.txt ： 第三方组件清单、版权声明与许可证全文

## 重链接步骤（替换某个 LGPL 库，例：自己改过的 mpv）

1. 按 recipe/ 重建你修改过的库的 .xcframework（或任何布局兼容的静态库/头文件）；
2. 解开 xcframework 取出 macos-arm64_x86_64 下的静态归档（ar 归档，虽后缀是 .framework）；
3. 以 linker/link-command.txt 为准重链接：把命令里对应库的 .framework 搜索路径
   （-F…/…）指向你的产物，其余输入（objects/ 里的 .o、LinkFileList、系统框架与
   -lbz2 -liconv -lexpat -lresolv -lxml2 -lz -lc++ 等系统库）保持不变；
   多架构产物则逐架构链接后 lipo -create 合并；
4. 把产物替换进 Serifu.app/Contents/MacOS/Serifu。签名会失效——本地运行请
   ad-hoc 重签：codesign --force --deep -s - Serifu.app（沙盒/公证相关权限见
   仓库 app/Serifu.entitlements）。

或者整包重建：用 XcodeGen 从 app/project.yml 生成工程后 xcodebuild
（等价于仓库脚本 scripts/build_app.sh），vendor 库放到 app/vendor/MPVKit/xcframeworks/。

疑问/索取源码与配方最新版：https://serifu.zhixian.io/opensource
