Ne définissez pas de nouvelles fonctions make dans la configuration produit/carte, pour deux raisons :
- Si la fonction est utilisée ultérieurement dans un fichier
Android.mk
, elle ne sera plus définie lors de la conversion de la configuration du produit en Starlark, et le fichierAndroid.mk
risque de ne pas fonctionner comme prévu. - Le convertisseur Makefile vers Starlark ne regarde qu'un seul fichier à la fois, et les définitions de fonctions se trouvent souvent dans des fichiers différents de ceux où elles sont appelées.
Alors qu'une fonction make n'est en réalité qu'une variable évaluée à l'aide de la fonction intégrée $(call)
, le convertisseur Make to Starlark supposera que toute variable définie avec le mot clé define
est une définition de fonction et la rejettera. Ainsi, une fonction ressemblerait à :
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
Nous fournissons des scripts pour remplacer automatiquement certaines fonctions courantes par celles qui sont définies dans les Makefiles du système de construction principal. Ils peuvent être trouvés sur build/bazel/mk2rbc .