summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile41
1 files changed, 35 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index 9b0bf86..bfa2b30 100644
--- a/Makefile
+++ b/Makefile
@@ -20,18 +20,47 @@ CFLAGS += -fstack-protector
CFLAGS += -O2
CPPFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
-all: freenect-server multipart-replace-http-server
+all: build
.PHONY: all
-freenect-server: util.o -lfreenect -lusb-1.0 -ljpeg
-multipart-replace-http-server: util.o wg.o multipart-replace.o -lpthread
+include config.mk
+
+progs = freenect-server multipart-replace-http-server
+units = freenect-server-http.service freenect-server-http.socket freenect-server.service freenect-server@.socket
+
+build: $(addprefix src/,$(progs)) $(addprefix systemd/,$(units))
+.PHONY: build
+
+src/freenect-server: src/util.o -lfreenect -lusb-1.0 -ljpeg
+src/multipart-replace-http-server: src/util.o src/wg.o src/multipart-replace.o -lpthread
+systemd/freenect-server-http.service: .var.user .var.group .var.bindir
+systemd/freenect-server-http.socket: .var.httpstream
+systemd/freenect-server.service: .var.user .var.group .var.bindir
+systemd/freenect-server@.socket: .var.user .var.group
+
+systemd/%: systemd/%.in
+ sed $(foreach v,$(patsubst .var.%,%,$(filter .var.%,$^)), -e 's|@$v@|$($v)|' ) < $< > $@
+
+.var.%: FORCE
+ @printf '%s' '$($*)' | ./write-ifchanged $@
+
+install: $(addprefix $(DESTDIR)$(bindir)/,$(progs)) $(addprefix $(DESTDIR)$(systemddir)/,$(units))
+
+$(DESTDIR)$(bindir)/%: src/%
+ install -Dm755 $< $@
+
+$(DESTDIR)$(systemddir)/%: systemd/%
+ install -Dm644 $< $@
clean:
- rm -f -- *.o .*.mk freenect-server freenect-server--kinect multipart-replace-http-server
+ rm -f -- src/*.o src/.*.mk
+ rm -f -- src/freenect-server src/multipart-replace-http-server
+ rm -f -- systemd/*.socket systemd/*.service
.PHONY: clean
+.PHONY: FORCE
.DELETE_ON_ERROR:
.SECONDARY:
-CPPFLAGS += -MD -MF ${@:%.o=.%.mk} -MP
--include .*.mk
+CPPFLAGS += -MD -MF $(@D)/$(@F:%.o=.%.mk) -MP
+-include src/.*.mk