2022-07-04 15:44:38 +02:00
|
|
|
# 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.
|
|
|
|
|
2021-10-07 10:55:44 +02:00
|
|
|
# tests to run as a port of the regression suite. Leave empty to run
|
|
|
|
# all.
|
|
|
|
TESTS=
|
|
|
|
|
2023-06-24 00:00:21 +02:00
|
|
|
# host to bind to during regress
|
|
|
|
REGRESS_HOST = localhost
|
|
|
|
|
2023-06-13 18:36:10 +02:00
|
|
|
# -- build-related variables --
|
|
|
|
|
|
|
|
COBJS = ${COMPATS:.c=.o}
|
|
|
|
|
2023-06-11 13:03:59 +02:00
|
|
|
GMID_SRCS = gmid.c config.c crypto.c dirs.c fcgi.c iri.c log.c \
|
|
|
|
logger.c mime.c proc.c proxy.c puny.c sandbox.c \
|
|
|
|
server.c utf8.c utils.c y.tab.c
|
2022-07-04 15:44:38 +02:00
|
|
|
|
|
|
|
GMID_OBJS = ${GMID_SRCS:.c=.o} ${COBJS}
|
|
|
|
|
2023-07-25 22:15:40 +02:00
|
|
|
GEMEXP_SRCS = ge.c config.c crypto.c dirs.c fcgi.c iri.c log.c mime.c \
|
2023-06-11 13:03:59 +02:00
|
|
|
proc.c proxy.c puny.c sandbox.c server.c utf8.c utils.c
|
2022-09-07 22:47:33 +02:00
|
|
|
|
2023-07-25 22:15:40 +02:00
|
|
|
GEMEXP_OBJS = ${GEMEXP_SRCS:.c=.o} ${COBJS}
|
2022-09-07 22:47:33 +02:00
|
|
|
|
2023-08-23 19:38:49 +02:00
|
|
|
GG_SRCS = gg.c iri.c log.c utf8.c
|
2022-07-04 15:44:38 +02:00
|
|
|
|
|
|
|
GG_OBJS = ${GG_SRCS:.c=.o} ${COBJS}
|
|
|
|
|
2023-08-23 19:38:49 +02:00
|
|
|
TITAN_SRCS = titan.c iri.c log.c utf8.c
|
2023-07-22 17:47:02 +02:00
|
|
|
TITAN_OBJS = ${TITAN_SRCS:.c=.o} ${COBJS}
|
|
|
|
|
2024-01-10 18:32:45 +01:00
|
|
|
SRCS = gmid.h iri.h log.h parse.y proc.h \
|
2023-07-25 22:15:40 +02:00
|
|
|
${GMID_SRCS} ${GEMEXP_SRCS} ${GG_SRCS} ${TITAN_SRCS}
|
2022-07-04 15:44:38 +02:00
|
|
|
|
|
|
|
DISTNAME = gmid-${VERSION}
|
2021-01-17 13:12:37 +01:00
|
|
|
|
2023-06-13 18:36:10 +02:00
|
|
|
# -- public targets --
|
|
|
|
|
2023-07-25 22:15:40 +02:00
|
|
|
all: config.mk gmid gemexp gg titan
|
2023-06-24 15:10:31 +02:00
|
|
|
.PHONY: all tags clean cleanall test regress install
|
2021-01-17 13:12:37 +01:00
|
|
|
|
2023-06-13 18:36:10 +02:00
|
|
|
config.mk config.h: configure
|
2022-07-04 15:44:38 +02:00
|
|
|
@echo "$@ is out of date; please run ./configure"
|
|
|
|
@exit 1
|
2020-10-02 19:39:00 +02:00
|
|
|
|
2023-06-13 18:36:10 +02:00
|
|
|
include config.mk
|
2021-01-17 13:12:37 +01:00
|
|
|
|
2020-10-02 19:39:00 +02:00
|
|
|
clean:
|
2023-08-23 19:38:49 +02:00
|
|
|
rm -f gmid gemexp gg
|
|
|
|
rm -f *.[do] compat/*.[do] compat/libtls/*.[do]
|
|
|
|
rm -f y.tab.c y.tab.h y.output
|
2021-02-01 20:30:38 +01:00
|
|
|
rm -f compile_flags.txt
|
2021-07-10 23:43:21 +02:00
|
|
|
${MAKE} -C regress clean
|
2020-12-25 13:13:12 +01:00
|
|
|
|
2022-07-04 15:44:38 +02:00
|
|
|
distclean: clean
|
2023-06-13 18:36:10 +02:00
|
|
|
rm -f config.h config.h.old config.log config.log.old config.mk
|
2022-07-04 15:44:38 +02:00
|
|
|
|
2022-03-26 12:57:27 +01:00
|
|
|
test: regress
|
2022-02-03 11:08:57 +01:00
|
|
|
regress: all
|
2022-01-02 14:54:54 +01:00
|
|
|
${MAKE} 'TESTS=${TESTS}' -C regress all
|
2021-01-22 17:48:04 +01:00
|
|
|
|
2023-07-25 22:15:40 +02:00
|
|
|
install: gmid gg gemexp
|
2021-01-21 14:50:11 +01:00
|
|
|
mkdir -p ${DESTDIR}${BINDIR}
|
|
|
|
mkdir -p ${DESTDIR}${MANDIR}/man1
|
2022-04-07 19:51:26 +02:00
|
|
|
mkdir -p ${DESTDIR}${MANDIR}/man5
|
2022-09-08 23:18:04 +02:00
|
|
|
mkdir -p ${DESTDIR}${MANDIR}/man8
|
2023-07-25 22:15:40 +02:00
|
|
|
${INSTALL_PROGRAM} gemexp ${DESTDIR}${BINDIR}
|
2024-01-11 14:06:08 +01:00
|
|
|
${INSTALL_PROGRAM} gg ${DESTDIR}${BINDIR}
|
|
|
|
${INSTALL_PROGRAM} gmid ${DESTDIR}${BINDIR}
|
|
|
|
${INSTALL_PROGRAM} titan ${DESTDIR}${BINDIR}
|
2023-07-25 22:15:40 +02:00
|
|
|
${INSTALL_MAN} gemexp.1 ${DESTDIR}${MANDIR}/man1
|
2022-01-30 14:35:45 +01:00
|
|
|
${INSTALL_MAN} gg.1 ${DESTDIR}${MANDIR}/man1
|
2024-01-11 14:06:08 +01:00
|
|
|
${INSTALL_MAN} titan.1 ${DESTDIR}${MANDIR}/man1
|
|
|
|
${INSTALL_MAN} gmid.conf.5 ${DESTDIR}${MANDIR}/man5
|
|
|
|
${INSTALL_MAN} gmid.8 ${DESTDIR}${MANDIR}/man8
|
2021-02-01 20:30:38 +01:00
|
|
|
|
2022-07-04 15:44:38 +02:00
|
|
|
uninstall:
|
2023-07-25 22:15:40 +02:00
|
|
|
rm ${DESTDIR}${BINDIR}/gemexp
|
2022-07-04 15:44:38 +02:00
|
|
|
rm ${DESTDIR}${BINDIR}/gg
|
|
|
|
rm ${DESTDIR}${BINDIR}/gmid
|
2024-01-11 14:06:08 +01:00
|
|
|
rm ${DESTDIR}${BINDIR}/titan
|
2023-07-25 22:15:40 +02:00
|
|
|
rm ${DESTDIR}${MANDIR}/man1/gemexp.1
|
2022-07-04 15:44:38 +02:00
|
|
|
rm ${DESTDIR}${MANDIR}/man1/gg.1
|
2024-01-11 14:06:08 +01:00
|
|
|
rm ${DESTDIR}${MANDIR}/man1/titan.1
|
2022-07-04 15:44:38 +02:00
|
|
|
rm ${DESTDIR}${MANDIR}/man5/gmid.conf.5
|
2022-09-08 23:18:04 +02:00
|
|
|
rm ${DESTDIR}${MANDIR}/man8/gmid.8
|
2021-02-23 12:19:52 +01:00
|
|
|
|
2023-06-13 18:36:10 +02:00
|
|
|
tags:
|
|
|
|
ctags ${SRCS}
|
|
|
|
|
|
|
|
# --internal build targets --
|
|
|
|
|
|
|
|
gmid: ${GMID_OBJS}
|
2023-10-14 20:53:37 +02:00
|
|
|
${CC} ${GMID_OBJS} -o $@ ${LDFLAGS} ${LIBS}
|
2023-06-13 18:36:10 +02:00
|
|
|
|
2023-07-25 22:15:40 +02:00
|
|
|
gemexp: ${GEMEXP_OBJS}
|
2023-10-14 20:53:37 +02:00
|
|
|
${CC} ${GEMEXP_OBJS} -o $@ ${LDFLAGS} ${LIBS}
|
2023-06-13 18:36:10 +02:00
|
|
|
|
|
|
|
gg: ${GG_OBJS}
|
2023-10-14 20:53:37 +02:00
|
|
|
${CC} ${GG_OBJS} -o $@ ${LDFLAGS} ${LIBS}
|
2023-06-13 18:36:10 +02:00
|
|
|
|
2023-07-22 17:47:02 +02:00
|
|
|
titan: ${TITAN_OBJS}
|
2023-10-14 20:53:37 +02:00
|
|
|
${CC} ${TITAN_OBJS} -o $@ ${LDFLAGS} ${LIBS}
|
2023-07-22 17:47:02 +02:00
|
|
|
|
2023-06-13 18:36:10 +02:00
|
|
|
y.tab.c: parse.y
|
|
|
|
${YACC} -b y parse.y
|
|
|
|
|
2021-02-23 12:19:52 +01:00
|
|
|
# make sure we pass -o to ${CC}. OpenBSD default suffix rule doesn't
|
|
|
|
.SUFFIXES: .c .o
|
|
|
|
.c.o:
|
|
|
|
${CC} ${CFLAGS} -c $< -o $@
|
2022-07-04 15:44:38 +02:00
|
|
|
|
2022-10-31 23:53:16 +01:00
|
|
|
# -- maintainer targets --
|
|
|
|
|
2023-06-24 15:01:31 +02:00
|
|
|
.PHONY: lint release dist
|
|
|
|
|
|
|
|
lint:
|
2023-10-18 21:29:55 +02:00
|
|
|
man -Tlint -Wstyle -l gmid.8 gmid.conf.5 gemexp.1 gg.1 titan.1
|
2023-06-14 09:15:00 +02:00
|
|
|
|
2024-01-24 16:21:19 +01:00
|
|
|
PUBKEY = keys/gmid-2.0.pub
|
2024-01-10 18:48:11 +01:00
|
|
|
PRIVKEY = set-PRIVKEY
|
2023-06-08 16:36:29 +02:00
|
|
|
DISTFILES = .cirrus.yml .dockerignore .gitignore ChangeLog LICENSE \
|
2023-08-23 22:47:17 +02:00
|
|
|
Makefile README.md config.c configure crypto.c dirs.c fcgi.c \
|
|
|
|
ge.c gemexp.1 gg.1 gg.c gmid.8 gmid.c gmid.conf.5 gmid.h \
|
2024-01-10 18:32:45 +01:00
|
|
|
iri.c iri.h log.c log.h logger.c mime.c parse.y proc.c \
|
|
|
|
proc.h proxy.c puny.c sandbox.c server.c titan.1 titan.c \
|
|
|
|
utf8.c utils.c y.tab.c
|
2022-07-04 15:44:38 +02:00
|
|
|
|
2023-06-14 09:15:00 +02:00
|
|
|
release:
|
2024-01-10 18:48:11 +01:00
|
|
|
sed -i -e '/^RELEASE=/s/no/yes/' configure
|
2023-06-14 09:15:00 +02:00
|
|
|
${MAKE} dist
|
2024-01-10 18:48:11 +01:00
|
|
|
sed -i -e '/^RELEASE=/s/yes/no/' configure
|
|
|
|
signify -S -e -m ${DISTNAME}.sha256 -s ${PRIVKEY}
|
|
|
|
|
|
|
|
verify-release:
|
|
|
|
signify -C -p ${PUBKEY} -x ${DISTNAME}.sha256.sig
|
2023-06-14 09:15:00 +02:00
|
|
|
|
2022-07-04 15:44:38 +02:00
|
|
|
dist: ${DISTNAME}.sha256
|
|
|
|
|
|
|
|
${DISTNAME}.sha256: ${DISTNAME}.tar.gz
|
2024-01-10 18:48:11 +01:00
|
|
|
sha256 ${DISTNAME}.tar.gz > $@
|
2022-07-04 15:44:38 +02:00
|
|
|
|
|
|
|
${DISTNAME}.tar.gz: ${DISTFILES}
|
|
|
|
mkdir -p .dist/${DISTNAME}/
|
2022-10-31 23:53:16 +01:00
|
|
|
${INSTALL} -m 0644 ${DISTFILES} .dist/${DISTNAME}/
|
2022-07-04 15:44:38 +02:00
|
|
|
cd .dist/${DISTNAME} && chmod 755 configure
|
2022-10-31 23:53:16 +01:00
|
|
|
${MAKE} -C compat DESTDIR=${PWD}/.dist/${DISTNAME}/compat dist
|
|
|
|
${MAKE} -C contrib DESTDIR=${PWD}/.dist/${DISTNAME}/contrib dist
|
|
|
|
${MAKE} -C have DESTDIR=${PWD}/.dist/${DISTNAME}/have dist
|
2024-01-10 18:33:55 +01:00
|
|
|
${MAKE} -C keys DESTDIR=${PWD}/.dist/${DISTNAME}/keys dist
|
2022-10-31 23:53:16 +01:00
|
|
|
${MAKE} -C regress DESTDIR=${PWD}/.dist/${DISTNAME}/regress dist
|
2022-07-04 15:44:38 +02:00
|
|
|
cd .dist/ && tar zcf ../$@ ${DISTNAME}
|
|
|
|
rm -rf .dist/
|
2023-06-08 16:43:29 +02:00
|
|
|
|
|
|
|
# -- dependencies --
|
|
|
|
|
|
|
|
-include config.d
|
2023-06-23 23:03:24 +02:00
|
|
|
-include crypto.d
|
2023-06-08 16:43:29 +02:00
|
|
|
-include dirs.d
|
|
|
|
-include fcgi.d
|
2023-06-23 23:03:24 +02:00
|
|
|
-include ge.d
|
2023-06-08 16:43:29 +02:00
|
|
|
-include gg.d
|
|
|
|
-include gmid.d
|
|
|
|
-include iri.d
|
|
|
|
-include log.d
|
|
|
|
-include logger.d
|
|
|
|
-include mime.d
|
|
|
|
-include proc.d
|
|
|
|
-include proxy.d
|
|
|
|
-include puny.d
|
|
|
|
-include sandbox.d
|
|
|
|
-include server.d
|
2023-07-25 18:11:01 +02:00
|
|
|
-include titan.d
|
2023-06-08 16:43:29 +02:00
|
|
|
-include utf8.d
|
|
|
|
-include utils.d
|
|
|
|
-include y.tab.d
|