最近交叉编译 webkit 到某闭源定制系统上, 由于 webkit 依赖众多且繁杂
使用的编译工具包括 cmake, autoconf, makefile, meson.
因为 autoconf 这一类的编译工具以 shell script 的方式给出, 所以交叉编译的工具链不提供 linux 环境下的工具链, 就以为着需要借助 cygwin 或者 mingw 来编译 webkit 的依赖
在这个实践里, 路径转换是一大坑, windows 下的 E:/asd 在 cygwin 下变成了 /cygdrive/e/asd/,
为了让 autoconf 能找到例如 -LE:/asd, 传递到 autoconf 的参数就要变成 -L/cygdrive/e/asd
但如此以来传递给 clang.exe 的参数也变成了 -L/cygdrive/e/asd, 而由于 clang.exe 是 windows 下的程序, 路径问题就需要写一些 python脚本来对生成的 makefile 进行正则匹配, 替换等等一系列操作
---
整体跑下来, 编译一个webkit以及所有的依赖到一个完全定制的系统, 大致需要几十个项目的编译以及茫茫多的hack trick, 以下是部分依赖库
关于其他编译系统 meson, cmake, ruby, 等等分别也有不同的坑
远离win