Nie definiuj nowych funkcji make w konfiguracji produktu/płytki z dwóch powodów:
- Jeśli funkcja zostanie później użyta w pliku
Android.mk
, nie będzie już zdefiniowana po przekonwertowaniu konfiguracji produktu na Starlark, a plikAndroid.mk
może nie działać zgodnie z przeznaczeniem. - 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 .