Make 函数

请勿在产品/开发板配置中定义新的 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