Может быть, эта идея должна работать:
X!=lsx /
all:
ifeq (${.SHELLSTATUS},0)
@echo OK
else
@exit 1
endif
Например, вы можете создать check:
PHONY-цель, которая нужна каждой (другой) цели.
Объяснение см. here :
После использования функции оболочки или оператора присваивания '! =' ее состояние выхода помещается в переменную .SHELLSTATUS.
X=$(shell ls /)
не работает, но ИМХО должно.