Commit Diff


commit - 59519201c9ae2819a97b58bcdd0eca8fb893ea14
commit + 25756acf2931c426ff45b5a70cc960f6cf63d52f
blob - e1e2a76b9c34bf6372bdc6d56467f899b22a671f
blob + 1f97bd28f4172df60f52b0b2bae40bc4fa0817a0
--- Makefile.gnu
+++ Makefile.gnu
@@ -1,37 +1,74 @@
-LOCALBASE?= /usr/local/
+LOCALBASE?=	/usr/
 
-PROG=	filter-dkimsign
-MAN=	filter-dkimsign.8
-BINDIR=	${LOCALBASE}/libexec/opensmtpd/
-MANDIR=	${LOCALBASE}/share/man/man8
+PROG=		filter-dkimsign
+MAN=		filter-dkimsign.8
+BINDIR=		${LOCALBASE}/libexec/opensmtpd/
+MANDIR=		${LOCALBASE}/share/man/man8
 
-BINOWN?=	root
-BINGRP?=	root
-BINPERM?=	755
+SRCS+=		main.c mheader.c
 
-SRCS+=	main.c mheader.c
+ifdef HAVE_ED25519
+CFLAGS+=	-DHAVE_ED25519
+endif
+ifdef LIBCRYPTOPC
+CRYPT_CFLAGS!=	pkg-config --cflags ${LIBCRYPTOPC}
+CRYPT_LDFLAGS_L!=pkg-config --libs-only-L ${LIBCRYPTOPC}
+CRYPT_LDFLAGS_libdir!=pkg-config --variable libdir ${LIBCRYPTOPC}
+CRYPT_LDFLAGS=	${CRYPT_LDFLAGS_L}
+CRYPT_LDFLAGS+=	-Wl,-rpath,${CRYPT_LDFLAGS_libdir}
+CRYPT_LDADD!=	pkg-config --libs-only-l ${LIBCRYPTOPC}
+else
+CRYPT_CFLAGS=
+CRYPT_LDFLAGS=
+CRYPT_LDADD=	-lcrypto
+endif
 
-CFLAGS+=-I${LOCALBASE}/include
-CFLAGS+=-Wall -I${.CURDIR}
-CFLAGS+=-Wstrict-prototypes -Wmissing-prototypes
-CFLAGS+=-Wmissing-declarations
-CFLAGS+=-Wshadow -Wpointer-arith -Wcast-qual
-CFLAGS+=-Wsign-compare
-CFLAGS+=-I${CURDIR} -I${CURDIR}/openbsd-compat/
+CFLAGS+=	-I${LOCALBASE}/include
+CFLAGS+=	-Wall -I${.CURDIR}
+CFLAGS+=	-Wstrict-prototypes -Wmissing-prototypes
+CFLAGS+=	-Wmissing-declarations
+CFLAGS+=	-Wshadow -Wpointer-arith -Wcast-qual
+CFLAGS+=	-Wsign-compare
+CFLAGS+=	${CRYPT_CFLAGS}
+CFLAGS+=	-I${CURDIR} -I${CURDIR}/openbsd-compat/
 
-LDFLAGS+=-L${LOCALBASE}/lib
-LDLIBS+=-lcrypto -lopensmtpd
+LDFLAGS+=	-L${LOCALBASE}/lib
+LDFLAGS+=	${CRYPT_LDFLAGS}
+LDADD+=		${CRYPT_LDADD} -lopensmtpd
 
 INSTALL?=	install
 
+NEED_REALLOCARRAY?=	1
 NEED_RECALLOCARRAY?=	1
 NEED_STRLCAT?=		1
 NEED_STRTONUM?=		1
 NEED_PLEDGE?=		1
 
-.PHONY: all
-all: ${PROG}
+MANFORMAT?=		mangz
 
+BINOWN?=	root
+BINGRP?=	root
+BINPERM?=	755
+MANOWN?=	root
+MANGRP?=	root
+MANPERM?=	644
+
+ifeq (${MANFORMAT}, mangz)
+TARGET_MAN=		${MAN}.gz
+CLEANFILES+=		${TARGET_MAN}
+${TARGET_MAN}: ${MAN}
+	mandoc -Tman ${MAN} | gzip > $@
+else
+TARGET_MAN=		${MAN}
+endif
+
+ifeq (${NEED_REALLOCARRAY}, 1)
+SRCS+=		${CURDIR}/openbsd-compat/reallocarray.c
+CFLAGS+=	-DNEED_REALLOCARRAY=1
+
+reallocarray.o: ${CURDIR}/openbsd-compat/reallocarray.c
+	${CC} ${CFLAGS} -c -o reallocarray.o ${CURDIR}/openbsd-compat/reallocarray.c
+endif
 ifeq (${NEED_RECALLOCARRAY}, 1)
 SRCS+=		${CURDIR}/openbsd-compat/recallocarray.c
 CFLAGS+=	-DNEED_RECALLOCARRAY=1
@@ -59,16 +96,24 @@ endif
 
 ${SRCS:.c=.d}:%.d:%.c
 	 ${CC} ${CFLAGS} -MM $< >$@
+CLEANFILES+=	${SRCS:.c=.d}
 
 OBJS=		${notdir ${SRCS:.c=.o}}
+CLEANFILES+=	${OBJS}
 
 ${PROG}: ${OBJS}
-	${CC} ${LDFLAGS} -o $@ $^ ${LDLIBS}
+	${CC} ${LDFLAGS} -o $@ ${OBJS} ${LDADD}
 
+.DEFAULT_GOAL=		all
+.PHONY: all
+all: ${PROG} ${TARGET_MAN}
+CLEANFILES+=	${PROG}
+
 .PHONY: clean
 clean:
-	rm -f *.d *.o ${PROG}
+	rm -f ${CLEANFILES}
 
 .PHONY: install
 install: ${PROG}
-	${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINPERM} ${PROG} ${BINDIR}
+	${INSTALL} -D -o ${BINOWN} -g ${BINGRP} -m ${BINPERM} ${PROG} ${DESTDIR}${BINDIR}/${PROG}
+	${INSTALL} -D -o ${MANOWN} -g ${MANGRP} -m ${MANPERM} ${TARGET_MAN} ${DESTDIR}${MANDIR}/${TARGET_MAN}