재귀 확장

제품/보드의 config makefile에서 재귀 확장을 사용하지 마세요. 재귀 확장은 makefile의 변수 할당에 := 대신 원시 =를 사용하는 것입니다. 이렇게 하면 다른 변수의 값으로 설정된 변수가 자체 실행될 때까지 다른 변수가 실행되지 않습니다. 이는 Starlark에서 지원하지 않는 기능입니다.

이 기능을 삭제하는 방법은 대개 사용 방식의 특정 시나리오에 따라 다릅니다. 대부분 변수 할당은 그것이 사용된 바로 앞 위치로 옮기는 작업이 수반됩니다. 예를 들어 다음 구문을

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

아래와 같이 바꿉니다.

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

+=를 사용하여 변수에 추가된 경우 그 변수가 이전에 단순 확장을 통해 할당되지 않았다면 재귀 확장이 사용됩니다. 변수가 이전에 할당되었는지 확실하지 않으면 +=MY_VAR := $(strip $(MY_VAR) new_value)로 바꾸면 됩니다.

지연된 확장을 삭제하면 Starlark로의 변환이 완료되기도 전에 Makefile의 실행 속도가 빨라질 수도 있습니다. 변수가 값비싼 함수 호출의 결과로 설정되면 함수는 단순 확장으로 한 번만 호출됩니다. 하지만 재귀 확장을 통해 여러 번 호출될 수도 있습니다.