Expansión recursiva

No uses la expansión recursiva en los archivos makefile de configuración del producto o la placa. La expansión recursiva consiste en el uso de un símbolo = sin procesar en lugar de un := para la asignación de variables en archivos makefile. Esto hace que las variables configuradas con el valor de otras no evalúen esas últimas hasta que se evalúen. Esta es una funcionalidad que no admite Starlark.

Quitarla depende en gran medida de la situación específica de su uso. La mayoría de las veces, implica mover las asignaciones de variables a un lugar previo al de su uso. Por ejemplo, reemplaza:

MY_VAR_2 = foo
# Some stuff in between...
MY_VAR = $(MY_VAR_2)
MY_VAR_2 = bar
# $(MY_VAR) is bar here.

con:

MY_VAR_2 := foo
# Some stuff in between...
MY_VAR_2 := bar
MY_VAR := $(MY_VAR_2)
# $(MY_VAR) is bar here.

Agregar datos a una variable con += usa la expansión recursiva en caso de que no se haya realizado una asignación a esa variable mediante la expansión simple. Si no estás seguro de si se realizó esa asignación previa, el símbolo += se puede reemplazar con MY_VAR := $(strip $(MY_VAR) new_value).

Quitar la expansión diferida también puede acelerar la evaluación de los archivos makefile, incluso antes de que se realice la conversión a Starlark. Si las variables se configuraran como resultado de llamadas costosas a funciones, la función solo se llamaría una vez con una expansión simple, pero posiblemente muchas veces con una expansión recursiva.