summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Linux.mk2
-rw-r--r--Makefile3
-rw-r--r--README.733
-rwxr-xr-xconfigure37
-rw-r--r--scoop.c6
5 files changed, 64 insertions, 17 deletions
diff --git a/Linux.mk b/Linux.mk
deleted file mode 100644
index 29b7616..0000000
--- a/Linux.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-CFLAGS += -D_GNU_SOURCE
-RCS =
diff --git a/Makefile b/Makefile
index b358a82..5db0edd 100644
--- a/Makefile
+++ b/Makefile
@@ -1,11 +1,8 @@
 PREFIX = /usr/local
 MANDIR = ${PREFIX}/share/man
 ETCDIR = ${PREFIX}/etc
-LIBS_PREFIX = /usr/local
 
 CFLAGS += -std=c11 -Wall -Wextra -Wpedantic
-CFLAGS += ${LIBS_PREFIX:%=-I%/include}
-LDFLAGS += ${LIBS_PREFIX:%=-L%/lib}
 LDLIBS = -lsqlite3
 LDLIBS_litterbox = -ltls
 
diff --git a/README.7 b/README.7
index f996a65..65ebab3 100644
--- a/README.7
+++ b/README.7
@@ -1,4 +1,4 @@
-.Dd January 12, 2020
+.Dd March  2, 2020
 .Dt README 7
 .Os "Causal Agency"
 .
@@ -22,16 +22,27 @@ as a logging bot.
 requires LibreSSL
 .Pq Fl ltls
 and SQLite
-.Pq Fl lsqlite3 ,
-and targets
-.Fx
-and Darwin.
-To build on GNU/Linux,
-copy
-.Pa Linux.mk
-to
-.Pa config.mk
-and modify as needed.
+.Pq Fl lsqlite3 .
+It primarily targets
+.Fx ,
+as well as macOS and Linux.
+.
+.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
+.Ev PKG_CONFIG_PATH
+for
+.Nm ./configure .
+For example,
+.Bd -literal -offset indent
+PKG_CONFIG_PATH=/opt/libressl/lib/pkgconfig ./configure
+.Ed
 .
 .Sh FILES
 .Bl -tag -width "litterbox.c" -compact
diff --git a/configure b/configure
new file mode 100755
index 0000000..0b5f212
--- /dev/null
+++ b/configure
@@ -0,0 +1,37 @@
+#!/bin/sh
+set -eu
+
+exec >config.mk
+
+case "$(uname)" in
+	(FreeBSD)
+		if ! pkg info -e libressl || ! pkg info -e sqlite3; then
+			echo 'LibreSSL & SQLite3 required' >&2
+			exit 1
+		fi
+		prefix=$(pkg query '%p' sqlite3)
+		cat <<-EOF
+		CFLAGS += -I${prefix}/include
+		CFLAGS += -D'SQLITE3_BIN="${prefix}/bin/sqlite3"'
+		LDFLAGS += -L${prefix}/lib
+		EOF
+		exit
+		;;
+	(Linux)
+		cat <<-EOF
+		CFLAGS += -D_GNU_SOURCE
+		RCS =
+		EOF
+		;;
+esac
+
+libs='libtls sqlite3'
+pkg-config --print-errors $libs
+
+cat <<EOF
+CFLAGS += $(pkg-config --cflags $libs)
+CFLAGS += -D'SQLITE3_BIN="$(pkg-config --variable=prefix sqlite3)/bin/sqlite3"'
+LDFLAGS += $(pkg-config --libs-only-L $libs)
+LDLIBS = $(pkg-config --libs-only-l sqlite3)
+LDLIBS_litterbox = $(pkg-config --libs-only-l libtls)
+EOF
diff --git a/scoop.c b/scoop.c
index 922c7cd..a12b37b 100644
--- a/scoop.c
+++ b/scoop.c
@@ -28,6 +28,10 @@
 
 #include "database.h"
 
+#ifndef SQLITE3_BIN
+#define SQLITE3_BIN "sqlite3"
+#endif
+
 struct Event {
 	const char *network;
 	const char *context;
@@ -419,7 +423,7 @@ int main(int argc, char *argv[]) {
 		path = strdup(sqlite3_db_filename(db, "main"));
 		if (!path) err(EX_OSERR, "strdup");
 		dbClose();
-		execlp("sqlite3", "sqlite3", path, NULL);
+		execlp(SQLITE3_BIN, "sqlite3", path, NULL);
 		err(EX_UNAVAILABLE, "sqlite3");
 	}