aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile80
1 files changed, 49 insertions, 31 deletions
diff --git a/Makefile b/Makefile
index bb6ac24..4afd602 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
-# pacredir - redirect pacman requests, assisted by avahi service discovery
+# pacredir - redirect pacman requests, assisted by mDNS Service Discovery
-PREFIX := /usr
-REPRODUCIBLE := 0
+PREFIX := /usr
+SOURCE_DATE_EPOCH ?= $(shell date +%s)
# commands
CC := gcc
@@ -14,10 +14,8 @@ SED := sed
# flags
CFLAGS += -std=c11 -O2 -fPIC -Wall -Werror
-CFLAGS_EXTRA += -lpthread
CFLAGS_EXTRA += $(shell pkg-config --libs --cflags libsystemd)
CFLAGS_EXTRA += $(shell pkg-config --libs --cflags libcurl)
-CFLAGS_EXTRA += $(shell pkg-config --libs --cflags avahi-client)
CFLAGS_EXTRA += $(shell pkg-config --libs --cflags libmicrohttpd)
CFLAGS_EXTRA += $(shell pkg-config --libs --cflags iniparser)
LDFLAGS += -Wl,-z,now -Wl,-z,relro -pie
@@ -28,58 +26,78 @@ ID := $(shell shopt -u extglob && source /etc/os-release && echo $$ID)
# this is just a fallback in case you do not use git but downloaded
# a release tarball...
-VERSION := 0.4.7
+DISTVER := 0.7.6
+VERSION ?= $(shell git describe --long 2>/dev/null || echo $(DISTVER))
-MARKDOWN = $(wildcard *.md)
-HTML = $(MARKDOWN:.md=.html)
+SERVICESIN = $(wildcard */*.service.in)
+SERVICES = $(SERVICESIN:.in=)
+MARKDOWN = $(wildcard *.md)
+HTML = $(MARKDOWN:.md=.html)
-all: pacredir avahi/pacserve.service $(HTML)
+all: pacredir $(SERVICES) $(HTML)
-pacredir: pacredir.c pacredir.h config.h version.h
- $(CC) pacredir.c $(CFLAGS) $(CFLAGS_EXTRA) $(LDFLAGS) -DREPRODUCIBLE=$(REPRODUCIBLE) -DARCH=\"$(ARCH)\" -DID=\"$(ID)\" -o pacredir
+pacredir: pacredir.c pacredir.h config.h favicon.h html.h version.h
+ $(CC) $< $(CFLAGS) $(CFLAGS_EXTRA) $(LDFLAGS) -o $@
-config.h:
- $(CP) config.def.h config.h
+config.h: config.def.h
+ $(CP) $< $@
version.h: $(wildcard .git/HEAD .git/index .git/refs/tags/*) Makefile
- printf "#ifndef VERSION\n#define VERSION \"%s\"\n#endif\n" $(shell git describe --long 2>/dev/null || echo ${VERSION}) > $@
+ printf '#ifndef VERSION_H\n#define VERSION_H\n#define VERSION\t"%s"\n#define ARCH\t"%s"\n#define ID\t"%s"\n#endif\n' "${VERSION}" "$(ARCH)" "$(ID)" > $@
-avahi/pacserve.service: avahi/pacserve.service.in
- $(SED) 's/%ARCH%/$(ARCH)/;s/%ID%/$(ID)/' avahi/pacserve.service.in > avahi/pacserve.service
+favicon.png: logo.svg Makefile
+ resvg --width=32 --height=32 $< -c | oxipng - > $@
+
+favicon.h: favicon.png Makefile
+ printf '#ifndef FAVICON_H\n#define FAVICON_H\nstatic unsigned char favicon[] = {\n' > $@
+ od -t x1 -A n -v < $< | sed 's/\([0-9a-f]\{2\}\)/0x\1,/g' >> $@
+ printf '};\n#define FAVICON_SHA1 "%s"\n#define FAVICON_DATE "%s"\n#endif\n' "$(shell sha1sum $< | cut -d' ' -f1)" "$(shell date --utc --date=@$(SOURCE_DATE_EPOCH) '+%a, %d %b %Y %H:%M:%S GMT')" >> $@
+
+%.service: %.service.in
+ $(SED) 's/%ARCH%/$(ARCH)/; s/%ARCH_BYTES%/$(shell (printf $(ARCH) | wc -c; printf $(ARCH) | od -t d1 -A n) | tr -s " ")/; s/%ID%/$(ID)/; s/%ID_BYTES%/$(shell (printf $(ID) | wc -c; printf $(ID) | od -t d1 -A n) | tr -s " ")/' $< > $@
%.html: %.md Makefile
markdown $< | sed 's/href="\([-[:alnum:]]*\)\.md"/href="\1.html"/g' > $@
install: install-bin install-doc
-install-bin: pacredir avahi/pacserve.service
+install-bin: pacredir systemd/pacserve.service
$(INSTALL) -D -m0755 pacredir $(DESTDIR)$(PREFIX)/bin/pacredir
$(LN) -s darkhttpd $(DESTDIR)$(PREFIX)/bin/pacserve
- $(INSTALL) -D -m0644 pacredir.conf $(DESTDIR)/etc/pacredir.conf
+ $(INSTALL) -D -m0644 etc/pacredir.conf $(DESTDIR)/etc/pacredir.conf
+ $(INSTALL) -D -m0644 etc/pacserve.conf $(DESTDIR)/etc/pacserve.conf
+ $(INSTALL) -D -m0644 etc/01-pacredir-MulticastDNS-yes.conf $(DESTDIR)/etc/systemd/resolved.conf.d/01-pacredir-MulticastDNS-yes.conf
$(INSTALL) -D -m0644 pacman/pacredir $(DESTDIR)/etc/pacman.d/pacredir
- $(INSTALL) -D -m0644 avahi/pacserve.service $(DESTDIR)/etc/avahi/services/pacserve.service
$(INSTALL) -D -m0644 systemd/pacredir.service $(DESTDIR)$(PREFIX)/lib/systemd/system/pacredir.service
$(INSTALL) -D -m0644 systemd/pacserve.service $(DESTDIR)$(PREFIX)/lib/systemd/system/pacserve.service
$(INSTALL) -D -m0644 systemd/sysusers.conf $(DESTDIR)$(PREFIX)/lib/sysusers.d/pacredir.conf
$(INSTALL) -D -m0644 systemd/tmpfiles.conf $(DESTDIR)$(PREFIX)/lib/tmpfiles.d/pacredir.conf
- $(INSTALL) -D -m0644 initcpio/hooks/pacredir $(DESTDIR)$(PREFIX)/lib/initcpio/hooks/pacredir
- $(INSTALL) -D -m0644 initcpio/install/pacredir $(DESTDIR)$(PREFIX)/lib/initcpio/install/pacredir
- $(INSTALL) -D -m0644 dhcpcd/80-pacredir $(DESTDIR)$(PREFIX)/lib/dhcpcd/dhcpcd-hooks/80-pacredir
- $(INSTALL) -D -m0755 networkmanager/80-pacredir $(DESTDIR)$(PREFIX)/lib/NetworkManager/dispatcher.d/80-pacredir
+ $(INSTALL) -D -m0644 desktop/pacredir-status.desktop $(DESTDIR)$(PREFIX)/share/applications/pacredir-status.desktop
+ $(INSTALL) -D -m0644 logo.png $(DESTDIR)$(PREFIX)/share/pixmaps/pacredir.png
+ $(INSTALL) -D -m0644 dispatch/dhcpcd $(DESTDIR)$(PREFIX)/lib/dhcpcd/dhcpcd-hooks/80-pacredir
+ $(INSTALL) -D -m0755 dispatch/networkd $(DESTDIR)$(PREFIX)/lib/networkd-dispatcher/routable.d/80-pacredir
+ $(INSTALL) -D -m0755 dispatch/networkmanager $(DESTDIR)$(PREFIX)/lib/NetworkManager/dispatcher.d/80-pacredir
install-doc: $(HTML)
$(INSTALL) -d -m0755 $(DESTDIR)$(PREFIX)/share/doc/pacredir/
- $(INSTALL) -D -m0644 $(MARKDOWN) $(HTML) -t $(DESTDIR)$(PREFIX)/share/doc/pacredir/
- $(INSTALL) -d -m0755 $(DESTDIR)$(PREFIX)/share/doc/pacredir/FLOW/
- $(INSTALL) -D -m0644 $(wildcard FLOW/*) -t $(DESTDIR)$(PREFIX)/share/doc/pacredir/FLOW/
+ $(INSTALL) -D -m0644 $(MARKDOWN) $(HTML) logo.svg -t $(DESTDIR)$(PREFIX)/share/doc/pacredir/
+ $(INSTALL) -d -m0755 $(DESTDIR)$(PREFIX)/share/doc/pacredir/README.d/
+ $(INSTALL) -D -m0644 $(wildcard README.d/*) -t $(DESTDIR)$(PREFIX)/share/doc/pacredir/README.d/
+ $(INSTALL) -d -m0755 $(DESTDIR)$(PREFIX)/share/doc/pacredir/FLOW.d/
+ $(INSTALL) -D -m0644 $(wildcard FLOW.d/*) -t $(DESTDIR)$(PREFIX)/share/doc/pacredir/FLOW.d/
+
+install-avahi: compat/pacserve-announce.service
+ $(INSTALL) -D -m0644 compat/avahi.conf $(DESTDIR)$(PREFIX)/lib/systemd/system/pacserve.service.d/avahi.conf
+ $(INSTALL) -D -m0644 compat/pacserve-announce.service $(DESTDIR)$(PREFIX)/lib/systemd/system/pacserve-announce.service
+ $(INSTALL) -D -m0644 compat/02-pacredir-avahi-MulticastDNS-resolve.conf $(DESTDIR)/etc/systemd/resolved.conf.d/02-pacredir-avahi-MulticastDNS-resolve.conf
clean:
- $(RM) -f *.o *~ pacredir avahi/pacserve.service $(HTML) version.h
+ $(RM) -f *.o *~ pacredir $(SERVICES) $(HTML) favicon.png favicon.h version.h
distclean:
- $(RM) -f *.o *~ pacredir avahi/pacserve.service $(HTML) version.h config.h
+ $(RM) -f *.o *~ pacredir $(SERVICES) $(HTML) version.h config.h
release:
- git archive --format=tar.xz --prefix=pacredir-$(VERSION)/ $(VERSION) > pacredir-$(VERSION).tar.xz
- gpg --armor --detach-sign --comment pacredir-$(VERSION).tar.xz pacredir-$(VERSION).tar.xz
- git notes --ref=refs/notes/signatures/tar add -C $$(git archive --format=tar --prefix=pacredir-$(VERSION)/ $(VERSION) | gpg --armor --detach-sign --comment pacredir-$(VERSION).tar | git hash-object -w --stdin) $(VERSION)
+ git archive --format=tar.xz --prefix=pacredir-$(DISTVER)/ $(DISTVER) > pacredir-$(DISTVER).tar.xz
+ gpg --armor --detach-sign --comment pacredir-$(DISTVER).tar.xz pacredir-$(DISTVER).tar.xz
+ git notes --ref=refs/notes/signatures/tar add -C $$(git archive --format=tar --prefix=pacredir-$(DISTVER)/ $(DISTVER) | gpg --armor --detach-sign --comment pacredir-$(DISTVER).tar | git hash-object -w --stdin) $(DISTVER)