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.mk
pode 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 .