Expansión recursiva

No utilice la expansión recursiva en los archivos MAKE de configuración del producto/placa. La expansión recursiva es el uso de un = sin procesar en lugar de un := para la asignación de variables en archivos MAKE. Hace que las variables que se establecen en el valor de otras variables no evalúen esas otras variables hasta que se evalúen ellas mismas. Esta es una funcionalidad que Starlark no admite.

Eliminarlo depende en gran medida del escenario específico de cómo se usa. La mayoría de las veces implica mover las asignaciones de variables antes de que se usen. Por ejemplo, reemplace:

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.

Anexar a una variable con += usa la expansión recursiva si esa variable no se ha asignado antes con una expansión simple. Si no está seguro de si la variable se asignó antes, el += se puede reemplazar con MY_VAR := $(strip $(MY_VAR) new_value) .

La eliminación de la expansión diferida también puede acelerar la evaluación de los Makefiles incluso antes de que se realice la conversión a Starlark. Si las variables se establecieran en el resultado de costosas llamadas a funciones, la función solo se llamaría una vez con expansión simple, pero potencialmente muchas veces con expansión recursiva.