Não defina novas funções make na configuração do produto/placa, por dois motivos:
- Se a função for usada posteriormente em um arquivo
Android.mk, ela não será mais definida quando a configuração do produto for convertida para Starlark, e o arquivoAndroid.mkpode não funcionar conforme o esperado. - O conversor de Makefile para Starlark analisa apenas um arquivo por vez, e as definições de função geralmente estão em arquivos diferentes de onde são invocadas.
Enquanto uma função make é realmente apenas uma variável que é avaliada usando a função interna $(call) , o conversor Make to Starlark assumirá que qualquer variável definida com a palavra-chave define é uma definição de função e a rejeitará. Então uma função ficaria assim:
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
Fornecemos scripts para substituir automaticamente algumas funções comuns por aquelas definidas nos Makefiles do sistema de compilação principal. Eles podem ser encontrados em build/bazel/mk2rbc .