プロダクトやボードの構成で新しい Make 関数を定義しないようにしてください。その理由は以下の 2 つです。
- その関数を後々
Android.mk
ファイルで使用する場合、プロダクト構成を Starlark に変換する際に関数が定義されず、Android.mk
ファイルが想定どおりに機能しなくなる可能性があります。 - Makefile から Starlark へのコンバータは一度に 1 つのファイルしか参照しませんが、関数の定義は呼び出されたファイルとは別のファイルに格納されているのが一般的です。
Make 関数は組み込みの $(call)
関数を使用して評価される単なる変数ですが、Make から Starlark へのコンバータでは define
キーワードで定義された変数は関数定義と見なされます。したがって、関数は次のようになります。
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
一部の一般的な関数については、コア ビルドシステムの Makefile で定義されている関数に自動的に置き換えるためのスクリプトを提供しています。これらについては、build/bazel/mk2rbc をご覧ください。