summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2015-11-08 00:56:44 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2015-11-08 00:56:44 -0500
commitcbb267f60bb13baa1cac65517f60249b1b5bd436 (patch)
tree9311d18bf2cbee68b657548ce9d4253c24dae62d
parenta011c182c4d4d4876f7399fb28dbb7bf2d557617 (diff)
tidy Makefile
-rw-r--r--proto/Makefile48
-rw-r--r--proto/common.mk55
2 files changed, 68 insertions, 35 deletions
diff --git a/proto/Makefile b/proto/Makefile
index e4730d5..6c15198 100644
--- a/proto/Makefile
+++ b/proto/Makefile
@@ -15,45 +15,23 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
-d := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
+srcdir := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
-generate += $d/server/interface_backend.go
-generate += $d/server/func_handlerequest.go
-generate += $d/server/type_nilbackend.go
-secondary += $d/requests.txt
-
-ifeq (1,$(words $(MAKEFILE_LIST)))
-
-all: generate
-.PHONY: all
-
-generate: $(generate)
-.PHONY: generate
-
-clean:
- rm -f -- $(secondary)
-.PHONY: clean
-maintainer-clean: clean
- rm -f -- $(generate)
-.PHONY: maintainer-clean
-
-.DELETE_ON_ERROR:
-.SECONDARY:
-
-else
-
-# fix these to the current value of `d`
-generate := $(generate)
-secondary := $(secondary)
+generate += $(srcdir)/server/interface_backend.go
+generate += $(srcdir)/server/func_handlerequest.go
+generate += $(srcdir)/server/type_nilbackend.go
+generate_secondary += $(srcdir)/requests.txt
+ifeq (1,$(words $(MAKEFILE_LIST)))
+ include common.mk
endif
-
-$d/requests.txt: $d/nslcd_h.go $d/Makefile
+
+$(srcdir)/requests.txt: $(srcdir)/nslcd_h.go $(srcdir)/Makefile
< $< grep -Eo '\btype Request_([^_ ]+)(_\S+)?' | sed 's/^type Request_//' > $@
%.go: %.go.sh
- ./$^ > $@
+ $(call rel,$^) > $@
-$d/server/interface_backend.go: $d/requests.txt
-$d/server/func_handlerequest.go: $d/requests.txt
-$d/server/type_nilbackend.go: $d/server/interface_backend.go
+$(srcdir)/server/interface_backend.go: $(srcdir)/requests.txt
+$(srcdir)/server/func_handlerequest.go: $(srcdir)/requests.txt
+$(srcdir)/server/type_nilbackend.go: $(srcdir)/server/interface_backend.go
diff --git a/proto/common.mk b/proto/common.mk
new file mode 100644
index 0000000..41f5c79
--- /dev/null
+++ b/proto/common.mk
@@ -0,0 +1,55 @@
+# Copyright © 2015 Luke Shumaker
+# This work is free. You can redistribute it and/or modify it under the
+# terms of the Do What The Fuck You Want To Public License, Version 2,
+# as published by Sam Hocevar. See http://www.wtfpl.net/ for more details.
+
+rel = $(patsubst $(abspath .)/%,./%,$(abspath $1))
+
+all: build
+.PHONY: all
+
+include $(addsuffix /Makefile,$(subdirs))
+
+generate: $(generate)
+.PHONY: generate
+
+configure: generate $(configure)
+.PHONY: configure
+
+build: configure $(build)
+.PHONY: build
+
+install: build $(install)
+.PHONY: install
+
+# un-build
+clean:
+ rm -rf -- $(build) $(build_secondary)
+.PHONY: clean
+
+# un-configure
+distclean: clean
+ rm -rf -- $(configure) $(configure_secondary)
+.PHONY: distclean
+
+# un-generate
+maintainer-clean: distclean
+ rm -rf -- $(generate) $(generate_secondary)
+.PHONY: maintainer-clean
+
+# un-install
+uninstall:
+ rm -f -- $(install)
+ rmdir -p -- $(sort $(dir $(install))) 2>/dev/null || true
+.PHONY: uninstall
+
+
+# Now, this is magic. It stores the values of environment variables,
+# so that if you change them in a way that would cause something to be
+# rebuilt, then Make knows.
+.var.%: FORCE
+ $(Q)printf '%s' '$($*)' > .tmp$@ && { cmp -s .tmp$@ $@ && rm -f -- .tmp$@ || mv -Tf .tmp$@ $@; } || { rm -f -- .tmp$@; false; }
+
+.DELETE_ON_ERROR:
+.SECONDARY:
+.PHONY: FORCE