Você precisaria primeiro armazenar o valor em uma variável do shell:
MINOR_VERSION := $(shell v='$(FULL_VERSION)'; echo "$${v%.*}")
(assumindo que $(FULL_VERSION) não contém aspas simples)
Agora, isso chama sh , não bash . ${var%pattern} é um operador padrão sh (vem de ksh ).
Se você quiser usar operadores bash específicos, precisará informar make para chamar bash em vez de sh com
SHELL = bash
Cuidado, porém, que muitos sistemas não têm bash instalado por padrão, o que tornaria seu Makefile não-portátil (mas, alguns sistemas não têm o GNU make e você já está usando alguns GNUisms lá ).