最近总算在 Windows 上用插件的方式把 LLVM Pass 集成进了 NDK,中间踩了不少坑。发现全网几乎没人把完整流程写出来,那就由我来补上这块空白吧~
前人的智慧
在查阅一些资料后,笔者发现,想要让我们的NDK也能吃到LLVM Pass一般有两种办法:
◆方案一:在与 NDK 对齐的 llvm-project 上内建集成 Pass,重新编译整套 LLVM/Clang 工具链,并替换 NDK 自带的 clang(内建 Pass 方案)
◆方案二:把 Pass 编译成 LLVM 插件(shared library),让 NDK 自带的 clang 以fpass-plugin=的方式动态加载(插件方案)
显然方法2可插拔性较强,所以我们接下来的讨论致力于方法2的实现。

