Вы можете сделать это прямо в gmake, без использования стандартной библиотеки GNU Make:
lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
VAR = MixedCaseText
LOWER_VAR = $(call lc,$(VAR))
all:
@echo $(VAR)
@echo $(LOWER_VAR)
Это выглядит немного неуклюже, но это делает работу.
Если вы используете вариант $ (shell), пожалуйста, используйте :=
вместо =
, как в LOWER_VAR := $(shell echo $VAR | tr A-Z a-z)
. Таким образом, вы вызываете оболочку только один раз, когда переменная объявлена, а не каждый раз, когда на нее ссылаются!
Надеюсь, это поможет.