谷歌为 Android 开发 Soong 模块化组装系统

谷歌正在开发构建系统 ,旨在替换 Android 平台的旧构建脚本,基于 make 实用程序的使用。 宋建议使用简单的陈述式 说明 组装模块的规则, 给定 在扩展名为“.bp”的文件中(蓝图)。 文件格式接近 JSON,并且如果可能的话,重复汇编文件的语法和语义 巴泽尔。 该代码是用 Go 编写的,并根据 Apache 2.0 许可证分发。

Soong构建文件不支持条件语句和分支表达式,而仅描述构建时使用的项目结构、模块和依赖项。 要构建的文件使用掩码进行描述并分组到包中,每个包都是具有关联依赖项的文件的集合。 可以定义变量。 变量和属性是严格类型化的(变量的类型是在第一次赋值时动态选择的,而属性的类型则根据模块的类型静态选择)。 组装逻辑的复杂元素被移动到处理程序, 书面 在 Go 语言中。

宋与一个更大的项目交织在一起 蓝图,其中正在开发一个与 Android 无关的元汇编系统,该系统基于具有声明性模块描述的文件生成汇编脚本 忍者 (make 的替代品),描述需要运行来构建的命令和依赖关系。 Blueprint 没有使用复杂的规则或特定于领域的语言来定义构建逻辑,而是使用 Go 语言中的特定于项目的处理程序(Soong 本质上是一组类似的 Android 处理程序)。

这种方法允许大型异构项目(例如 Android)以高级编程语言的代码实现汇编逻辑的复杂元素,同时保持使用简单的声明性语法对与汇编组织和项目结构相关的模块进行更改的能力。 例如,在 Soong 中,编译器标志的选择是由处理程序完成的 llvm.go,并且特定于硬件架构的设置的应用由处理程序执行 艺术网,但代码文件的链接是在“.bp”文件中进行的。

cc_library {
...
srcs: ["generic.cpp"],
拱门:{
手臂: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

来源: opennet.ru

添加评论