diff options
-rw-r--r-- | .gitignore | 7 | ||||
-rw-r--r-- | Makefile | 48 | ||||
-rw-r--r-- | README.7 | 29 | ||||
-rwxr-xr-x | configure | 43 |
4 files changed, 58 insertions, 69 deletions
diff --git a/.gitignore b/.gitignore index 9d34433..6c8280c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,9 @@ +*.1.gz *.conf *.o -/calico -/pounce +calico config.mk localhost.crt localhost.key -rc.d/calico -rc.d/pounce +pounce tags diff --git a/Makefile b/Makefile index d992548..0f6a8d8 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,19 @@ -PREFIX = /usr/local -MANDIR = ${PREFIX}/share/man -ETCDIR = ${PREFIX}/etc -RUNDIR = /var/run +PREFIX ?= /usr/local +MANDIR ?= ${PREFIX}/share/man +ETCDIR ?= ${PREFIX}/etc +RUNDIR ?= /var/run + +CFLAGS += -I${PREFIX}/include +LDFLAGS += -L${PREFIX}/lib CFLAGS += -std=c11 -Wall -Wextra -Wpedantic -LDLIBS = -lcrypt -lcrypto -ltls +LDLIBS = -lcrypt -ltls BINS = calico pounce -MANS = ${BINS:=.1} +MANS = ${BINS:=.1.gz} RCS = ${BINS:%=rc.d/%} DIRS = ${ETCDIR}/pounce ${RUNDIR}/calico +INSTALLS = install-rcs install-dirs -include config.mk @@ -35,7 +39,10 @@ ${OBJS}: bounce.h compat.h dispatch.o: compat.h -.SUFFIXES: .in +.SUFFIXES: .1 .1.gz .in + +.1.1.gz: + gzip -cn $< > $@ .in: sed -e 's|%%PREFIX%%|${PREFIX}|g' $< > $@ @@ -44,21 +51,24 @@ tags: *.c *.h ctags -w *.c *.h clean: - rm -f tags ${BINS} ${RCS} ${OBJS} dispatch.o + rm -f tags ${BINS} ${MANS} ${RCS} ${OBJS} dispatch.o + +install: ${BINS} ${MANS} ${INSTALLS} + install -d ${DESTDIR}${PREFIX}/bin ${DESTDIR}${MANDIR}/man1 + install ${BINS} ${DESTDIR}${PREFIX}/bin + install -m 644 ${MANS} ${DESTDIR}${MANDIR}/man1 + +install-rcs: ${RCS} + install -d ${DESTDIR}${ETCDIR}/rc.d + install ${RCS} ${DESTDIR}${ETCDIR}/rc.d -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-dirs: + install -d ${DIRS:%=${DESTDIR}%} 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 + rm -f ${BINS:%=${DESTDIR}${PREFIX}/bin/%} + rm -f ${MANS:%=${DESTDIR}${MANDIR}/man1/%} + rm -f ${RCS:%=${DESTDIR}${ETCDIR}/%} localhost.crt: printf "[dn]\nCN=localhost\n[req]\ndistinguished_name=dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth" \ diff --git a/README.7 b/README.7 index d14aef2..d15c34a 100644 --- a/README.7 +++ b/README.7 @@ -1,4 +1,4 @@ -.Dd May 18, 2020 +.Dd May 19, 2020 .Dt README 7 .Os "Causal Agency" . @@ -46,29 +46,28 @@ requires LibreSSL .Pq Fl ltls and primarily targets .Fx , -as well as macOS and Linux. -On -.Fx , -processes are sandboxed with +where it is sandboxed with .Xr capsicum 4 . -On other systems, -who knows what might happen? -. .Bd -literal -offset indent -\&./configure make all sudo make install PREFIX=/usr/local .Ed . .Pp -If your system installs LibreSSL -in a non-standard path, set +On other systems, +such as macOS and Linux, +the build is configured using +.Xr pkg-config 1 . +If LibreSSL is installed +in a non-standard prefix, +set .Ev PKG_CONFIG_PATH -for -.Nm ./configure . -For example, +appropriately. +For example: .Bd -literal -offset indent PKG_CONFIG_PATH=/opt/libressl/lib/pkgconfig ./configure +make all +sudo make install PREFIX=/usr/local .Ed . .Sh FILES @@ -93,7 +92,7 @@ configuration parsing .It Pa dispatch.c SNI socket dispatch .It Pa compat.h -compatibility with lesser operating systems +compatibility with other systems .It Pa rc.d/ .Fx .Xr rc 8 diff --git a/configure b/configure index 2936780..96224d0 100755 --- a/configure +++ b/configure @@ -3,43 +3,24 @@ set -eu base='-lcrypt' libs='libcrypto libtls' +[ "$(uname)" = 'Darwin' ] && base= exec >config.mk -case "$(uname)" in - (Darwin) - base='' - ;; - (FreeBSD) - if ! pkg info -e libressl; then - echo 'LibreSSL required' >&2 - exit 1 - fi - prefix=$(pkg query '%p' libressl) - cat <<-EOF - MANDIR = \${PREFIX}/man - CFLAGS += -I${prefix}/include - CFLAGS += -D'OPENSSL_BIN="${prefix}/bin/openssl"' - LDFLAGS += -L${prefix}/lib - EOF - exit - ;; - (Linux) - cat <<-EOF - CFLAGS += -D_GNU_SOURCE - CFLAGS += -D'CERTBOT_PATH="/etc/letsencrypt"' - LDLIBS.calico = \${LDLIBS} - RCS = - DIRS = - EOF - ;; -esac - pkg-config --print-errors $libs cat <<EOF CFLAGS += $(pkg-config --cflags $libs) -CFLAGS += -D'OPENSSL_BIN="$(pkg-config --variable=prefix openssl)/bin/openssl"' LDFLAGS += $(pkg-config --libs-only-L $libs) -LDLIBS = $base $(pkg-config --libs-only-l $libs) +LDLIBS = ${base} $(pkg-config --libs-only-l $libs) +CFLAGS += -D'OPENSSL_BIN="$(pkg-config --variable=exec_prefix openssl)/bin/openssl"' +CFLAGS += -D'CERTBOT_PATH="/etc/letsencrypt"' +INSTALLS = EOF + +if [ "$(uname)" = 'Linux' ]; then + cat <<-EOF + CFLAGS += -D_GNU_SOURCE + LDLIBS.calico = \${LDLIBS} + EOF +fi |