_ := $(MAKEFILE_LIST) d := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) generate := $(generate) $d/interface_backend.go $d/func_handlerequest.go $d/util/struct_null_backend.go secondary := $(secondary) $d/enumerator-list.mk $d/requests.txt $d/responses.txt $d/*@*.go $d/util/*@*.go ifeq (,$(filter clean,$(MAKECMDGOALS))) -include $d/enumerator-list.mk endif ifeq (1,$(words $_)) all: generate .PHONY: all generate: $(generate) .PHONY: generate clean: rm -f -- $(generate) $(secondary) .PHONY: clean .DELETE_ON_ERROR: .SECONDARY: endif $d/enumerator@%.go: $d/enumerator@T.got < $< sed 's//$*/g' > $@ $d/util/enumerator@%.go: $d/util/enumerator@T.got < $< sed 's//$*/g' > $@ $d/enumerator-list.mk: $d/responses.txt $d/Makefile < $< sed -rn 's|.*|generate += $$d/enumerator@&.go $$d/util/enumerator@&.go|p' > $@ $d/requests.txt: $d/nslcd_h.go $d/Makefile < $< grep -Eo '\btype Request_([^_ ]+)(_\S+)?' | sed 's/^type Request_//' > $@ $d/responses.txt: $d/interface_backend.go $d/Makefile < $< sed -rn 's/.* (\S+)_Enumerator$$/\1/p' | sort -u > $@ %.go: %.go.sh ./$^ > $@ $d/interface_backend.go: $d/requests.txt $d/func_handlerequest.go: $d/requests.txt $d/util/struct_null_backend.go: $d/interface_backend.go