about summary refs log tree commit diff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile89
1 files changed, 49 insertions, 40 deletions
diff --git a/Makefile b/Makefile
index 597534e..c7c1ef7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,61 +1,70 @@
-PREFIX = /usr/local
-MANDIR = ${PREFIX}/share/man
-ETCDIR = ${PREFIX}/etc
+PREFIX ?= /usr/local
+BINDIR ?= ${PREFIX}/bin
+MANDIR ?= ${PREFIX}/man
 
 CFLAGS += -std=c11 -Wall -Wextra -Wpedantic
-LDLIBS = -lcrypt -lcrypto -ltls
+LDADD.crypt = -lcrypt
+LDADD.libcurl = -lcurl
+LDADD.libtls = -ltls
+LDADD.sqlite3 = -lsqlite3
 
 BINS = calico pounce
 MANS = ${BINS:=.1}
-RCS  = ${BINS:%=rc.d/%}
-DIRS = ${ETCDIR}/pounce /var/run/calico
 
 -include config.mk
 
-OBJS += bounce.o
-OBJS += client.o
-OBJS += config.o
-OBJS += local.o
-OBJS += ring.o
-OBJS += server.o
-OBJS += state.o
+LDLIBS.calico =
+LDLIBS.pounce = ${LDADD.crypt} ${LDADD.libtls}
+LDLIBS.pounce-notify = ${LDADD.libtls}
+LDLIBS.pounce-palaver = ${LDADD.libcurl} ${LDADD.libtls} ${LDADD.sqlite3}
+
+OBJS.calico += dispatch.o
+
+OBJS.pounce += bounce.o
+OBJS.pounce += client.o
+OBJS.pounce += config.o
+OBJS.pounce += local.o
+OBJS.pounce += ring.o
+OBJS.pounce += server.o
+OBJS.pounce += state.o
+OBJS.pounce += xdg.o
+
+OBJS.pounce-notify = notify.o
+OBJS.pounce-palaver = palaver.o xdg.o
+
+OBJS += ${OBJS.calico}
+OBJS += ${OBJS.pounce}
+OBJS += ${OBJS.pounce-notify}
+OBJS += ${OBJS.pounce-palaver}
 
 dev: tags all
 
 all: ${BINS}
 
-calico: dispatch.o
-	${CC} ${LDFLAGS} dispatch.o ${LDLIBS_calico} -o $@
-
-pounce: ${OBJS}
-	${CC} ${LDFLAGS} ${OBJS} ${LDLIBS} -o $@
+calico: ${OBJS.calico}
+pounce: ${OBJS.pounce}
+pounce-notify: ${OBJS.pounce-notify}
+pounce-palaver: ${OBJS.pounce-palaver}
 
-${OBJS}: bounce.h compat.h
+${BINS}:
+	${CC} ${LDFLAGS} ${OBJS.$@} ${LDLIBS.$@} -o $@
 
-dispatch.o: compat.h
+${OBJS.pounce}: bounce.h
 
-tags: *.c *.h
-	ctags -w *.c *.h
+tags: *.[ch]
+	ctags -w *.[ch]
 
 clean:
-	rm -f tags ${BINS} ${OBJS} dispatch.o
+	rm -f ${BINS} ${OBJS} tags
 
-install: ${BINS} ${MANS} ${RCS}
-	install -d ${PREFIX}/bin ${MANDIR}/man1
-	install ${BINS} ${PREFIX}/bin
-	install -m 644 ${MANS} ${MANDIR}/man1
-	if [ -n '${RCS}' ]; then install -d ${ETCDIR}/rc.d; fi
-	if [ -n '${RCS}' ]; then install ${RCS} ${ETCDIR}/rc.d; fi
-	if [ -n '${DIRS}' ]; then install -d ${DIRS}; fi
+install: ${BINS} ${MANS}
+	install -d ${DESTDIR}${BINDIR} ${DESTDIR}${MANDIR}/man1
+	install ${BINS} ${DESTDIR}${BINDIR}
+	install -m 644 ${MANS} ${DESTDIR}${MANDIR}/man1
 
 uninstall:
-	rm -f ${BINS:%=${PREFIX}/bin/%}
-	rm -f ${MANS:%=${MANDIR}/man1/%}
-	if [ -n '${RCS}' ]; then rm -f ${RCS:%=${ETCDIR}/%}; fi
-	if [ -n '${DIRS}' ]; then rmdir ${DIRS}; fi
-
-localhost.crt:
-	printf "[dn]\nCN=localhost\n[req]\ndistinguished_name=dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth" \
-		| openssl req -x509 -out localhost.crt -keyout localhost.key \
-		-newkey rsa:2048 -nodes -sha256 \
-		-subj '/CN=localhost' -extensions EXT -config /dev/fd/0
+	rm -f ${BINS:%=${DESTDIR}${BINDIR}/%}
+	rm -f ${MANS:%=${DESTDIR}${MANDIR}/man1/%}
+
+localhost.pem: pounce
+	./pounce -g $@