# Distribution Makefile for blockdomains

# Generated files
SBINFILES = blockdomains
BINFILES  = blockdomainsctl
MANFILES  = blockdomains.5 blockdomains.8 blockdomainsctl.8
CFGDIRS   = blocked/ acl/

default: $(SBINFILES) $(MANFILES)

.PHONY: install clean

# Building targets

$(MANFILES): %: doc/%.adoc
	asciidoctor -bmanpage -o $@ $< 

README.html: README.adoc
	asciidoctor -bhtml $<

blockdomains: CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS)
blockdomains: CFLAGS = $(shell dpkg-buildflags --get CFLAGS)
blockdomains: LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS)
blockdomains: CFLAGS += -Wall
blockdomains: src/blockdomains.c src/cache.c src/database.c
	$(LINK.c) -o $@ $^ -lnetfilter_queue

# Installation

SBINDIR = $(DESTDIR)/usr/sbin
BINDIR  = $(DESTDIR)/usr/bin
CFGTOP  = $(DESTDIR)/etc/blockdomains
MAN5DIR = $(DESTDIR)/usr/share/man/man5
MAN8DIR = $(DESTDIR)/usr/share/man/man8
SYSVINIT  = $(DESTDIR)/etc/init.d/blockdomains
SYSTEMDINIT = $(DESTDIR)/usr/lib/systemd/system/blockdomains.service

install: $(addprefix $(SBINDIR)/,$(SBINFILES))
install: $(addprefix $(BINDIR)/,$(BINFILES))
install: $(addprefix $(MAN5DIR)/,$(filter %.5,$(MANFILES)))
install: $(addprefix $(MAN8DIR)/,$(filter %.8,$(MANFILES)))
install: $(addprefix $(CFGTOP)/,$(CFGDIRS))
install: $(SYSVINIT) $(SYSTEMDINIT)

$(SYSVINIT): init/blockdomains
	install -D $< $@

$(SYSTEMDINIT): init/blockdomains.service
	install -m 644 -D $< $@

$(CFGTOP)/%/:
	mkdir -p $@

$(SBINDIR)/%: %
	install -D $< $@
$(BINDIR)/%: %
	install -D $< $@
$(MAN5DIR)/%: %
	install -m 644 -D $< $@
$(MAN8DIR)/%: %
	install -m 644 -D $< $@

# Cleaning up

clean:
	rm -f $(SBINFILES) $(MANFILES)
