thực hiện chức năng

Không xác định các chức năng tạo mới trong cấu hình sản phẩm/bảng, vì hai lý do:

  1. Nếu chức năng này sau đó được sử dụng trong tệp Android.mk , thì chức năng này sẽ không còn được xác định khi cấu hình sản phẩm được chuyển đổi thành Starlark và tệp Android.mk có thể không hoạt động như dự kiến.
  2. Trình chuyển đổi Makefile sang Starlark chỉ xem xét một tệp tại một thời điểm và các định nghĩa hàm thường nằm trong các tệp khác với nơi chúng được gọi.

Mặc dù hàm tạo thực sự chỉ là một biến được đánh giá bằng cách sử dụng $(call) tích hợp sẵn, nhưng trình chuyển đổi Make thành Starlark sẽ giả sử bất kỳ biến nào được xác định bằng từ khóa define là một định nghĩa hàm và từ chối biến đó. Vì vậy, một chức năng sẽ giống như:

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

Chúng tôi cung cấp các tập lệnh để tự động thay thế một số chức năng phổ biến bằng các chức năng được xác định trong Makefiles của hệ thống xây dựng cốt lõi. Chúng có thể được tìm thấy tại build/bazel/mk2rbc .