Expansão recursiva

Não use a expansão recursiva (link em inglês) em makefiles de configuração de produto/placa. A expansão recursiva é o uso de um = bruto em vez de um := para atribuição de variáveis em makefiles. Isso faz com que as variáveis definidas com o valor de outras só avaliem essas outras variáveis após elas próprias serem avaliadas. Essa é uma funcionalidade que não oferece suporte ao Starlark.

A remoção desse código depende muito da maneira como ele é usado. Na maioria das vezes, envolve mover atribuições de variáveis para uma posição anterior à posição em que as variáveis são usadas. Por exemplo, substitua:

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

por:

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

Anexar uma variável com += usa a expansão recursiva se essa variável não tiver sido atribuída com expansão simples antes. Se você não tiver certeza se a variável foi atribuída antes, o += pode ser substituído por MY_VAR := $(strip $(MY_VAR) new_value).

Remover a expansão adiada também pode acelerar a avaliação dos Makefiles mesmo antes da conclusão da conversão para o Starlark. Se as variáveis fossem definidas como o resultado de chamadas de funções caras, uma função só seria chamada uma vez com expansão simples, mas poderia ser chamada muitas vezes com expansão recursiva.