Twórz funkcje

Nie definiuj nowych funkcji make w konfiguracji produktu/płytki z dwóch powodów:

  1. Jeśli funkcja zostanie później użyta w pliku Android.mk , nie będzie już zdefiniowana po przekonwertowaniu konfiguracji produktu na Starlark, a plik Android.mk może nie działać zgodnie z przeznaczeniem.
  2. Konwerter Makefile na Starlark sprawdza tylko jeden plik naraz, a definicje funkcji często znajdują się w innych plikach niż miejsce ich wywołania.

Podczas gdy funkcja make jest tak naprawdę tylko zmienną ocenianą za pomocą wbudowanej funkcji $(call) , konwerter Make to Starlark zakłada, że ​​każda zmienna zdefiniowana za pomocą słowa kluczowego define jest definicją funkcji i odrzuca ją. Zatem funkcja wyglądałaby tak:

define my-func
  Some text, arg1: $(1)
enddef
$(call my-func,foo)

Dostarczamy skrypty do automatycznego zastępowania niektórych typowych funkcji funkcjami zdefiniowanymi w plikach Makefile podstawowego systemu budowania. Można je znaleźć w build/bazel/mk2rbc .