summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--Makefile61
-rw-r--r--README.75
-rwxr-xr-xconfigure24
-rw-r--r--extra/notify/Makefile12
-rwxr-xr-xextra/notify/configure20
-rw-r--r--extra/palaver/Makefile14
-rwxr-xr-xextra/palaver/configure20
8 files changed, 83 insertions, 76 deletions
diff --git a/.gitignore b/.gitignore
index c66cc95..882cf40 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,6 @@
 *.o
 calico
 config.mk
-localhost.crt
-localhost.key
+localhost.pem
 pounce
 tags
diff --git a/Makefile b/Makefile
index 75b020d..39324d8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,53 +1,60 @@
 PREFIX ?= /usr/local
-MANDIR ?= ${PREFIX}/share/man
+BINDIR ?= ${PREFIX}/bin
+MANDIR ?= ${PREFIX}/man
 
 CFLAGS += -std=c11 -Wall -Wextra -Wpedantic
-LDLIBS = -lcrypt -ltls
+LDADD.crypt = -lcrypt
+LDADD.libtls = -ltls
 
 BINS = calico pounce
 MANS = ${BINS:=.1}
 
 -include config.mk
 
-OBJS += bounce.o
-OBJS += cert.o
-OBJS += client.o
-OBJS += config.o
-OBJS += local.o
-OBJS += ring.o
-OBJS += server.o
-OBJS += state.o
-OBJS += xdg.o
+LDLIBS.calico =
+LDLIBS.pounce = ${LDADD.crypt} ${LDADD.libtls}
+
+OBJS.calico += dispatch.o
+
+OBJS.pounce += bounce.o
+OBJS.pounce += cert.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 = ${OBJS.calico} ${OBJS.pounce}
 
 dev: tags all
 
 all: ${BINS}
 
-calico: dispatch.o
-	${CC} ${LDFLAGS} dispatch.o -o $@
+calico: ${OBJS.calico}
+
+pounce: ${OBJS.pounce}
 
-pounce: ${OBJS}
-	${CC} ${LDFLAGS} ${OBJS} ${LDLIBS} -o $@
+${BINS}:
+	${CC} ${LDFLAGS} ${OBJS.$@} ${LDLIBS.$@} -o $@
 
-${OBJS}: bounce.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}
-	install -d ${DESTDIR}${PREFIX}/bin ${DESTDIR}${MANDIR}/man1
-	install ${BINS} ${DESTDIR}${PREFIX}/bin
+	install -d ${DESTDIR}${BINDIR} ${DESTDIR}${MANDIR}/man1
+	install ${BINS} ${DESTDIR}${BINDIR}
 	install -m 644 ${MANS} ${DESTDIR}${MANDIR}/man1
 
 uninstall:
-	rm -f ${BINS:%=${DESTDIR}${PREFIX}/bin/%}
+	rm -f ${BINS:%=${DESTDIR}${BINDIR}/%}
 	rm -f ${MANS:%=${DESTDIR}${MANDIR}/man1/%}
 
-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
+localhost.pem: pounce
+	./pounce -g $@
diff --git a/README.7 b/README.7
index 821a763..13fcd98 100644
--- a/README.7
+++ b/README.7
@@ -1,4 +1,4 @@
-.Dd April 30, 2021
+.Dd May  2, 2021
 .Dt README 7
 .Os "Causal Agency"
 .
@@ -71,9 +71,6 @@ and
 .Xr unveil 2 .
 Linux and macOS
 are also supported.
-On BSD systems,
-configure with
-.Fl \-mandir=/usr/local/man .
 .Bd -literal -offset indent
 \&./configure
 make all
diff --git a/configure b/configure
index 4384104..a39e76e 100755
--- a/configure
+++ b/configure
@@ -4,27 +4,28 @@ set -eu
 cflags() {
 	echo "CFLAGS += $*"
 }
-ldlibs() {
-	echo "LDLIBS ${o:-}= $*"
-	o=+
-}
-config() {
-	pkg-config --print-errors "$@"
-	cflags $(pkg-config --cflags "$@")
-	ldlibs $(pkg-config --libs "$@")
-}
 defstr() {
 	cflags "-D'$1=\"$2\"'"
 }
 defvar() {
 	defstr "$1" "$(pkg-config --variable=$3 $2)${4:-}"
 }
+ldadd() {
+	lib=$1; shift
+	echo "LDADD.${lib} = $*"
+}
+config() {
+	pkg-config --print-errors "$@"
+	cflags $(pkg-config --cflags "$@")
+	for lib; do ldadd $lib $(pkg-config --libs $lib); done
+}
 
 exec >config.mk
 
 for opt; do
 	case "${opt}" in
 		(--prefix=*) echo "PREFIX = ${opt#*=}" ;;
+		(--bindir=*) echo "BINDIR = ${opt#*=}" ;;
 		(--mandir=*) echo "MANDIR = ${opt#*=}" ;;
 		(*) echo "warning: unsupported option ${opt}" >&2 ;;
 	esac
@@ -32,18 +33,16 @@ done
 
 case "$(uname)" in
 	(FreeBSD)
-		ldlibs -lcrypt
 		config libtls
 		defstr OPENSSL_BIN /usr/bin/openssl
 		defstr CERTBOT_PATH /usr/local/etc/letsencrypt
 		;;
 	(OpenBSD)
-		ldlibs -ltls
+		ldadd crypt ''
 		defstr OPENSSL_BIN /usr/bin/openssl
 		;;
 	(Linux)
 		cflags -D_GNU_SOURCE
-		ldlibs -lcrypt
 		config libtls
 		defvar OPENSSL_BIN openssl exec_prefix /bin/openssl
 		;;
@@ -54,7 +53,6 @@ case "$(uname)" in
 		defvar OPENSSL_BIN openssl exec_prefix /bin/openssl
 		;;
 	(*)
-		ldlibs -lcrypt
 		config libtls
 		defvar OPENSSL_BIN openssl exec_prefix /bin/openssl
 		;;
diff --git a/extra/notify/Makefile b/extra/notify/Makefile
index b82094f..5e8ed93 100644
--- a/extra/notify/Makefile
+++ b/extra/notify/Makefile
@@ -1,11 +1,13 @@
 PREFIX ?= /usr/local
-MANDIR ?= ${PREFIX}/share/man
+BINDIR ?= ${PREFIX}/bin
+MANDIR ?= ${PREFIX}/man
 
 CFLAGS += -std=c11 -Wall -Wextra -Wpedantic
-LDLIBS = -ltls
+LDADD.libtls = -ltls
 
 -include config.mk
 
+LDLIBS = ${LDADD.libtls}
 OBJS = notify.o
 
 all: pounce-notify
@@ -17,10 +19,10 @@ clean:
 	rm -f ${OBJS} pounce-notify
 
 install: pounce-notify pounce-notify.1
-	install -d ${DESTDIR}${PREFIX}/bin ${DESTDIR}${MANDIR}/man1
-	install pounce-notify ${DESTDIR}${PREFIX}/bin
+	install -d ${DESTDIR}${BINDIR} ${DESTDIR}${MANDIR}/man1
+	install pounce-notify ${DESTDIR}${BINDIR}
 	install -m 644 pounce-notify.1 ${DESTDIR}${MANDIR}/man1
 
 uninstall:
-	rm -f ${DESTDIR}${PREFIX}/bin/pounce-notify
+	rm -f ${DESTDIR}${BINDIR}/pounce-notify
 	rm -f ${DESTDIR}${MANDIR}/man1/pounce-notify.1
diff --git a/extra/notify/configure b/extra/notify/configure
index 5a4ec45..e180aa5 100755
--- a/extra/notify/configure
+++ b/extra/notify/configure
@@ -4,27 +4,28 @@ set -eu
 cflags() {
 	echo "CFLAGS += $*"
 }
-ldlibs() {
-	echo "LDLIBS ${o:-}= $*"
-	o=+
-}
-config() {
-	pkg-config --print-errors "$@"
-	cflags $(pkg-config --cflags "$@")
-	ldlibs $(pkg-config --libs "$@")
-}
 defstr() {
 	cflags "-D'$1=\"$2\"'"
 }
 defvar() {
 	defstr "$1" "$(pkg-config --variable=$3 $2)${4:-}"
 }
+ldadd() {
+	lib=$1; shift
+	echo "LDADD.${lib} = $*"
+}
+config() {
+	pkg-config --print-errors "$@"
+	cflags $(pkg-config --cflags "$@")
+	for lib; do ldadd $lib $(pkg-config --libs $lib); done
+}
 
 exec >config.mk
 
 for opt; do
 	case "${opt}" in
 		(--prefix=*) echo "PREFIX = ${opt#*=}" ;;
+		(--bindir=*) echo "BINDIR = ${opt#*=}" ;;
 		(--mandir=*) echo "MANDIR = ${opt#*=}" ;;
 		(*) echo "warning: unsupported option ${opt}" >&2 ;;
 	esac
@@ -32,7 +33,6 @@ done
 
 case "$(uname)" in
 	(OpenBSD)
-		ldlibs -ltls
 		;;
 	(Linux)
 		cflags -D_GNU_SOURCE
diff --git a/extra/palaver/Makefile b/extra/palaver/Makefile
index 457e592..fbf10df 100644
--- a/extra/palaver/Makefile
+++ b/extra/palaver/Makefile
@@ -1,11 +1,15 @@
 PREFIX ?= /usr/local
-MANDIR ?= ${PREFIX}/share/man
+BINDIR ?= ${PREFIX}/bin
+MANDIR ?= ${PREFIX}/man
 
 CFLAGS += -std=c11 -Wall -Wextra -Wpedantic
-LDLIBS = -lcurl -lsqlite3 -ltls
+LDADD.libcurl = -lcurl
+LDADD.libtls = -ltls
+LDADD.sqlite3 = -lsqlite3
 
 -include config.mk
 
+LDLIBS = ${LDADD.libcurl} ${LDADD.libtls} ${LDADD.sqlite3}
 OBJS = notify.o
 
 all: pounce-palaver
@@ -17,10 +21,10 @@ clean:
 	rm -f ${OBJS} pounce-palaver
 
 install: pounce-palaver pounce-palaver.1
-	install -d ${DESTDIR}${PREFIX}/bin ${DESTDIR}${MANDIR}/man1
-	install pounce-palaver ${DESTDIR}${PREFIX}/bin
+	install -d ${DESTDIR}${BINDIR} ${DESTDIR}${MANDIR}/man1
+	install pounce-palaver ${DESTDIR}${BINDIR}
 	install -m 644 pounce-palaver.1 ${DESTDIR}${MANDIR}/man1
 
 uninstall:
-	rm -f ${DESTDIR}${PREFIX}/bin/pounce-palaver
+	rm -f ${DESTDIR}${BINDIR}/pounce-palaver
 	rm -f ${DESTDIR}${MANDIR}/man1/pounce-palaver.1
diff --git a/extra/palaver/configure b/extra/palaver/configure
index 65c82fe..bce92be 100755
--- a/extra/palaver/configure
+++ b/extra/palaver/configure
@@ -4,27 +4,28 @@ set -eu
 cflags() {
 	echo "CFLAGS += $*"
 }
-ldlibs() {
-	echo "LDLIBS ${o:-}= $*"
-	o=+
-}
-config() {
-	pkg-config --print-errors "$@"
-	cflags $(pkg-config --cflags "$@")
-	ldlibs $(pkg-config --libs "$@")
-}
 defstr() {
 	cflags "-D'$1=\"$2\"'"
 }
 defvar() {
 	defstr "$1" "$(pkg-config --variable=$3 $2)${4:-}"
 }
+ldadd() {
+	lib=$1; shift
+	echo "LDADD.${lib} = $*"
+}
+config() {
+	pkg-config --print-errors "$@"
+	cflags $(pkg-config --cflags "$@")
+	for lib; do ldadd $lib $(pkg-config --libs $lib); done
+}
 
 exec >config.mk
 
 for opt; do
 	case "${opt}" in
 		(--prefix=*) echo "PREFIX = ${opt#*=}" ;;
+		(--bindir=*) echo "BINDIR = ${opt#*=}" ;;
 		(--mandir=*) echo "MANDIR = ${opt#*=}" ;;
 		(*) echo "warning: unsupported option ${opt}" >&2 ;;
 	esac
@@ -32,7 +33,6 @@ done
 
 case "$(uname)" in
 	(OpenBSD)
-		ldlibs -ltls
 		config libcurl sqlite3
 		;;
 	(Linux)