Non definire nuove funzioni make nella configurazione prodotto/scheda, per due motivi:
- Se la funzione viene successivamente utilizzata in un file
Android.mk
, non verrà più definita quando la configurazione del prodotto viene convertita in Starlark e il fileAndroid.mk
potrebbe non funzionare come previsto. - Il convertitore da Makefile a Starlark esamina solo un file alla volta e le definizioni delle funzioni si trovano spesso in file diversi rispetto a dove vengono richiamate.
Mentre una funzione make è in realtà solo una variabile valutata utilizzando la funzione incorporata $(call)
, il convertitore Make to Starlark assumerà che qualsiasi variabile definita con la parola chiave define
sia una definizione di funzione e la rifiuterà. Quindi una funzione sarebbe simile a:
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
Forniamo script per sostituire automaticamente alcune funzioni comuni con quelle definite nei Makefile del sistema di build principale. Possono essere trovati in build/bazel/mk2rbc .