Make 함수

다음과 같은 두 가지 이유로 제품/보드 구성에서 새 make 함수를 정의하지 않는 것이 좋습니다.

  1. 함수가 나중에 Android.mk 파일에 사용되면 제품 구성이 Starlark로 변환될 때 더 이상 정의되지 않으며 Android.mk 파일은 의도한 대로 작동하지 않을 수 있습니다.
  2. Makefile to Starlark 변환기는 한 번에 파일 하나씩만 작동하며 함수 정의는 호출되는 파일과 다른 파일에 있는 경우가 많습니다.

Make 함수는 실제로 내장된 $(call) 함수를 사용하여 평가되는 변수이지만 Make to Starlark 변환기는 define 키워드로 정의된 모든 변수가 함수 정의라고 가정하며 이를 거절합니다. 함수는 다음과 같이 표시됩니다.

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

Google은 일부 일반적인 함수를 핵심 빌드 시스템 Makefile에 정의된 함수로 자동 대체하는 스크립트를 제공합니다. build/bazel/mk2rbc에서 확인할 수 있습니다.