Em make, uma instrução include pode incluir caminhos de arquivo com variáveis e ignorará arquivos inexistentes quando prefixado com um sinal de menos. O equivalente de configuração do produto é a função inherit-product-if-exists . O Starlark usa instruções de load com arquivos identificados por string literal e, se um arquivo não existir, o Starlark gera um erro.
Para contornar essa limitação, o conversor Starlark:
- encontra todos os Makefiles que podem corresponder ao caminho que envolve variáveis
- emite instruções de
loadStarlark para todos eles - escolhe o correto em tempo de execução
Observe que o código Starlark gerado pode parecer artificial, pois lista todos os caminhos correspondentes, mesmo que apenas um seja executado.
Recomendamos remover as referências de variáveis nas instruções include / inherit-product .
Quando as referências de variáveis não puderem ser evitadas, tente minimizar a parte variável. Por exemplo:
MY_DIR := path/to/$(TARGET_PRODUCT)
include $(MY_DIR)/file.mk
faz com que o conversor gere uma instrução de load para cada file.mk na árvore de origem, enquanto
include path/to/$(TARGET_PRODUCT)/file.mk
restringe-o a arquivos file.mk em path/to . Obviamente, remover também o uso de TARGET_PRODUCT seria o ideal.