Jangan mendefinisikan fungsi make baru dalam konfigurasi produk/papan, karena dua alasan:
- Jika nanti fungsi tersebut digunakan dalam file
Android.mk
, fungsi tersebut tidak akan lagi ditentukan saat konfigurasi produk dikonversi ke Starlark, dan fileAndroid.mk
mungkin tidak berfungsi sebagaimana mestinya. - Konverter Makefile ke Starlark hanya melihat satu file pada satu waktu, dan definisi fungsi sering kali berada di file yang berbeda dari tempat mereka dipanggil.
Sementara fungsi make sebenarnya hanyalah variabel yang dievaluasi menggunakan fungsi $(call)
bawaan, konverter Make to Starlark akan menganggap variabel apa pun yang ditentukan dengan kata kunci define
adalah definisi fungsi dan menolaknya. Jadi fungsi akan terlihat seperti:
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
Kami menyediakan skrip untuk secara otomatis mengganti beberapa fungsi umum dengan yang ditentukan dalam sistem pembuatan inti Makefiles. Mereka dapat ditemukan di build/bazel/mk2rbc .