Machen Sie Funktionen

Definieren Sie aus zwei Gründen keine neuen Make-Funktionen in der Produkt-/Board-Konfiguration:

  1. 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 die Android.mk -Datei funktioniert möglicherweise nicht wie vorgesehen.
  2. 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.