दो कारणों से उत्पाद/बोर्ड कॉन्फ़िगरेशन में नए मेक फ़ंक्शंस को परिभाषित न करें:
- यदि फ़ंक्शन को बाद में
Android.mk
फ़ाइल में उपयोग किया जाता है, तो उत्पाद कॉन्फ़िगरेशन को Starlark में परिवर्तित करने पर इसे परिभाषित नहीं किया जाएगा, औरAndroid.mk
फ़ाइल इच्छित के अनुसार काम नहीं कर सकती है। - मेकफ़ाइल टू स्टारलार्क कनवर्टर एक समय में केवल एक फ़ाइल को देखता है, और फ़ंक्शन परिभाषाएँ अक्सर अलग-अलग फ़ाइलों में होती हैं जहां उन्हें लागू किया जाता है।
जबकि मेक फ़ंक्शन वास्तव में केवल एक वेरिएबल है जिसका मूल्यांकन अंतर्निहित $(call)
फ़ंक्शन का उपयोग करके किया जाता है, मेक टू स्टारलार्क कनवर्टर define
किसी भी वेरिएबल को एक फ़ंक्शन परिभाषा मान लेगा और इसे अस्वीकार कर देगा। तो एक फ़ंक्शन इस तरह दिखेगा:
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
हम कुछ सामान्य फ़ंक्शंस को स्वचालित रूप से कोर बिल्ड सिस्टम मेकफ़ाइल्स में परिभाषित फ़ंक्शंस से बदलने के लिए स्क्रिप्ट प्रदान करते हैं। इन्हें बिल्ड/बज़ेल/mk2rbc पर पाया जा सकता है।