צור פונקציות

אל תגדיר פונקציות יצרן חדשות בתצורת המוצר/לוח, משתי סיבות:

  1. אם הפונקציה תעשה שימוש מאוחר יותר בקובץ Android.mk , היא לא תוגדר עוד כאשר תצורת המוצר תומר ל-Starlark, וייתכן שקובץ Android.mk לא יפעל כמתוכנן.
  2. ממיר Makefile ל-Starlark מסתכל רק על קובץ אחד בכל פעם, והגדרות פונקציות נמצאות לרוב בקבצים שונים מהמקום שבו הם מופעלים.

בעוד שפונקציית make היא למעשה רק משתנה שמוערך באמצעות הפונקציה המובנית $(call) , הממיר Make to Starlark יניח שכל משתנה המוגדר עם מילת המפתח define הוא הגדרת פונקציה וידחה אותו. אז פונקציה תיראה כך:

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

אנו מספקים סקריפטים להחלפה אוטומטית של כמה פונקציות נפוצות באלה המוגדרות במערכת הבנייה הליבה Makefiles. ניתן למצוא אותם בכתובת build/bazel/mk2rbc .