Я бы сделал блокировку / разблокировку в той же цели, что и file-maker
:
file.out: file.in
lockfile $@.lock
file-maker < $< > $@; \
status=$$?; \
rm -f $@.lock; \
exit $$status
Выполняет шаги file-maker
и разблокировку в одной и той же оболочке, сохраняя состояние file-maker
, поэтому make
не удастся, если file-maker
не удастся.