aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorOmar Polo <op@omarpolo.com>2022-07-04 13:44:38 +0000
committerOmar Polo <op@omarpolo.com>2022-07-04 13:44:38 +0000
commit96e3c013146396d02318685d79ed7025a09ffb43 (patch)
treefdb040515936bd940668a29f5ce986200b076815 /Makefile
parent225686d7fdf2e39c2152afc7561234c0f9de034b (diff)
refactor the makefile / configure
steal more (good) stuff from mandoc-portable :)
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile173
1 files changed, 166 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index ac3f540..08d4f11 100644
--- a/Makefile
+++ b/Makefile
@@ -1,13 +1,140 @@
+# Copyright (c) 2022 Omar Polo <op@omarpolo.com>
+# Copyright (c) 2011, 2013-2022 Ingo Schwarze <schwarze@openbsd.org>
+# Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
# tests to run as a port of the regression suite. Leave empty to run
# all.
TESTS=
-.PHONY: all static clean cleanall test regress install
+TESTSRCS = have/err.c \
+ have/explicit_bzero.c \
+ have/freezero.c \
+ have/getdtablecount.c \
+ have/getdtablesize.c \
+ have/getprogname.c \
+ have/imsg.c \
+ have/landlock.c \
+ have/libevent.c \
+ have/libevent2.c \
+ have/libtls.c \
+ have/noop.c \
+ have/noop.d \
+ have/openssl.c \
+ have/pr_set_name.c \
+ have/program_invocation_short_name.c \
+ have/queue_h.c \
+ have/reallocarray.c \
+ have/recallocarray.c \
+ have/setproctitle.c \
+ have/strlcat.c \
+ have/strlcpy.c \
+ have/strtonum.c \
+ have/tree_h.c \
+ have/vasprintf.c
+
+COMPATS = compat/err.c \
+ compat/explicit_bzero.c \
+ compat/freezero.c \
+ compat/getdtablecount.c \
+ compat/getdtablesize.c \
+ compat/getprogname.c \
+ compat/imsg-buffer.c \
+ compat/imsg.c \
+ compat/imsg.h \
+ compat/queue.h \
+ compat/reallocarray.c \
+ compat/recallocarray.c \
+ compat/setproctitle.c \
+ compat/strlcat.c \
+ compat/strlcpy.c \
+ compat/strtonum.c \
+ compat/tree.h \
+ compat/vasprintf.c
+
+GMID_SRCS = dirs.c \
+ ex.c \
+ fcgi.c \
+ gmid.c \
+ iri.c \
+ log.c \
+ mime.c \
+ proxy.c \
+ puny.c \
+ sandbox.c \
+ server.c \
+ utf8.c \
+ utils.c \
+ y.tab.c \
+
+GMID_OBJS = ${GMID_SRCS:.c=.o} ${COBJS}
+
+GG_SRCS = gg.c \
+ iri.c \
+ utf8.c
+
+GG_OBJS = ${GG_SRCS:.c=.o} ${COBJS}
+
+SRCS = gmid.h \
+ landlock_shim.h \
+ parse.y \
+ ${GMID_SRCS} \
+ ${GG_SRCS}
+
+REGRESSFILES = regress/Makefile \
+ regress/env \
+ regress/err \
+ regress/example.mime.types \
+ regress/fcgi-test.c \
+ regress/fill-file.c \
+ regress/hello \
+ regress/invalid \
+ regress/iri_test.c \
+ regress/lib.sh \
+ regress/max-length-reply \
+ regress/puny-test.c \
+ regress/regress \
+ regress/serve-bigfile \
+ regress/sha \
+ regress/slow \
+ regress/tests.sh \
+ regress/valid.ext
+
+EXTRAS = ChangeLog \
+ LICENSE \
+ Makefile \
+ Makefile.depend \
+ README.md \
+ configure \
+ configure.local.example \
+ gmid.1 \
+ gmid.conf.5
+
+DISTFILES = ${EXTRAS} \
+ ${COMPATS} \
+ ${REGRESSFILES} \
+ ${SRCS} \
+ ${TESTSRCS}
+
+DISTNAME = gmid-${VERSION}
all: Makefile.local gmid gg
+.PHONY: all static clean cleanall test regress install
-Makefile.local: configure
- ./configure
+Makefile.local config.h: configure ${TESTSRCS}
+ @echo "$@ is out of date; please run ./configure"
+ @exit 1
include Makefile.local
@@ -27,10 +154,11 @@ static: ${GMID_OBJS} ${GG_OBJS}
clean:
rm -f *.o compat/*.o y.tab.c y.tab.h y.output gmid gg
rm -f compile_flags.txt
-
-cleanall: clean
${MAKE} -C regress clean
+distclean: clean
+ rm -f Makefile.local config.h config.h.old config.log config.log.old
+
test: regress
regress: all
${MAKE} 'TESTS=${TESTS}' -C regress all
@@ -45,10 +173,41 @@ install: gmid gg
${INSTALL_MAN} gmid.conf.5 ${DESTDIR}${MANDIR}/man5
${INSTALL_MAN} gg.1 ${DESTDIR}${MANDIR}/man1
-compile_flags.txt:
- printf "%s\n" ${CFLAGS} > compile_flags.txt
+uninstall:
+ rm ${DESTDIR}${BINDIR}/gg
+ rm ${DESTDIR}${BINDIR}/gmid
+ rm ${DESTDIR}${MANDIR}/man1/gg.1
+ rm ${DESTDIR}${MANDIR}/man1/gmid.1
+ rm ${DESTDIR}${MANDIR}/man5/gmid.conf.5
# make sure we pass -o to ${CC}. OpenBSD default suffix rule doesn't
.SUFFIXES: .c .o
.c.o:
${CC} ${CFLAGS} -c $< -o $@
+
+depend: config.h y.tab.c
+ mkdep -f Makefile.tmp1 ${CFLAGS} ${GMID_SRCS} ${GG_SRCS} ${COBJSx:.o=.c}
+ perl -e 'undef $$/; $$_ = <>; s|/usr/include/\S+||g; \
+ s|\\\n||g; s| +| |g; s| $$||mg; print;' \
+ Makefile.tmp1 > Makefile.tmp2
+ rm Makefile.tmp1
+ mv Makefile.tmp2 Makefile.depend
+
+dist: ${DISTNAME}.sha256
+
+${DISTNAME}.sha256: ${DISTNAME}.tar.gz
+
+${DISTNAME}.tar.gz: ${DISTFILES}
+ mkdir -p .dist/${DISTNAME}/
+ ${INSTALL} -m 0644 ${SRCS} ${EXTRAS} .dist/${DISTNAME}
+ cd .dist/${DISTNAME} && chmod 755 configure
+ mkdir -p .dist/${DISTNAME}/compat
+ ${INSTALL} -m 0644 ${COMPATS} .dist/${DISTNAME}/compat
+ mkdir -p .dist/${DISTNAME}/have
+ ${INSTALL} -m 0644 ${TESTSRCS} .dist/${DISTNAME}/have
+ mkdir -p .dist/${DISTNAME}/regress
+ ${INSTALL} -m 0644 ${REGRESSFILES} .dist/${DISTNAME}/regress
+ cd .dist/${DISTNAME}/regress && chmod 755 env err hello invalid \
+ max-length-reply regress sha slow
+ cd .dist/ && tar zcf ../$@ ${DISTNAME}
+ rm -rf .dist/