อย่ากำหนดฟังก์ชัน make ใหม่ในการกำหนดค่าผลิตภัณฑ์/บอร์ด ด้วยเหตุผลสองประการ:
- หากใช้ฟังก์ชันนี้ในไฟล์
Android.mk
ในภายหลัง จะไม่มีการกำหนดฟังก์ชันนั้นอีกต่อไปเมื่อแปลงการกำหนดค่าผลิตภัณฑ์เป็น Starlark และไฟล์Android.mk
อาจใช้งานไม่ได้ตามที่ต้องการ - ตัวแปลง Makefile เป็น Starlark จะดูไฟล์ครั้งละหนึ่งไฟล์เท่านั้น และคำจำกัดความของฟังก์ชันมักจะอยู่ในไฟล์ที่แตกต่างกันมากกว่าที่เรียกใช้
แม้ว่าฟังก์ชัน make เป็นเพียงตัวแปรที่ได้ define
การประเมินโดยใช้ฟังก์ชัน $(call)
ในตัว แต่ตัวแปลง Make to Starlark จะถือว่าตัวแปรใดๆ ดังนั้นฟังก์ชั่นจะมีลักษณะดังนี้:
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
เรามีสคริปต์เพื่อแทนที่ฟังก์ชันทั่วไปบางอย่างโดยอัตโนมัติด้วยฟังก์ชันที่กำหนดไว้ใน Makefiles ของระบบบิลด์หลัก สามารถพบได้ที่ build/bazel/mk2rbc