Créer des fonctions

Ne définissez pas de nouvelles fonctions make dans la configuration produit/carte, pour deux raisons :

  1. 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 fichier Android.mk risque de ne pas fonctionner comme prévu.
  2. 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 .