製作函數

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