אל תגדיר פונקציות יצרן חדשות בתצורת המוצר/לוח, משתי סיבות:
- אם הפונקציה תעשה שימוש מאוחר יותר בקובץ
Android.mk
, היא לא תוגדר עוד כאשר תצורת המוצר תומר ל-Starlark, וייתכן שקובץAndroid.mk
לא יפעל כמתוכנן. - ממיר Makefile ל-Starlark מסתכל רק על קובץ אחד בכל פעם, והגדרות פונקציות נמצאות לרוב בקבצים שונים מהמקום שבו הם מופעלים.
בעוד שפונקציית make היא למעשה רק משתנה שמוערך באמצעות הפונקציה המובנית $(call)
, הממיר Make to Starlark יניח שכל משתנה המוגדר עם מילת המפתח define
הוא הגדרת פונקציה וידחה אותו. אז פונקציה תיראה כך:
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
אנו מספקים סקריפטים להחלפה אוטומטית של כמה פונקציות נפוצות באלה המוגדרות במערכת הבנייה הליבה Makefiles. ניתן למצוא אותם בכתובת build/bazel/mk2rbc .