Ошибка из-за двойного доллара перед «info», что является ошибкой: строка внутри «define» / «endef» сохраняется как литерал, который раскрывается только в операциях подстановки.
Однако, IMO, лучше переписать ваш код следующим образом:
info_xx=$(if $(DEBUG_XX),$(info XX $1))
Также обратите внимание, что:
$(info def:$(call info_xx, called: some_var:$(some_var)))
напечатает
XX called: some_var:1
def:
Это связано с тем, что расширение аргумента (то есть «вызов», а затем 2-я «информация») выполняется до того, как у 1-й «информации» будет возможность напечатать что-либо.
Вы можете исправить это с помощью info_xx=$(if $(DEBUG_XX),XX $1)
. Но тогда чистый $(call info_xx,called: some_var:$(some_var))
, очевидно, приведет к ошибке.