Definieren Sie aus zwei Gründen keine neuen Make-Funktionen in der Produkt-/Board-Konfiguration:
- Wenn die Funktion später in einer
Android.mk
Datei verwendet wird, wird sie bei der Konvertierung der Produktkonfiguration in Starlark nicht mehr definiert und dieAndroid.mk
-Datei funktioniert möglicherweise nicht wie vorgesehen. - Der Makefile-zu-Starlark-Konverter betrachtet jeweils nur eine Datei und Funktionsdefinitionen befinden sich häufig in anderen Dateien als dort, wo sie aufgerufen werden.
Während eine Make-Funktion eigentlich nur eine Variable ist, die mithilfe der integrierten Funktion $(call)
ausgewertet wird, geht der Make-zu-Starlark-Konverter davon aus, dass jede mit dem Schlüsselwort define
Variable eine Funktionsdefinition ist, und lehnt sie ab. Eine Funktion würde also so aussehen:
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
Wir stellen Skripte bereit, um einige allgemeine Funktionen automatisch durch solche zu ersetzen, die in den Makefiles des Kern-Build-Systems definiert sind. Sie sind unter build/bazel/mk2rbc zu finden.