Fonksiyon yap

Ürün/kart yapılandırmasında yeni make işlevleri tanımlamayın, iki nedenden dolayı:

  1. İşlev daha sonra bir Android.mk dosyasında kullanılırsa, ürün yapılandırması Starlark'a dönüştürüldüğünde artık tanımlanmayacaktır ve Android.mk dosyası amaçlandığı gibi çalışmayabilir.
  2. Makefile'den Starlark'a dönüştürücü, aynı anda yalnızca bir dosyaya bakar ve işlev tanımları genellikle çağrıldıkları yerden farklı dosyalarda bulunur.

Bir make işlevi, yalnızca yerleşik $(call) işlevi kullanılarak değerlendirilen bir değişken olsa da, Make to Starlark dönüştürücü, define anahtar sözcüğüyle tanımlanan herhangi bir değişkenin bir işlev tanımı olduğunu varsayar ve reddeder. Yani bir fonksiyon şöyle görünür:

define my-func
  Some text, arg1: $(1)
enddef
$(call my-func,foo)

Bazı ortak işlevleri otomatik olarak temel yapı sistemi Makefiles'de tanımlananlarla değiştirmek için komut dosyaları sağlıyoruz. build/bazel/mk2rbc adresinde bulunabilirler.