Blame


1 83f0f95a 2022-09-29 op #!/bin/sh
2 83f0f95a 2022-09-29 op #
3 83f0f95a 2022-09-29 op # Copyright (c) 2014, 2015, 2016 Ingo Schwarze <schwarze@openbsd.org>
4 83f0f95a 2022-09-29 op # Copyright (c) 2017, 2018 Kristaps Dzonsons <kristaps@bsd.lv>
5 83f0f95a 2022-09-29 op # Copyright (c) 2022 Omar Polo <op@omarpolo.com>
6 83f0f95a 2022-09-29 op #
7 83f0f95a 2022-09-29 op # Permission to use, copy, modify, and distribute this software for any
8 83f0f95a 2022-09-29 op # purpose with or without fee is hereby granted, provided that the above
9 83f0f95a 2022-09-29 op # copyright notice and this permission notice appear in all copies.
10 83f0f95a 2022-09-29 op #
11 83f0f95a 2022-09-29 op # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 83f0f95a 2022-09-29 op # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 83f0f95a 2022-09-29 op # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 83f0f95a 2022-09-29 op # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 83f0f95a 2022-09-29 op # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 83f0f95a 2022-09-29 op # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 83f0f95a 2022-09-29 op # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 83f0f95a 2022-09-29 op
19 83f0f95a 2022-09-29 op set -e
20 83f0f95a 2022-09-29 op
21 ba0dbc93 2023-04-15 op RELEASE=no
22 83f0f95a 2022-09-29 op
23 83f0f95a 2022-09-29 op usage()
24 83f0f95a 2022-09-29 op {
25 83f0f95a 2022-09-29 op echo "usage: $0 [--help] [--prefix=prefix] [OPTION=VALUE...]" >&2
26 83f0f95a 2022-09-29 op exit 1
27 83f0f95a 2022-09-29 op }
28 83f0f95a 2022-09-29 op
29 83f0f95a 2022-09-29 op if command -v yacc 2>/dev/null >&2; then
30 83f0f95a 2022-09-29 op YACC=yacc
31 83f0f95a 2022-09-29 op elif command -v bison 2>/dev/null >&2; then
32 83f0f95a 2022-09-29 op YACC=bison
33 83f0f95a 2022-09-29 op else
34 83f0f95a 2022-09-29 op # assume yacc by default. Make will fail building parse.y if
35 83f0f95a 2022-09-29 op # not from a release tarball, but at least it'll have a decent
36 83f0f95a 2022-09-29 op # error message.
37 83f0f95a 2022-09-29 op YACC=yacc
38 83f0f95a 2022-09-29 op fi
39 83f0f95a 2022-09-29 op
40 83f0f95a 2022-09-29 op if command -v pkg-config 2>/dev/null >&2; then
41 83f0f95a 2022-09-29 op pkgconfig=pkg-config
42 83f0f95a 2022-09-29 op else
43 83f0f95a 2022-09-29 op pkgconfig=
44 83f0f95a 2022-09-29 op fi
45 83f0f95a 2022-09-29 op
46 83f0f95a 2022-09-29 op conf=
47 83f0f95a 2022-09-29 op user=
48 83f0f95a 2022-09-29 op sock=
49 83f0f95a 2022-09-29 op while [ $# -gt 0 ]; do
50 83f0f95a 2022-09-29 op key="${1%%=*}"
51 83f0f95a 2022-09-29 op val="${1#*=}"
52 83f0f95a 2022-09-29 op
53 83f0f95a 2022-09-29 op if [ "$key" = --help ]; then
54 83f0f95a 2022-09-29 op usage
55 83f0f95a 2022-09-29 op fi
56 83f0f95a 2022-09-29 op
57 83f0f95a 2022-09-29 op if [ "$key" = --prefix ]; then
58 83f0f95a 2022-09-29 op key=PREFIX
59 83f0f95a 2022-09-29 op if [ "$1" = --prefix ]; then # no =, look at next arg
60 83f0f95a 2022-09-29 op if !shift 2>&1 >/dev/null; then
61 83f0f95a 2022-09-29 op echo "$0: missing value for --prefix" >&2
62 83f0f95a 2022-09-29 op exit 1
63 83f0f95a 2022-09-29 op fi
64 83f0f95a 2022-09-29 op val="$1"
65 83f0f95a 2022-09-29 op fi
66 83f0f95a 2022-09-29 op fi
67 83f0f95a 2022-09-29 op
68 83f0f95a 2022-09-29 op if [ "$1" = "$key" ]; then
69 83f0f95a 2022-09-29 op echo "$0: invalid key-value: $1" >&2
70 83f0f95a 2022-09-29 op exit 1
71 83f0f95a 2022-09-29 op fi
72 83f0f95a 2022-09-29 op
73 83f0f95a 2022-09-29 op case "$key" in
74 83f0f95a 2022-09-29 op CC)
75 83f0f95a 2022-09-29 op CC="$val" ;;
76 83f0f95a 2022-09-29 op CFLAGS)
77 83f0f95a 2022-09-29 op CFLAGS="$val" ;;
78 83f0f95a 2022-09-29 op CONF)
79 83f0f95a 2022-09-29 op conf="$val" ;;
80 83f0f95a 2022-09-29 op LDADD)
81 83f0f95a 2022-09-29 op LDADD="$val" ;;
82 83f0f95a 2022-09-29 op LDADD_IMSG)
83 83f0f95a 2022-09-29 op LDADD_IMSG="$val" ;;
84 83f0f95a 2022-09-29 op LDADD_LIBEVENT)
85 83f0f95a 2022-09-29 op LDADD_LIBEVENT="$val" ;;
86 83f0f95a 2022-09-29 op LDADD_LIBSOCKET)
87 83f0f95a 2022-09-29 op LDADD_LIBSOCKET="$val" ;;
88 83f0f95a 2022-09-29 op PKG_CONFIG)
89 83f0f95a 2022-09-29 op pkgconfig="$val" ;;
90 83f0f95a 2022-09-29 op SOCK)
91 83f0f95a 2022-09-29 op sock="$sock" ;;
92 83f0f95a 2022-09-29 op USER)
93 83f0f95a 2022-09-29 op user="$val" ;;
94 83f0f95a 2022-09-29 op YACC)
95 83f0f95a 2022-09-29 op YACC="$val" ;;
96 83f0f95a 2022-09-29 op esac
97 83f0f95a 2022-09-29 op
98 83f0f95a 2022-09-29 op shift
99 83f0f95a 2022-09-29 op done
100 83f0f95a 2022-09-29 op
101 83f0f95a 2022-09-29 op CDIAGFLAGS=
102 83f0f95a 2022-09-29 op CDIAGFLAGS="${CDIAGFLAGS} -Wall -Wextra -Wpointer-arith -Wuninitialized"
103 83f0f95a 2022-09-29 op CDIAGFLAGS="${CDIAGFLAGS} -Wstrict-prototypes -Wmissing-prototypes -Wunused"
104 83f0f95a 2022-09-29 op CDIAGFLAGS="${CDIAGFLAGS} -Wsign-compare -Wshadow -Wno-unused-parameter"
105 83f0f95a 2022-09-29 op CDIAGFLAGS="${CDIAGFLAGS} -Wno-missing-field-initializers"
106 83f0f95a 2022-09-29 op CDIAGFLAGS="${CDIAGFLAGS} -Wno-pointer-sign"
107 83f0f95a 2022-09-29 op
108 83f0f95a 2022-09-29 op # don't ship releases with -Werror
109 83f0f95a 2022-09-29 op test "$RELEASE" = no && CDIAGFLAGS="${CDIAGFLAGS} -Werror"
110 83f0f95a 2022-09-29 op
111 83f0f95a 2022-09-29 op CFLAGS="${CFLAGS:--O2 -pipe} ${CDIAGFLAGS}"
112 83f0f95a 2022-09-29 op CC="${CC:-cc}"
113 83f0f95a 2022-09-29 op LIBS="${LIBS:-}"
114 83f0f95a 2022-09-29 op LDFLAGS="${LDFLAGS:-}"
115 83f0f95a 2022-09-29 op
116 83f0f95a 2022-09-29 op HOSTCC="${HOSTCC:-${CC}}"
117 83f0f95a 2022-09-29 op HOSTCFLAGS="${HOSTCFLAGS:-${CFLAGS}}"
118 83f0f95a 2022-09-29 op
119 83f0f95a 2022-09-29 op echo "running configure for \`template':" >&2
120 83f0f95a 2022-09-29 op (cd ./template && ./configure CC="$HOSTCC" CFLAGS="$HOSTCFLAGS" YACC="$YACC")
121 83f0f95a 2022-09-29 op echo "returning to the configure for \`galileo':" >&2
122 83f0f95a 2022-09-29 op
123 83f0f95a 2022-09-29 op CFLAGS="${CFLAGS} -I. -Itemplate"
124 c353c651 2022-09-30 op test -n "$conf" && CFLAGS="${CFLAGS} -DGALILEO_CONF=\"\\\"$conf\\\"\""
125 c353c651 2022-09-30 op test -n "$user" && CFLAGS="${CFLAGS} -DGALILEO_USER=\"\\\"$user\\\"\""
126 c353c651 2022-09-30 op test -n "$sock" && CFLAGS="${CFLAGS} -DGALILEO_SOCK=\"\\\"$conf\\\"\""
127 83f0f95a 2022-09-29 op
128 83f0f95a 2022-09-29 op [ -w config.log ] && mv config.log config.log.old
129 83f0f95a 2022-09-29 op
130 83f0f95a 2022-09-29 op exec 3> config.log
131 83f0f95a 2022-09-29 op echo "config.log: writing..."
132 83f0f95a 2022-09-29 op
133 83f0f95a 2022-09-29 op COMPATS=
134 83f0f95a 2022-09-29 op
135 83f0f95a 2022-09-29 op HAVE_ACCEPT4=
136 83f0f95a 2022-09-29 op HAVE_ASR_RUN=
137 83f0f95a 2022-09-29 op HAVE_BUFFEREVENT_READ_PRESSURE_CB=
138 1066c216 2023-07-02 op HAVE_ENDIAN=0
139 83f0f95a 2022-09-29 op HAVE_ERR=
140 83f0f95a 2022-09-29 op HAVE_EVENT_ASR_RUN=
141 83f0f95a 2022-09-29 op HAVE_FREEZERO=
142 83f0f95a 2022-09-29 op HAVE_GETDTABLECOUNT=
143 83f0f95a 2022-09-29 op HAVE_GETDTABLESIZE=
144 83f0f95a 2022-09-29 op HAVE_GETEXECNAME=
145 83f0f95a 2022-09-29 op HAVE_GETPROGNAME=
146 83f0f95a 2022-09-29 op HAVE_IMSG=
147 83f0f95a 2022-09-29 op HAVE_LIBEVENT=
148 83f0f95a 2022-09-29 op HAVE_LIBEVENT2=
149 1066c216 2023-07-02 op HAVE_MACHINE_ENDIAN=0
150 83f0f95a 2022-09-29 op HAVE_PLEDGE=
151 83f0f95a 2022-09-29 op HAVE_REALLOCARRAY=
152 83f0f95a 2022-09-29 op HAVE_RECALLOCARRAY=
153 83f0f95a 2022-09-29 op HAVE_SETGROUPS=
154 83f0f95a 2022-09-29 op HAVE_SETPROCTITLE=
155 e2764fac 2022-09-30 op HAVE_SETRESGID=
156 e2764fac 2022-09-30 op HAVE_SETRESUID=
157 83f0f95a 2022-09-29 op HAVE_STRLCAT=
158 83f0f95a 2022-09-29 op HAVE_STRLCPY=
159 83f0f95a 2022-09-29 op HAVE_STRTONUM=
160 1066c216 2023-07-02 op HAVE_SYS_ENDIAN=0
161 83f0f95a 2022-09-29 op HAVE_SYS_QUEUE=
162 83f0f95a 2022-09-29 op HAVE_SYS_TREE=
163 83f0f95a 2022-09-29 op HAVE_UNVEIL=
164 83f0f95a 2022-09-29 op HAVE_VASPRINTF=
165 66e7e5ec 2022-11-11 op HAVE_WAIT_ANY=
166 83f0f95a 2022-09-29 op HAVE___PROGNAME=
167 83f0f95a 2022-09-29 op
168 83f0f95a 2022-09-29 op # singletest name var extra-cflags extra-libs msg
169 83f0f95a 2022-09-29 op singletest() {
170 83f0f95a 2022-09-29 op msg="$5"
171 83f0f95a 2022-09-29 op if [ -z "$msg" ]; then
172 83f0f95a 2022-09-29 op if [ -n "$3" ]; then
173 83f0f95a 2022-09-29 op msg=" ($3)"
174 83f0f95a 2022-09-29 op elif [ -n "$4" ]; then
175 83f0f95a 2022-09-29 op msg=" ($4)"
176 83f0f95a 2022-09-29 op fi
177 83f0f95a 2022-09-29 op elif [ "$msg" = no ]; then
178 83f0f95a 2022-09-29 op msg=""
179 83f0f95a 2022-09-29 op fi
180 83f0f95a 2022-09-29 op
181 83f0f95a 2022-09-29 op cat >&3 <<EOF
182 83f0f95a 2022-09-29 op ${1}: testing...
183 83f0f95a 2022-09-29 op $CC tests/${1}.c -Werror $3 -o test-$1 $LDFLAGS $4
184 83f0f95a 2022-09-29 op EOF
185 83f0f95a 2022-09-29 op if $CC tests/${1}.c -Werror $3 -o test-$1 $LDFLAGS $4 >&3 2>&3; then
186 83f0f95a 2022-09-29 op rm -f test-${1} test-${1}.d
187 83f0f95a 2022-09-29 op
188 83f0f95a 2022-09-29 op echo "${1}: $CC$msg succeeded" >&3
189 83f0f95a 2022-09-29 op echo "${1}$msg: yes"
190 83f0f95a 2022-09-29 op echo >&3
191 83f0f95a 2022-09-29 op
192 83f0f95a 2022-09-29 op return 0
193 83f0f95a 2022-09-29 op fi
194 83f0f95a 2022-09-29 op
195 83f0f95a 2022-09-29 op echo "${1}: $CC$msg failed with $?" >&3
196 83f0f95a 2022-09-29 op echo "${1}$msg: no"
197 83f0f95a 2022-09-29 op echo >&3
198 83f0f95a 2022-09-29 op
199 83f0f95a 2022-09-29 op return 1
200 83f0f95a 2022-09-29 op }
201 83f0f95a 2022-09-29 op
202 83f0f95a 2022-09-29 op # deptest name var
203 83f0f95a 2022-09-29 op deptest() {
204 83f0f95a 2022-09-29 op if singletest "$1" "$2" "${CFLAGS}" "${LIBS}" no; then
205 83f0f95a 2022-09-29 op eval HAVE_${2}=1
206 83f0f95a 2022-09-29 op return 0
207 83f0f95a 2022-09-29 op fi
208 83f0f95a 2022-09-29 op
209 83f0f95a 2022-09-29 op if [ -f compat/${1}.c ]; then
210 83f0f95a 2022-09-29 op COMPATS="compat/${1}.c $COMPATS"
211 83f0f95a 2022-09-29 op fi
212 83f0f95a 2022-09-29 op
213 83f0f95a 2022-09-29 op eval HAVE_${2}=0
214 83f0f95a 2022-09-29 op return 1
215 83f0f95a 2022-09-29 op }
216 83f0f95a 2022-09-29 op
217 83f0f95a 2022-09-29 op # runtest name var extra-cflags extra-libs pkgconfig-name
218 83f0f95a 2022-09-29 op runtest() {
219 83f0f95a 2022-09-29 op if singletest "$1" "$2" "" ""; then
220 83f0f95a 2022-09-29 op eval HAVE_${2}=1
221 83f0f95a 2022-09-29 op return 0
222 83f0f95a 2022-09-29 op fi
223 83f0f95a 2022-09-29 op
224 83f0f95a 2022-09-29 op if [ -n "$3" -o -n "$4" ]; then
225 83f0f95a 2022-09-29 op echo "retrying with ${3+$3 }$4" >&3
226 83f0f95a 2022-09-29 op if singletest "$1" "$2" "$3" "$4"; then
227 83f0f95a 2022-09-29 op if [ -n "$3" ]; then
228 83f0f95a 2022-09-29 op CFLAGS="$CFLAGS $3"
229 83f0f95a 2022-09-29 op fi
230 83f0f95a 2022-09-29 op if [ -n "${4}" ]; then
231 83f0f95a 2022-09-29 op LIBS="$LIBS $4"
232 83f0f95a 2022-09-29 op fi
233 83f0f95a 2022-09-29 op eval HAVE_${2}=1
234 83f0f95a 2022-09-29 op return 0
235 83f0f95a 2022-09-29 op fi
236 83f0f95a 2022-09-29 op fi
237 83f0f95a 2022-09-29 op
238 83f0f95a 2022-09-29 op if [ -n "$5" -a -n "$pkgconfig" ]; then
239 83f0f95a 2022-09-29 op if $pkgconfig "$5"; then
240 83f0f95a 2022-09-29 op cflags="$($pkgconfig --cflags "$5")"
241 83f0f95a 2022-09-29 op ldflags="$($pkgconfig --libs "$5")"
242 83f0f95a 2022-09-29 op echo "retrying with pkg-config" >&3
243 83f0f95a 2022-09-29 op if singletest "$1" "$2" "$3" "$cflags" "$ldflags"; then
244 83f0f95a 2022-09-29 op CFLAGS="$CFLAGS $cflags"
245 83f0f95a 2022-09-29 op LIBS="$LIBS $ldflags"
246 83f0f95a 2022-09-29 op eval HAVE_${2}=1
247 83f0f95a 2022-09-29 op return 0
248 83f0f95a 2022-09-29 op fi
249 83f0f95a 2022-09-29 op fi
250 83f0f95a 2022-09-29 op fi
251 83f0f95a 2022-09-29 op
252 83f0f95a 2022-09-29 op if [ -f compat/${1}.c ]; then
253 83f0f95a 2022-09-29 op COMPATS="compat/${1}.c $COMPATS"
254 83f0f95a 2022-09-29 op fi
255 83f0f95a 2022-09-29 op
256 83f0f95a 2022-09-29 op eval HAVE_${2}=0
257 83f0f95a 2022-09-29 op return 1
258 83f0f95a 2022-09-29 op }
259 83f0f95a 2022-09-29 op
260 08d22200 2022-09-30 op if singletest MMD _MMD -MMD >/dev/null; then
261 08d22200 2022-09-30 op CFLAGS="${CFLAGS} -MMD"
262 83f0f95a 2022-09-29 op echo "adding -MMD to CFLAGS" >&2
263 83f0f95a 2022-09-29 op echo "adding -MMD to CFLAGS" >&3
264 83f0f95a 2022-09-29 op fi
265 83f0f95a 2022-09-29 op
266 66e7e5ec 2022-11-11 op if ! singletest WAIT_ANY WAIT_ANY; then
267 66e7e5ec 2022-11-11 op CFLAGS="${CFLAGS} -DWAIT_ANY=-1"
268 1066c216 2023-07-02 op fi
269 1066c216 2023-07-02 op
270 1066c216 2023-07-02 op runtest endian ENDIAN || \
271 1066c216 2023-07-02 op runtest machine_endian MACHINE_ENDIAN || \
272 1066c216 2023-07-02 op runtest sys_endian SYS_ENDIAN || true
273 1066c216 2023-07-02 op
274 1066c216 2023-07-02 op if [ "${HAVE_ENDIAN}" -eq 0 -a \
275 1066c216 2023-07-02 op "${HAVE_SYS_ENDIAN}" -eq 0 -a \
276 1066c216 2023-07-02 op "${HAVE_MACHINE_ENDIAN}" -eq 0 ]; then
277 1066c216 2023-07-02 op echo "FATAL: no endian header found" 1>&2
278 1066c216 2023-07-02 op echo "FATAL: no endian header found" 1>&3
279 1066c216 2023-07-02 op exit 1
280 66e7e5ec 2022-11-11 op fi
281 66e7e5ec 2022-11-11 op
282 83f0f95a 2022-09-29 op runtest accept4 ACCEPT4 -D_GNU_SOURCE || true
283 83f0f95a 2022-09-29 op runtest asr_run ASR_RUN "" "-lasr" || true
284 83f0f95a 2022-09-29 op runtest err ERR || true
285 83f0f95a 2022-09-29 op runtest freezero FREEZERO || true
286 83f0f95a 2022-09-29 op runtest getdtablecount GETDTABLECOUNT || true
287 83f0f95a 2022-09-29 op runtest getdtablesize GETDTABLESIZE || true
288 83f0f95a 2022-09-29 op runtest getexecname GETEXECNAME || true
289 83f0f95a 2022-09-29 op runtest getprogname GETPROGNAME || true
290 83f0f95a 2022-09-29 op runtest imsg IMSG "" "-lutil" libimsg || true
291 83f0f95a 2022-09-29 op runtest libevent LIBEVENT "" "-levent" libevent_core || true
292 83f0f95a 2022-09-29 op runtest libtls LIBTLS "" "-ltls" libtls || true
293 83f0f95a 2022-09-29 op runtest pledge PLEDGE || true
294 83f0f95a 2022-09-29 op runtest reallocarray REALLOCARRAY -D_OPENBSD_SOURCE || true
295 83f0f95a 2022-09-29 op runtest recallocarray RECALLOCARRAY -D_OPENBSD_SOURCE || true
296 83f0f95a 2022-09-29 op runtest setgroups SETGROUPS -D_BSD_SOURCE || true
297 83f0f95a 2022-09-29 op runtest setproctitle SETPROCTITLE || true
298 e2764fac 2022-09-30 op runtest setresgid SETRESGID -D_GNU_SOURCE || true
299 e2764fac 2022-09-30 op runtest setresuid SETRESUID -D_GNU_SOURCE || true
300 83f0f95a 2022-09-29 op runtest strlcat STRLCAT || true
301 83f0f95a 2022-09-29 op runtest strlcpy STRLCPY || true
302 83f0f95a 2022-09-29 op runtest strtonum STRTONUM || true
303 83f0f95a 2022-09-29 op runtest sys_queue SYS_QUEUE || true
304 83f0f95a 2022-09-29 op runtest sys_tree SYS_TREE || true
305 83f0f95a 2022-09-29 op runtest unveil UNVEIL || true
306 83f0f95a 2022-09-29 op runtest vasprintf VASPRINTF -D_GNU_SOURCE || true
307 83f0f95a 2022-09-29 op runtest __progname __PROGNAME || true
308 83f0f95a 2022-09-29 op
309 83f0f95a 2022-09-29 op deptest bufferevent_read_pressure_cb BEV_READ_PRESSURE || true
310 83f0f95a 2022-09-29 op deptest event_asr_run EVENT_ASR_RUN || true
311 83f0f95a 2022-09-29 op deptest libevent2 LIBEVENT2 || true
312 83f0f95a 2022-09-29 op
313 83f0f95a 2022-09-29 op # mandatory things:
314 83f0f95a 2022-09-29 op
315 83f0f95a 2022-09-29 op if [ "${HAVE_ACCEPT4}" -eq 0 ]; then
316 83f0f95a 2022-09-29 op echo "Fatal: missing accept4(2)" >&2
317 83f0f95a 2022-09-29 op echo "Fatal: missing accept4(2)" >&3
318 83f0f95a 2022-09-29 op exit 1
319 83f0f95a 2022-09-29 op fi
320 83f0f95a 2022-09-29 op
321 83f0f95a 2022-09-29 op if [ "${HAVE_ASR_RUN}" -eq 0 ]; then
322 83f0f95a 2022-09-29 op echo "Fatal: missing libasr" >&2
323 83f0f95a 2022-09-29 op echo "Fatal: missing libasr" >&3
324 83f0f95a 2022-09-29 op exit 1
325 83f0f95a 2022-09-29 op fi
326 83f0f95a 2022-09-29 op
327 83f0f95a 2022-09-29 op if [ "${HAVE_LIBEVENT}" -eq 0 ]; then
328 83f0f95a 2022-09-29 op echo "Fatal: missing libevent" >&2
329 83f0f95a 2022-09-29 op echo "Fatal: missing libevent" >&3
330 83f0f95a 2022-09-29 op exit 1
331 83f0f95a 2022-09-29 op fi
332 83f0f95a 2022-09-29 op
333 83f0f95a 2022-09-29 op if [ "${HAVE_LIBTLS}" -eq 0 ]; then
334 83f0f95a 2022-09-29 op echo "Fatal: missing libtls" >&2
335 83f0f95a 2022-09-29 op echo "Fatal: missing libtls" >&3
336 83f0f95a 2022-09-29 op exit 1
337 83f0f95a 2022-09-29 op fi
338 83f0f95a 2022-09-29 op
339 83f0f95a 2022-09-29 op if [ "${HAVE_SETGROUPS}" -eq 0 ]; then
340 83f0f95a 2022-09-29 op echo "Fatal: missing setgroups(2)" >&2
341 83f0f95a 2022-09-29 op echo "Fatal: missing setgroups(2)" >&3
342 83f0f95a 2022-09-29 op exit 1
343 83f0f95a 2022-09-29 op fi
344 83f0f95a 2022-09-29 op
345 83f0f95a 2022-09-29 op # things we can provide by ourselves:
346 83f0f95a 2022-09-29 op
347 1066c216 2023-07-02 op if [ "${HAVE_ENDIAN}" -eq 0 ]; then
348 1066c216 2023-07-02 op CFLAGS="-I compat/endian ${CFLAGS}"
349 1066c216 2023-07-02 op fi
350 1066c216 2023-07-02 op
351 83f0f95a 2022-09-29 op if [ "${HAVE_IMSG}" -eq 0 ]; then
352 83f0f95a 2022-09-29 op CFLAGS="-I compat/imsg ${CFLAGS}"
353 83f0f95a 2022-09-29 op COMPATS="compat/imsg/imsg.c compat/imsg/imsg-buffer.c ${COMPATS}"
354 83f0f95a 2022-09-29 op fi
355 83f0f95a 2022-09-29 op
356 83f0f95a 2022-09-29 op if [ "${HAVE_SYS_QUEUE}" -eq 0 -o "${HAVE_SYS_TREE}" -eq 0 ]; then
357 83f0f95a 2022-09-29 op CFLAGS="-I compat/sys ${CFLAGS}"
358 83f0f95a 2022-09-29 op fi
359 83f0f95a 2022-09-29 op
360 83f0f95a 2022-09-29 op if [ -n "${COMPATS}" ]; then
361 83f0f95a 2022-09-29 op CFLAGS="-I compat/ ${CFLAGS}"
362 83f0f95a 2022-09-29 op fi
363 83f0f95a 2022-09-29 op
364 83f0f95a 2022-09-29 op exec > config.h
365 83f0f95a 2022-09-29 op echo "config.h: writing..." >&2
366 83f0f95a 2022-09-29 op
367 83f0f95a 2022-09-29 op cat <<EOF
368 83f0f95a 2022-09-29 op #ifndef CONFIG_H
369 83f0f95a 2022-09-29 op #define CONFIG_H
370 83f0f95a 2022-09-29 op
371 83f0f95a 2022-09-29 op #ifdef __cplusplus
372 83f0f95a 2022-09-29 op # error "Do not use C++: this is a C application."
373 83f0f95a 2022-09-29 op #endif
374 83f0f95a 2022-09-29 op
375 83f0f95a 2022-09-29 op #define HAVE_ACCEPT4 ${HAVE_ACCEPT4}
376 83f0f95a 2022-09-29 op #define HAVE_ASR_RUN ${HAVE_ASR_RUN}
377 83f0f95a 2022-09-29 op #define HAVE_BUFFEREVENT_READ_PRESSURE_CB ${HAVE_BUFFEREVENT_READ_PRESSURE_CB}
378 1066c216 2023-07-02 op #define HAVE_ENDIAN ${HAVE_ENDIAN}
379 83f0f95a 2022-09-29 op #define HAVE_ERR ${HAVE_ERR}
380 83f0f95a 2022-09-29 op #define HAVE_EVENT_ASR_RUN ${HAVE_EVENT_ASR_RUN}
381 83f0f95a 2022-09-29 op #define HAVE_FREEZERO ${HAVE_FREEZERO}
382 83f0f95a 2022-09-29 op #define HAVE_GETDTABLECOUNT ${HAVE_GETDTABLECOUNT}
383 83f0f95a 2022-09-29 op #define HAVE_GETDTABLESIZE ${HAVE_GETDTABLESIZE}
384 83f0f95a 2022-09-29 op #define HAVE_GETEXECNAME ${HAVE_GETEXECNAME}
385 83f0f95a 2022-09-29 op #define HAVE_GETPROGNAME ${HAVE_GETPROGNAME}
386 83f0f95a 2022-09-29 op #define HAVE_IMSG ${HAVE_IMSG}
387 83f0f95a 2022-09-29 op #define HAVE_LIBEVENT ${HAVE_LIBEVENT}
388 83f0f95a 2022-09-29 op #define HAVE_LIBEVENT2 ${HAVE_LIBEVENT2}
389 1066c216 2023-07-02 op #define HAVE_MACHINE_ENDIAN ${HAVE_MACHINE_ENDIAN}
390 83f0f95a 2022-09-29 op #define HAVE_PLEDGE ${HAVE_PLEDGE}
391 83f0f95a 2022-09-29 op #define HAVE_REALLOCARRAY ${HAVE_REALLOCARRAY}
392 83f0f95a 2022-09-29 op #define HAVE_RECALLOCARRAY ${HAVE_RECALLOCARRAY}
393 83f0f95a 2022-09-29 op #define HAVE_SETGROUPS ${HAVE_SETGROUPS}
394 83f0f95a 2022-09-29 op #define HAVE_SETPROCTITLE ${HAVE_SETPROCTITLE}
395 e2764fac 2022-09-30 op #define HAVE_SETRESGID ${HAVE_SETRESGID}
396 e2764fac 2022-09-30 op #define HAVE_SETRESUID ${HAVE_SETRESUID}
397 83f0f95a 2022-09-29 op #define HAVE_STRLCAT ${HAVE_STRLCAT}
398 83f0f95a 2022-09-29 op #define HAVE_STRLCPY ${HAVE_STRLCPY}
399 83f0f95a 2022-09-29 op #define HAVE_STRTONUM ${HAVE_STRTONUM}
400 1066c216 2023-07-02 op #define HAVE_SYS_ENDIAN ${HAVE_SYS_ENDIAN}
401 83f0f95a 2022-09-29 op #define HAVE_SYS_QUEUE ${HAVE_SYS_QUEUE}
402 83f0f95a 2022-09-29 op #define HAVE_SYS_TREE ${HAVE_SYS_TREE}
403 83f0f95a 2022-09-29 op #define HAVE_UNVEIL ${HAVE_UNVEIL}
404 83f0f95a 2022-09-29 op #define HAVE_VASPRINTF ${HAVE_VASPRINTF}
405 83f0f95a 2022-09-29 op #define HAVE___PROGNAME ${HAVE___PROGNAME}
406 83f0f95a 2022-09-29 op
407 83f0f95a 2022-09-29 op #endif
408 83f0f95a 2022-09-29 op EOF
409 83f0f95a 2022-09-29 op
410 83f0f95a 2022-09-29 op exec > config.mk
411 83f0f95a 2022-09-29 op echo "config.mk: writing..." >&2
412 83f0f95a 2022-09-29 op
413 83f0f95a 2022-09-29 op cat <<EOF
414 83f0f95a 2022-09-29 op CC= ${CC}
415 83f0f95a 2022-09-29 op CFLAGS= ${CFLAGS}
416 83f0f95a 2022-09-29 op LIBS= ${LIBS}
417 83f0f95a 2022-09-29 op LDFLAGS= ${LDFLAGS}
418 83f0f95a 2022-09-29 op YACC= ${YACC}
419 83f0f95a 2022-09-29 op
420 83f0f95a 2022-09-29 op COMPATS= ${COMPATS}
421 83f0f95a 2022-09-29 op
422 83f0f95a 2022-09-29 op INSTALL= install
423 83f0f95a 2022-09-29 op INSTALL_PROGRAM=\${INSTALL} -m 0555
424 83f0f95a 2022-09-29 op INSTALL_LIB= \${INSTALL} -m 0444
425 83f0f95a 2022-09-29 op INSTALL_MAN= \${INSTALL} -m 0444
426 83f0f95a 2022-09-29 op INSTALL_DATA= \${INSTALL} -m 0444
427 83f0f95a 2022-09-29 op
428 83f0f95a 2022-09-29 op EOF
429 83f0f95a 2022-09-29 op
430 83f0f95a 2022-09-29 op echo "done!" >&2
431 83f0f95a 2022-09-29 op
432 83f0f95a 2022-09-29 op echo >&2
433 83f0f95a 2022-09-29 op echo "Now run \`make' to compile." >&2
434 83f0f95a 2022-09-29 op echo >&2