diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 80 |
1 files changed, 49 insertions, 31 deletions
@@ -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) |