Сделать функции

Не определяйте новые функции make в конфигурации продукта/платы по двум причинам:

  1. Если функция позже будет использоваться в файле Android.mk , она больше не будет определена при преобразовании конфигурации продукта в Starlark, и файл Android.mk может работать не так, как предполагалось.
  2. Преобразователь Makefile в Starlark просматривает только один файл за раз, а определения функций часто находятся в разных файлах, а не в тех, где они вызываются.

Хотя функция make на самом деле является просто переменной, которая оценивается с помощью встроенной функции $(call) , преобразователь Make в Starlark будет считать любую переменную, определенную с помощью ключевого слова define , определением функции, и отклонит ее. Таким образом, функция будет выглядеть так:

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

Мы предоставляем сценарии для автоматической замены некоторых общих функций функциями, определенными в файлах Makefile основной системы сборки. Их можно найти по адресу build/bazel/mk2rbc .