Blob


1 # Copyright (c) 2022 Omar Polo <op@omarpolo.com>
2 # Copyright (c) 2011, 2013-2022 Ingo Schwarze <schwarze@openbsd.org>
3 # Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
4 #
5 # Permission to use, copy, modify, and distribute this software for any
6 # purpose with or without fee is hereby granted, provided that the above
7 # copyright notice and this permission notice appear in all copies.
8 #
9 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 # tests to run as a port of the regression suite. Leave empty to run
18 # all.
19 TESTS=
21 TESTSRCS = have/err.c \
22 have/explicit_bzero.c \
23 have/freezero.c \
24 have/getdtablecount.c \
25 have/getdtablesize.c \
26 have/getprogname.c \
27 have/imsg.c \
28 have/landlock.c \
29 have/libevent.c \
30 have/libevent2.c \
31 have/libtls.c \
32 have/noop.c \
33 have/openssl.c \
34 have/pr_set_name.c \
35 have/program_invocation_short_name.c \
36 have/queue_h.c \
37 have/reallocarray.c \
38 have/recallocarray.c \
39 have/setproctitle.c \
40 have/strlcat.c \
41 have/strlcpy.c \
42 have/strtonum.c \
43 have/tree_h.c \
44 have/vasprintf.c
46 COMPATS = compat/err.c \
47 compat/explicit_bzero.c \
48 compat/freezero.c \
49 compat/getdtablecount.c \
50 compat/getdtablesize.c \
51 compat/getprogname.c \
52 compat/imsg-buffer.c \
53 compat/imsg.c \
54 compat/imsg.h \
55 compat/queue.h \
56 compat/reallocarray.c \
57 compat/recallocarray.c \
58 compat/setproctitle.c \
59 compat/strlcat.c \
60 compat/strlcpy.c \
61 compat/strtonum.c \
62 compat/tree.h \
63 compat/vasprintf.c
65 GMID_SRCS = dirs.c \
66 fcgi.c \
67 gmid.c \
68 iri.c \
69 log.c \
70 mime.c \
71 proxy.c \
72 puny.c \
73 sandbox.c \
74 server.c \
75 utf8.c \
76 utils.c \
77 y.tab.c \
79 GMID_OBJS = ${GMID_SRCS:.c=.o} ${COBJS}
81 GE_SRCS = dirs.c \
82 fcgi.c \
83 ge.c \
84 iri.c \
85 log.c \
86 mime.c \
87 proxy.c \
88 puny.c \
89 sandbox.c \
90 server.c \
91 utf8.c \
92 utils.c
94 GE_OBJS = ${GE_SRCS:.c=.o} ${COBJS}
96 GG_SRCS = gg.c \
97 iri.c \
98 utf8.c
100 GG_OBJS = ${GG_SRCS:.c=.o} ${COBJS}
102 SRCS = gmid.h \
103 landlock_shim.h \
104 parse.y \
105 ${GMID_SRCS} \
106 ${GE_SRCS} \
107 ${GG_SRCS}
109 REGRESSFILES = regress/Makefile \
110 regress/env \
111 regress/err \
112 regress/example.mime.types \
113 regress/fcgi-test.c \
114 regress/fill-file.c \
115 regress/hello \
116 regress/invalid \
117 regress/iri_test.c \
118 regress/lib.sh \
119 regress/max-length-reply \
120 regress/puny-test.c \
121 regress/regress \
122 regress/serve-bigfile \
123 regress/sha \
124 regress/slow \
125 regress/tests.sh \
126 regress/valid.ext
128 EXTRAS = ChangeLog \
129 LICENSE \
130 Makefile \
131 Makefile.depend \
132 README.md \
133 configure \
134 configure.local.example \
135 ge.1 \
136 gg.1 \
137 gmid.8 \
138 gmid.conf.5
140 CONTRIB = contrib/Dockerfile \
141 contrib/gencert \
142 contrib/gmid.service \
143 contrib/gmid.sysusers \
144 contrib/mime.types \
145 contrib/README \
146 contrib/renew-certs \
147 contrib/vim/ftdetect/gmid.vim \
148 contrib/vim/ftplugin/gmid.vim \
149 contrib/vim/indent/gmid.vim \
150 contrib/vim/syntax_checkers/gmid/gmid.vim \
151 contrib/vim/syntax/gmid.vim
153 DISTFILES = ${EXTRAS} \
154 ${CONTRIB} \
155 ${COMPATS} \
156 ${REGRESSFILES} \
157 ${SRCS} \
158 ${TESTSRCS}
160 DISTNAME = gmid-${VERSION}
162 all: Makefile.local gmid ge gg
163 .PHONY: all static clean cleanall test regress install
165 Makefile.local config.h: configure ${TESTSRCS}
166 @echo "$@ is out of date; please run ./configure"
167 @exit 1
169 include Makefile.local
170 include Makefile.depend
172 y.tab.c: parse.y
173 ${YACC} -b y parse.y
175 gmid: ${GMID_OBJS}
176 ${CC} ${GMID_OBJS} -o $@ ${LDFLAGS}
178 ge: ${GE_OBJS}
179 ${CC} ${GE_OBJS} -o $@ ${LDFLAGS}
181 gg: ${GG_OBJS}
182 ${CC} ${GG_OBJS} -o $@ ${LDFLAGS}
184 static: ${GMID_OBJS} ${GE_OBJS} ${GG_OBJS}
185 ${CC} ${GMID_OBJS} -o gmid ${LDFLAGS} ${STATIC}
186 ${CC} ${GG_OBJS} -o ge ${LDFLAGS} ${STATIC}
187 ${CC} ${GG_OBJS} -o gg ${LDFLAGS} ${STATIC}
189 clean:
190 rm -f *.o compat/*.o y.tab.c y.tab.h y.output gmid ge gg
191 rm -f compile_flags.txt
192 ${MAKE} -C regress clean
194 distclean: clean
195 rm -f Makefile.local config.h config.h.old config.log config.log.old
197 test: regress
198 regress: all
199 ${MAKE} 'TESTS=${TESTS}' -C regress all
201 install: gmid gg ge
202 mkdir -p ${DESTDIR}${BINDIR}
203 mkdir -p ${DESTDIR}${MANDIR}/man1
204 mkdir -p ${DESTDIR}${MANDIR}/man5
205 mkdir -p ${DESTDIR}${MANDIR}/man8
206 ${INSTALL_PROGRAM} gmid ${DESTDIR}${BINDIR}
207 ${INSTALL_PROGRAM} gg ${DESTDIR}${BINDIR}
208 ${INSTALL_PROGRAM} ge ${DESTDIR}${BINDIR}
209 ${INSTALL_MAN} gmid.8 ${DESTDIR}${MANDIR}/man8
210 ${INSTALL_MAN} gmid.conf.5 ${DESTDIR}${MANDIR}/man5
211 ${INSTALL_MAN} ge.1 ${DESTDIR}${MANDIR}/man1
212 ${INSTALL_MAN} gg.1 ${DESTDIR}${MANDIR}/man1
214 uninstall:
215 rm ${DESTDIR}${BINDIR}/ge
216 rm ${DESTDIR}${BINDIR}/gg
217 rm ${DESTDIR}${BINDIR}/gmid
218 rm ${DESTDIR}${MANDIR}/man1/ge.1
219 rm ${DESTDIR}${MANDIR}/man1/gg.1
220 rm ${DESTDIR}${MANDIR}/man5/gmid.conf.5
221 rm ${DESTDIR}${MANDIR}/man8/gmid.8
223 # make sure we pass -o to ${CC}. OpenBSD default suffix rule doesn't
224 .SUFFIXES: .c .o
225 .c.o:
226 ${CC} ${CFLAGS} -c $< -o $@
228 depend: config.h y.tab.c
229 mkdep -f Makefile.tmp1 ${CFLAGS} ${GE_SRCS} ${GG_SRCS} ${GMID_SRCS} \
230 ${COBJSx:.o=.c}
231 perl -e 'undef $$/; $$_ = <>; s|/usr/include/\S+||g; \
232 s|\\\n||g; s| +| |g; s| $$||mg; print;' \
233 Makefile.tmp1 > Makefile.tmp2
234 rm Makefile.tmp1
235 mv Makefile.tmp2 Makefile.depend
237 dist: ${DISTNAME}.sha256
239 ${DISTNAME}.sha256: ${DISTNAME}.tar.gz
241 ${DISTNAME}.tar.gz: ${DISTFILES}
242 mkdir -p .dist/${DISTNAME}/
243 ${INSTALL} -m 0644 ${SRCS} ${EXTRAS} .dist/${DISTNAME}
244 cd .dist/${DISTNAME} && chmod 755 configure
245 mkdir -p .dist/${DISTNAME}/contrib
246 ${INSTALL} -m 0644 ${CONTRIB} .dist/${DISTNAME}/contrib
247 cd .dist/${DISTNAME}/contrib && chmod 755 gencert renew-certs
248 mkdir -p .dist/${DISTNAME}/compat
249 ${INSTALL} -m 0644 ${COMPATS} .dist/${DISTNAME}/compat
250 mkdir -p .dist/${DISTNAME}/have
251 ${INSTALL} -m 0644 ${TESTSRCS} .dist/${DISTNAME}/have
252 mkdir -p .dist/${DISTNAME}/regress
253 ${INSTALL} -m 0644 ${REGRESSFILES} .dist/${DISTNAME}/regress
254 cd .dist/${DISTNAME}/regress && chmod 755 env err hello invalid \
255 max-length-reply regress sha slow
256 cd .dist/ && tar zcf ../$@ ${DISTNAME}
257 rm -rf .dist/