prefix = /usr/local bindir = $(prefix)/bin libdir = $(prefix)/lib systemddir = $(libdir)/systemd GOPATH := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) all: build deps = golang.org/x/exp/inotify gopkg.in/yaml.v2 $(foreach d,$(deps),$(eval src/$d: ; GOPATH='$(GOPATH)' go get -d -u $d)) generate: generate-nslcd_proto $(addprefix src/,$(deps)) generate-nslcd_proto: $(MAKE) -C src/nslcd_proto .PHONY: generate-nslcd_proto build: generate GOPATH='$(GOPATH)' go install nshd clean: rm -rf -- pkg bin src/*.*/ $(MAKE) -C src/nslcd_proto clean install = $(addprefix $(DESTDIR),$(bindir)/nshd $(systemddir)/system/nshd.socket $(systemddir)/system/nshd.service) install: $(install) uninstall: rm -f -- $(install) rmdir -p -- $(sort $(dir $(install))) 2>/dev/null || true bin/nshd: build $(DESTDIR)$(bindir)/%: bin/% install -Dm755 $< $@ $(DESTDIR)$(systemddir)/system/%.socket: %.socket install -Dm644 $< $@ $(DESTDIR)$(systemddir)/system/%.service: %.service install -Dm644 $< $@ .PHONY: all generate build clean install uninstall .SECONDARY: