製作函數

不要在產品/電路板配置中定義新的 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 找到