Espansione ricorsiva

Non utilizzare l'espansione ricorsiva nei makefile di configurazione del prodotto/scheda. L'espansione ricorsiva è l'uso di un raw = invece di un := per l'assegnazione di variabili nei makefile. Fa sì che le variabili che sono impostate sul valore di altre variabili non valutino quelle altre variabili finché non vengono valutate esse stesse. Questa è una funzionalità che Starlark non supporta.

La sua rimozione dipende in gran parte dallo scenario specifico di come viene utilizzato. La maggior parte delle volte comporta lo spostamento di assegnazioni di variabili prima di dove vengono utilizzate. Ad esempio, sostituisci:

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.

L'aggiunta a una variabile con += utilizza l'espansione ricorsiva se quella variabile non è stata assegnata prima con un'espansione semplice. Se non sei sicuro che la variabile sia stata assegnata in precedenza, il += può essere sostituito con MY_VAR := $(strip $(MY_VAR) new_value) .

La rimozione dell'espansione differita può anche velocizzare la valutazione dei Makefile anche prima che la conversione in Starlark sia completata. Se le variabili fossero impostate sul risultato di costose chiamate di funzione, la funzione verrebbe chiamata solo una volta con espansione semplice ma potenzialmente molte volte con espansione ricorsiva.