about summary refs log tree commit diff
path: root/configure
diff options
context:
space:
mode:
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure85
1 files changed, 52 insertions, 33 deletions
diff --git a/configure b/configure
index b75a2d3..29587a2 100755
--- a/configure
+++ b/configure
@@ -1,45 +1,64 @@
 #!/bin/sh
 set -eu
 
-base='-lcrypt'
-libs='libcrypto libtls'
+cflags() {
+	echo "CFLAGS += $*"
+}
+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#*=}" ;;
+		(--enable-notify) echo 'BINS += pounce-notify' ;;
+		(--enable-palaver)
+			echo 'BINS += pounce-palaver'
+			config libcurl sqlite3
+			;;
+		(*) echo "warning: unsupported option ${opt}" >&2 ;;
+	esac
+done
+
 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
+		config libtls
+		defstr OPENSSL_BIN /usr/bin/openssl
+		;;
+	(OpenBSD)
+		ldadd crypt ''
+		defstr OPENSSL_BIN /usr/bin/openssl
 		;;
 	(Linux)
-		cat <<-EOF
-		CFLAGS += -D_GNU_SOURCE
-		CFLAGS += -D'CERTBOT_PATH="/etc/letsencrypt"'
-		LDLIBS_calico = \${LDLIBS}
-		RCS =
-		DIRS =
-		EOF
+		cflags -D_GNU_SOURCE
+		config libtls
+		defvar OPENSSL_BIN openssl exec_prefix /bin/openssl
+		;;
+	(Darwin)
+		cflags -D__STDC_WANT_LIB_EXT1__=1
+		cflags "-D'explicit_bzero(b,l)=memset_s((b),(l),0,(l))'"
+		ldadd crypt ''
+		config libtls
+		defvar OPENSSL_BIN openssl exec_prefix /bin/openssl
+		;;
+	(*)
+		config libtls
+		defvar OPENSSL_BIN openssl exec_prefix /bin/openssl
 		;;
 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)
-EOF