制作函数

不要在产品/电路板配置中定义新的 make 函数,原因有两个:

  1. 如果稍后在Android.mk文件中使用该函数,则在产品配置转换为 Starlark 时将不再定义该函数, Android.mk文件可能无法按预期工作。
  2. Makefile 到 Starlark 的转换器一次只查看一个文件,并且函数定义通常位于与调用它们的位置不同的文件中。

虽然 make 函数实际上只是一个使用内置$(call)函数评估的变量,但 Make 到 Starlark 转换器将假定使用define关键字定义的任何变量都是函数定义并拒绝它。所以一个函数看起来像:

define my-func
  Some text, arg1: $(1)
enddef
$(call my-func,foo)

我们提供脚本来自动将一些常用函数替换为核心构建系统 Makefile 中定义的函数。它们可以在build/bazel/mk2rbc 找到