Blame


1 f36fd90a 2022-07-09 op #! /bin/sh
2 f36fd90a 2022-07-09 op #
3 f36fd90a 2022-07-09 op # Copyright (c) 2014, 2015, 2016 Ingo Schwarze <schwarze@openbsd.org>
4 f36fd90a 2022-07-09 op # Copyright (c) 2017, 2018 Kristaps Dzonsons <kristaps@bsd.lv>
5 f36fd90a 2022-07-09 op #
6 f36fd90a 2022-07-09 op # Permission to use, copy, modify, and distribute this software for any
7 f36fd90a 2022-07-09 op # purpose with or without fee is hereby granted, provided that the above
8 f36fd90a 2022-07-09 op # copyright notice and this permission notice appear in all copies.
9 f36fd90a 2022-07-09 op #
10 f36fd90a 2022-07-09 op # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 f36fd90a 2022-07-09 op # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 f36fd90a 2022-07-09 op # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 f36fd90a 2022-07-09 op # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 f36fd90a 2022-07-09 op # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 f36fd90a 2022-07-09 op # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 f36fd90a 2022-07-09 op # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 f36fd90a 2022-07-09 op
18 f36fd90a 2022-07-09 op OCONFIGURE_VERSION="0.3.8"
19 f36fd90a 2022-07-09 op
20 f36fd90a 2022-07-09 op #
21 f36fd90a 2022-07-09 op # This script outputs two files: config.h and Makefile.configure.
22 f36fd90a 2022-07-09 op # It tries to read from configure.local, which contains predefined
23 f36fd90a 2022-07-09 op # values we won't autoconfigure.
24 f36fd90a 2022-07-09 op #
25 f36fd90a 2022-07-09 op # If you want to use configure with your project, have your GNUmakefile
26 f36fd90a 2022-07-09 op # or BSDmakefile---whichever---try to import/include Makefile.configure
27 f36fd90a 2022-07-09 op # at the beginning of the file.
28 f36fd90a 2022-07-09 op #
29 f36fd90a 2022-07-09 op # Like so (note no quotes, no period, etc.):
30 f36fd90a 2022-07-09 op #
31 f36fd90a 2022-07-09 op # include Makefile.configure
32 f36fd90a 2022-07-09 op #
33 f36fd90a 2022-07-09 op # If it exists, configure was run; otherwise, it wasn't.
34 f36fd90a 2022-07-09 op #
35 f36fd90a 2022-07-09 op # You'll probably want to change parts of this file. I've noted the
36 f36fd90a 2022-07-09 op # parts that you'll probably change in the section documentation.
37 f36fd90a 2022-07-09 op #
38 f36fd90a 2022-07-09 op # See https://github.com/kristapsdz/oconfigure for more.
39 f36fd90a 2022-07-09 op
40 f36fd90a 2022-07-09 op set -e
41 f36fd90a 2022-07-09 op
42 f36fd90a 2022-07-09 op # try to be helpful
43 f36fd90a 2022-07-09 op case "$1" in
44 f36fd90a 2022-07-09 op --help|-h)
45 f36fd90a 2022-07-09 op cat <<EOF
46 f36fd90a 2022-07-09 op \`configure' configures amused to adapt to many kinds of systems.
47 f36fd90a 2022-07-09 op
48 f36fd90a 2022-07-09 op Usage: $0 [-h] [--prefix=path] [VAR=VALUE]...
49 f36fd90a 2022-07-09 op
50 f36fd90a 2022-07-09 op The options are as follows:
51 f36fd90a 2022-07-09 op
52 f36fd90a 2022-07-09 op -h, --help print this help message
53 f36fd90a 2022-07-09 op
54 f36fd90a 2022-07-09 op --prefix=path equivalent to specifying the PREFIX variable, supported
55 f36fd90a 2022-07-09 op for compatibility with other common "configure" scripts.
56 f36fd90a 2022-07-09 op
57 f36fd90a 2022-07-09 op Variables available:
58 f36fd90a 2022-07-09 op
59 f36fd90a 2022-07-09 op LDADD generic linker flags
60 f36fd90a 2022-07-09 op LDADD_IMSG linker flags for libimsg
61 f36fd90a 2022-07-09 op LDADD_LIBEVENT linker flags for libevent
62 f36fd90a 2022-07-09 op LDADD_LIBEVENT2 linker flags for libevent2
63 f36fd90a 2022-07-09 op LDADD_LIBFLAC linker flags for libflac
64 f36fd90a 2022-07-09 op LDADD_LIBMPG123 linker flags for libmpg123
65 f36fd90a 2022-07-09 op LDADD_LIBOPUSFILE linker flags for libopusfile
66 f36fd90a 2022-07-09 op LDADD_LIBVORBISFILE linker flags for libvorbisfile
67 f36fd90a 2022-07-09 op LDADD_SNDIO linker flags for libsndio
68 f36fd90a 2022-07-09 op LDADD_LIBSOCKET linker flags for libsocket
69 f36fd90a 2022-07-09 op LDFLAGS extra linker flags
70 f36fd90a 2022-07-09 op CPPFLAGS C preprocessors flags
71 f36fd90a 2022-07-09 op DESTDIR destination directory
72 f36fd90a 2022-07-09 op PREFIX where to install files
73 f36fd90a 2022-07-09 op MANDIR where to install man pages (PREFIX/man)
74 f36fd90a 2022-07-09 op LIBDIR where to install libraries (PREFIX/lib)
75 f36fd90a 2022-07-09 op BINDIR where to install executables (PREFIX/bin)
76 f36fd90a 2022-07-09 op SHAREDIR where to install misc files (PREFIX/share)
77 f36fd90a 2022-07-09 op SBINDIR where to install system executables (PREFIX/sbin)
78 f36fd90a 2022-07-09 op INCLUDEDIR where to install header files (PREFIX/include)
79 f36fd90a 2022-07-09 op PKG_CONFIG path to the pkg-config program or empty to disable
80 f36fd90a 2022-07-09 op
81 cac555b6 2022-07-13 op Additionally, the following environment variables are used if set:
82 cac555b6 2022-07-13 op
83 cac555b6 2022-07-13 op CC the C compiler to use (defaults to cc, clang or gcc)
84 cac555b6 2022-07-13 op CFLAGS generic C compiler flags
85 cac555b6 2022-07-13 op
86 f36fd90a 2022-07-09 op EOF
87 f36fd90a 2022-07-09 op exit 0 ;;
88 f36fd90a 2022-07-09 op esac
89 f36fd90a 2022-07-09 op
90 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
91 f36fd90a 2022-07-09 op # Prepare for running: move aside previous configure runs.
92 f36fd90a 2022-07-09 op # Output file descriptor usage:
93 f36fd90a 2022-07-09 op # 1 (stdout): config.h or Makefile.configure
94 f36fd90a 2022-07-09 op # 2 (stderr): original stderr, usually to the console
95 f36fd90a 2022-07-09 op # 3: config.log
96 f36fd90a 2022-07-09 op # You DO NOT want to change this.
97 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
98 f36fd90a 2022-07-09 op
99 f36fd90a 2022-07-09 op [ -w config.log ] && mv config.log config.log.old
100 f36fd90a 2022-07-09 op [ -w config.h ] && mv config.h config.h.old
101 f36fd90a 2022-07-09 op
102 f36fd90a 2022-07-09 op exec 3> config.log
103 f36fd90a 2022-07-09 op echo "config.log: writing..."
104 f36fd90a 2022-07-09 op
105 f36fd90a 2022-07-09 op # GNU submake prints different output if invoked recursively, which
106 f36fd90a 2022-07-09 op # messes up CC and CFLAGS detection. Pass --no-print-directory if
107 f36fd90a 2022-07-09 op # we have a MAKELEVEL (GNU and FreeBSD make) and the argument is
108 f36fd90a 2022-07-09 op # allowed.
109 f36fd90a 2022-07-09 op
110 f36fd90a 2022-07-09 op MAKE_FLAGS=""
111 f36fd90a 2022-07-09 op
112 f36fd90a 2022-07-09 op if [ -n "${MAKELEVEL}" ]; then
113 f36fd90a 2022-07-09 op if [ "${MAKELEVEL}" -gt 0 ] ; then
114 f36fd90a 2022-07-09 op MAKE_FLAGS="--no-print-directory"
115 f36fd90a 2022-07-09 op echo "all:" | make ${MAKE_FLAGS} -sf - 2>/dev/null || MAKE_FLAGS=""
116 f36fd90a 2022-07-09 op fi
117 f36fd90a 2022-07-09 op fi
118 f36fd90a 2022-07-09 op
119 f36fd90a 2022-07-09 op if [ -n "$MAKE_FLAGS" ]; then
120 f36fd90a 2022-07-09 op echo "GNU submake detected: using --no-print-directory" 1>&2
121 f36fd90a 2022-07-09 op echo "GNU submake detected: using --no-print-directory" 1>&3
122 f36fd90a 2022-07-09 op fi
123 f36fd90a 2022-07-09 op
124 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
125 f36fd90a 2022-07-09 op # Initialize all variables here such that nothing can leak in from the
126 f36fd90a 2022-07-09 op # environment except for CC and CFLAGS, which we might have passed in.
127 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
128 f36fd90a 2022-07-09 op
129 f36fd90a 2022-07-09 op CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | make ${MAKE_FLAGS} -sf -`
130 f36fd90a 2022-07-09 op CFLAGS=`printf "all:\\n\\t@echo \\\$(CFLAGS)\\n" | make ${MAKE_FLAGS} -sf -`
131 f36fd90a 2022-07-09 op CFLAGS="${CFLAGS} -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes"
132 f36fd90a 2022-07-09 op CFLAGS="${CFLAGS} -Wmissing-declarations -Wno-unused-parameter"
133 f36fd90a 2022-07-09 op CFLAGS="${CFLAGS} -Wno-sign-compare"
134 f36fd90a 2022-07-09 op LDADD=
135 f36fd90a 2022-07-09 op LDADD_IMSG=
136 f36fd90a 2022-07-09 op LDADD_LIBEVENT=
137 f36fd90a 2022-07-09 op LDADD_LIBEVENT2=
138 f36fd90a 2022-07-09 op LDADD_LIB_FLAC=
139 f36fd90a 2022-07-09 op LDADD_LIB_MPG123=
140 f36fd90a 2022-07-09 op LDADD_LIB_VORBISFILE=
141 f36fd90a 2022-07-09 op LDADD_LIB_SNDIO=
142 f36fd90a 2022-07-09 op LDADD_LIB_SOCKET=
143 f36fd90a 2022-07-09 op LDADD_STATIC=
144 f36fd90a 2022-07-09 op CPPFLAGS=
145 f36fd90a 2022-07-09 op LDFLAGS=
146 f36fd90a 2022-07-09 op DESTDIR=
147 f36fd90a 2022-07-09 op PREFIX="/usr/local"
148 f36fd90a 2022-07-09 op BINDIR=
149 f36fd90a 2022-07-09 op SBINDIR=
150 f36fd90a 2022-07-09 op INCLUDEDIR=
151 f36fd90a 2022-07-09 op LIBDIR=
152 f36fd90a 2022-07-09 op MANDIR=
153 f36fd90a 2022-07-09 op SHAREDIR=
154 f36fd90a 2022-07-09 op INSTALL="install"
155 f36fd90a 2022-07-09 op INSTALL_PROGRAM=
156 f36fd90a 2022-07-09 op INSTALL_LIB=
157 f36fd90a 2022-07-09 op INSTALL_MAN=
158 f36fd90a 2022-07-09 op INSTALL_DATA=
159 f36fd90a 2022-07-09 op PKG_CONFIG=
160 f36fd90a 2022-07-09 op
161 f36fd90a 2022-07-09 op # SunOS sets "cc", but this doesn't exist.
162 f36fd90a 2022-07-09 op # It does have gcc, so try that instead.
163 f36fd90a 2022-07-09 op # Prefer clang, though.
164 f36fd90a 2022-07-09 op
165 f36fd90a 2022-07-09 op command -v ${CC} 2>/dev/null 1>&2 || {
166 f36fd90a 2022-07-09 op echo "${CC} not found: trying clang" 1>&2
167 f36fd90a 2022-07-09 op echo "${CC} not found: trying clang" 1>&3
168 f36fd90a 2022-07-09 op CC=clang
169 f36fd90a 2022-07-09 op command -v ${CC} 2>/dev/null 1>&2 || {
170 f36fd90a 2022-07-09 op echo "${CC} not found: trying gcc" 1>&2
171 f36fd90a 2022-07-09 op echo "${CC} not found: trying gcc" 1>&3
172 f36fd90a 2022-07-09 op CC=gcc
173 f36fd90a 2022-07-09 op command -v ${CC} 2>/dev/null 1>&2 || {
174 f36fd90a 2022-07-09 op echo "gcc not found: giving up" 1>&2
175 f36fd90a 2022-07-09 op echo "gcc not found: giving up" 1>&3
176 f36fd90a 2022-07-09 op exit 1
177 f36fd90a 2022-07-09 op }
178 f36fd90a 2022-07-09 op }
179 f36fd90a 2022-07-09 op }
180 f36fd90a 2022-07-09 op
181 f36fd90a 2022-07-09 op command -v pkg-config 2>/dev/null 1>&2 && {
182 f36fd90a 2022-07-09 op PKG_CONFIG=pkg-config
183 f36fd90a 2022-07-09 op echo "pkg-config found" 1>&2
184 f36fd90a 2022-07-09 op echo "pkg-config found" 1>&3
185 f36fd90a 2022-07-09 op } || {
186 f36fd90a 2022-07-09 op echo "pkg-config not found" 1>&2
187 f36fd90a 2022-07-09 op echo "pkg-config not found" 1>&3
188 f36fd90a 2022-07-09 op }
189 f36fd90a 2022-07-09 op
190 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
191 f36fd90a 2022-07-09 op # Allow certain variables to be overriden on the command line.
192 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
193 f36fd90a 2022-07-09 op
194 f36fd90a 2022-07-09 op while [ $# -gt 0 ]; do
195 f36fd90a 2022-07-09 op key=${1%%=*}
196 f36fd90a 2022-07-09 op val=${1#*=}
197 f36fd90a 2022-07-09 op
198 f36fd90a 2022-07-09 op if [ "$key" = "--prefix" ]; then
199 f36fd90a 2022-07-09 op key=PREFIX
200 f36fd90a 2022-07-09 op if [ "$1" = "--prefix" ]; then
201 f36fd90a 2022-07-09 op if ! shift 2>&1 >/dev/null; then
202 f36fd90a 2022-07-09 op echo "$0: missing value for --prefix" 1>&2
203 f36fd90a 2022-07-09 op exit 1
204 f36fd90a 2022-07-09 op fi
205 f36fd90a 2022-07-09 op val="$1"
206 f36fd90a 2022-07-09 op fi
207 f36fd90a 2022-07-09 op fi
208 f36fd90a 2022-07-09 op
209 f36fd90a 2022-07-09 op if [ "$1" = "$key" ]; then
210 f36fd90a 2022-07-09 op echo "$0: invalid key-value: $1" 1>&2
211 f36fd90a 2022-07-09 op exit 1
212 f36fd90a 2022-07-09 op fi
213 f36fd90a 2022-07-09 op
214 f36fd90a 2022-07-09 op shift
215 f36fd90a 2022-07-09 op
216 f36fd90a 2022-07-09 op case "$key" in
217 f36fd90a 2022-07-09 op LDADD)
218 f36fd90a 2022-07-09 op LDADD="$val" ;;
219 f36fd90a 2022-07-09 op LDADD_IMSG)
220 f36fd90a 2022-07-09 op LDADD_IMSG="$val" ;;
221 f36fd90a 2022-07-09 op LDADD_LIBEVENT)
222 f36fd90a 2022-07-09 op LDADD_LIBEVENT="$val" ;;
223 f36fd90a 2022-07-09 op LDADD_LIBEVENT2)
224 f36fd90a 2022-07-09 op LDADD_LIBEVENT2="$val" ;;
225 f36fd90a 2022-07-09 op LDADD_LIBFLAC)
226 f36fd90a 2022-07-09 op LDADD_LIBFLAC="$val" ;;
227 f36fd90a 2022-07-09 op LDADD_LIBMPG123)
228 f36fd90a 2022-07-09 op LDADD_LIBMPG123="$val" ;;
229 f36fd90a 2022-07-09 op LDADD_LIBOPUSFILE)
230 f36fd90a 2022-07-09 op LDADD_LIBOPUSFILE="$val" ;;
231 f36fd90a 2022-07-09 op LDADD_LIBVORBISFILE)
232 f36fd90a 2022-07-09 op LDADD_LIBVORBISFILE="$val" ;;
233 f36fd90a 2022-07-09 op LDADD_SNDIO)
234 f36fd90a 2022-07-09 op LDADD_SNDIO="$val" ;;
235 f36fd90a 2022-07-09 op LDADD_LIBSOCKET)
236 f36fd90a 2022-07-09 op LDADD_LIBSOCKET="$val" ;;
237 f36fd90a 2022-07-09 op LDFLAGS)
238 f36fd90a 2022-07-09 op LDFLAGS="$val" ;;
239 f36fd90a 2022-07-09 op CPPFLAGS)
240 f36fd90a 2022-07-09 op CPPFLAGS="$val" ;;
241 f36fd90a 2022-07-09 op DESTDIR)
242 f36fd90a 2022-07-09 op DESTDIR="$val" ;;
243 f36fd90a 2022-07-09 op PREFIX)
244 f36fd90a 2022-07-09 op PREFIX="$val" ;;
245 f36fd90a 2022-07-09 op MANDIR)
246 f36fd90a 2022-07-09 op MANDIR="$val" ;;
247 f36fd90a 2022-07-09 op LIBDIR)
248 f36fd90a 2022-07-09 op LIBDIR="$val" ;;
249 f36fd90a 2022-07-09 op BINDIR)
250 f36fd90a 2022-07-09 op BINDIR="$val" ;;
251 f36fd90a 2022-07-09 op SHAREDIR)
252 f36fd90a 2022-07-09 op SHAREDIR="$val" ;;
253 f36fd90a 2022-07-09 op SBINDIR)
254 f36fd90a 2022-07-09 op SBINDIR="$val" ;;
255 f36fd90a 2022-07-09 op INCLUDEDIR)
256 f36fd90a 2022-07-09 op INCLUDEDIR="$val" ;;
257 f36fd90a 2022-07-09 op PKG_CONFIG)
258 f36fd90a 2022-07-09 op PKG_CONFIG="$val" ;;
259 f36fd90a 2022-07-09 op *)
260 f36fd90a 2022-07-09 op echo "$0: invalid key: $key" 1>&2
261 f36fd90a 2022-07-09 op exit 1
262 f36fd90a 2022-07-09 op esac
263 f36fd90a 2022-07-09 op done
264 f36fd90a 2022-07-09 op
265 f36fd90a 2022-07-09 op
266 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
267 f36fd90a 2022-07-09 op # These are the values that will be pushed into config.h after we test
268 f36fd90a 2022-07-09 op # for whether they're supported or not.
269 f36fd90a 2022-07-09 op # Each of these must have a runtest(), below.
270 f36fd90a 2022-07-09 op # Please sort by alpha, for clarity.
271 f36fd90a 2022-07-09 op # You WANT to change this.
272 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
273 f36fd90a 2022-07-09 op
274 f36fd90a 2022-07-09 op HAVE_CAPSICUM=
275 f36fd90a 2022-07-09 op HAVE_ERR=
276 f36fd90a 2022-07-09 op HAVE_EXPLICIT_BZERO=
277 f36fd90a 2022-07-09 op HAVE_FLOCK=
278 f36fd90a 2022-07-09 op HAVE_FREEZERO=
279 f36fd90a 2022-07-09 op HAVE_GETDTABLECOUNT=
280 f36fd90a 2022-07-09 op HAVE_GETEXECNAME=
281 f36fd90a 2022-07-09 op HAVE_GETPROGNAME=
282 f36fd90a 2022-07-09 op HAVE_INFTIM=
283 f36fd90a 2022-07-09 op HAVE_IMSG=
284 f36fd90a 2022-07-09 op HAVE_LANDLOCK=
285 f36fd90a 2022-07-09 op HAVE_LIBEVENT=
286 f36fd90a 2022-07-09 op HAVE_LIBEVENT2=0 # may not be checked, set to zero
287 f36fd90a 2022-07-09 op HAVE_LIB_FLAC=
288 f36fd90a 2022-07-09 op HAVE_LIB_MPG123=
289 f36fd90a 2022-07-09 op HAVE_LIB_OPUSFILE=
290 f36fd90a 2022-07-09 op HAVE_LIB_VORBISFILE=
291 f36fd90a 2022-07-09 op HAVE_LIB_SNDIO=
292 f36fd90a 2022-07-09 op HAVE_LIB_SOCKET=
293 f36fd90a 2022-07-09 op HAVE_MEMMEM=
294 f36fd90a 2022-07-09 op HAVE_MEMRCHR=
295 f36fd90a 2022-07-09 op HAVE_MEMSET_S=
296 f36fd90a 2022-07-09 op HAVE_OPTRESET=
297 f36fd90a 2022-07-09 op HAVE_PATH_MAX=
298 f36fd90a 2022-07-09 op HAVE_PLEDGE=
299 f36fd90a 2022-07-09 op HAVE_PROGRAM_INVOCATION_SHORT_NAME=
300 f36fd90a 2022-07-09 op HAVE_PR_SET_NAME=
301 f36fd90a 2022-07-09 op HAVE_REALLOCARRAY=
302 f36fd90a 2022-07-09 op HAVE_RECALLOCARRAY=
303 f36fd90a 2022-07-09 op HAVE_SANDBOX_INIT=
304 f36fd90a 2022-07-09 op HAVE_SETPROCTITLE=
305 f36fd90a 2022-07-09 op HAVE_SIO_FLUSH=
306 f36fd90a 2022-07-09 op HAVE_SOCK_NONBLOCK=
307 f36fd90a 2022-07-09 op HAVE_STRLCAT=
308 f36fd90a 2022-07-09 op HAVE_STRLCPY=
309 f36fd90a 2022-07-09 op HAVE_STRNDUP=
310 f36fd90a 2022-07-09 op HAVE_STRNLEN=
311 f36fd90a 2022-07-09 op HAVE_STRTONUM=
312 f36fd90a 2022-07-09 op HAVE_SYS_FILE=
313 f36fd90a 2022-07-09 op HAVE_SYS_QUEUE=
314 f36fd90a 2022-07-09 op HAVE_SYSTRACE=0
315 f36fd90a 2022-07-09 op HAVE_UNVEIL=
316 f36fd90a 2022-07-09 op HAVE___PROGNAME=
317 f36fd90a 2022-07-09 op
318 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
319 f36fd90a 2022-07-09 op # Allow configure.local to override all variables, default settings,
320 f36fd90a 2022-07-09 op # command-line arguments, and tested features, above.
321 f36fd90a 2022-07-09 op # You PROBABLY DO NOT want to change this.
322 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
323 f36fd90a 2022-07-09 op
324 f36fd90a 2022-07-09 op if [ -r ./configure.local ]; then
325 f36fd90a 2022-07-09 op echo "configure.local: reading..." 1>&2
326 f36fd90a 2022-07-09 op echo "configure.local: reading..." 1>&3
327 f36fd90a 2022-07-09 op cat ./configure.local 1>&3
328 f36fd90a 2022-07-09 op . ./configure.local
329 f36fd90a 2022-07-09 op else
330 f36fd90a 2022-07-09 op echo "configure.local: no (fully automatic configuration)" 1>&2
331 f36fd90a 2022-07-09 op echo "configure.local: no (fully automatic configuration)" 1>&3
332 f36fd90a 2022-07-09 op fi
333 f36fd90a 2022-07-09 op
334 f36fd90a 2022-07-09 op echo 1>&3
335 f36fd90a 2022-07-09 op
336 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
337 f36fd90a 2022-07-09 op # Infrastructure for running tests.
338 f36fd90a 2022-07-09 op # These consists of a series of functions that will attempt to run the
339 f36fd90a 2022-07-09 op # given test file and record its exit into a HAVE_xxx variable.
340 f36fd90a 2022-07-09 op # You DO NOT want to change this.
341 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
342 f36fd90a 2022-07-09 op
343 f36fd90a 2022-07-09 op COMP="${CC} ${CFLAGS} ${CPPFLAGS} -Wno-unused -Werror"
344 f36fd90a 2022-07-09 op
345 f36fd90a 2022-07-09 op # Check whether this HAVE_ setting is manually overridden.
346 f36fd90a 2022-07-09 op # If yes, use the override, if no, do not decide anything yet.
347 f36fd90a 2022-07-09 op # Arguments: lower-case test name, manual value
348 f36fd90a 2022-07-09 op
349 f36fd90a 2022-07-09 op ismanual() {
350 f36fd90a 2022-07-09 op [ -z "${3}" ] && return 1
351 f36fd90a 2022-07-09 op echo "${1}: manual (HAVE_${2}=${3})" 1>&2
352 f36fd90a 2022-07-09 op echo "${1}: manual (HAVE_${2}=${3})" 1>&3
353 f36fd90a 2022-07-09 op echo 1>&3
354 f36fd90a 2022-07-09 op return 0
355 f36fd90a 2022-07-09 op }
356 f36fd90a 2022-07-09 op
357 f36fd90a 2022-07-09 op # Run a single autoconfiguration test.
358 f36fd90a 2022-07-09 op # In case of success, enable the feature.
359 f36fd90a 2022-07-09 op # In case of failure, do not decide anything yet.
360 f36fd90a 2022-07-09 op # Arguments: lower-case test name, upper-case test name, additional
361 f36fd90a 2022-07-09 op # CFLAGS, additional LIBS.
362 f36fd90a 2022-07-09 op
363 f36fd90a 2022-07-09 op singletest() {
364 f36fd90a 2022-07-09 op extralib=""
365 f36fd90a 2022-07-09 op pkgcfs=""
366 f36fd90a 2022-07-09 op pkglib=""
367 f36fd90a 2022-07-09 op
368 f36fd90a 2022-07-09 op cat 1>&3 << __HEREDOC__
369 f36fd90a 2022-07-09 op ${1}: testing...
370 f36fd90a 2022-07-09 op ${COMP} -DTEST_${2} ${3} -o test-${1} tests.c ${LDFLAGS} ${4}
371 f36fd90a 2022-07-09 op __HEREDOC__
372 f36fd90a 2022-07-09 op if ${COMP} -DTEST_${2} ${3} -o "test-${1}" tests.c ${LDFLAGS} ${4} 1>&3 2>&3; then
373 f36fd90a 2022-07-09 op echo "${1}: ${CC} succeeded" 1>&3
374 f36fd90a 2022-07-09 op else
375 f36fd90a 2022-07-09 op if [ -n "${5}" ] ; then
376 f36fd90a 2022-07-09 op echo "${1}: ${CC} failed with $? (retrying)" 1>&3
377 f36fd90a 2022-07-09 op cat 1>&3 << __HEREDOC__
378 f36fd90a 2022-07-09 op ${1}: testing...
379 f36fd90a 2022-07-09 op ${COMP} -DTEST_${2} ${3} -o test-${1} tests.c ${LDFLAGS} ${5}
380 f36fd90a 2022-07-09 op __HEREDOC__
381 f36fd90a 2022-07-09 op if ${COMP} -DTEST_${2} ${3} -o "test-${1}" tests.c ${LDFLAGS} ${5} 1>&3 2>&3; then
382 f36fd90a 2022-07-09 op echo "${1}: ${CC} succeeded" 1>&3
383 f36fd90a 2022-07-09 op extralib="(with ${5})"
384 f36fd90a 2022-07-09 op else
385 f36fd90a 2022-07-09 op test -n "${PKG_CONFIG}" -a -n "${6}" && ${PKG_CONFIG} "$6"
386 f36fd90a 2022-07-09 op if [ $? -eq 0 ]; then
387 f36fd90a 2022-07-09 op echo "${1}: ${CC} failed with $? (retrying)" 1>&3
388 f36fd90a 2022-07-09 op pkgcfs=$($PKG_CONFIG --cflags "${6}")
389 f36fd90a 2022-07-09 op pkglib=$($PKG_CONFIG --libs "${6}")
390 f36fd90a 2022-07-09 op cat 1>&3 << __HEREDOC__
391 f36fd90a 2022-07-09 op ${1}: testing...
392 f36fd90a 2022-07-09 op ${COMP} -DTEST_${2} ${3} ${pkgcfs} -o test-${1} tests.c ${LDFLAGS} ${pkglib}
393 f36fd90a 2022-07-09 op __HEREDOC__
394 f36fd90a 2022-07-09 op if ${COMP} -DTEST_${2} ${3} ${pkgcfs} -o test-${1} tests.c ${LDFLAGS} ${pkglib} 1>&3 2>&3; then
395 f36fd90a 2022-07-09 op echo "${1}: ${CC} succeeded" 1>&3
396 f36fd90a 2022-07-09 op extralib="(with ${pkgcfs} ${pkglib})"
397 f36fd90a 2022-07-09 op else
398 f36fd90a 2022-07-09 op echo "${1}: ${CC} failed with $?" 1>&3
399 f36fd90a 2022-07-09 op echo 1>&3
400 f36fd90a 2022-07-09 op return 1
401 f36fd90a 2022-07-09 op fi
402 f36fd90a 2022-07-09 op else
403 f36fd90a 2022-07-09 op echo "${1}: ${CC} failed with $?" 1>&3
404 f36fd90a 2022-07-09 op echo 1>&3
405 f36fd90a 2022-07-09 op return 1
406 f36fd90a 2022-07-09 op fi
407 f36fd90a 2022-07-09 op fi
408 f36fd90a 2022-07-09 op else
409 f36fd90a 2022-07-09 op echo "${1}: ${CC} failed with $?" 1>&3
410 f36fd90a 2022-07-09 op echo 1>&3
411 f36fd90a 2022-07-09 op return 1
412 f36fd90a 2022-07-09 op fi
413 f36fd90a 2022-07-09 op fi
414 1c53767e 2022-07-13 op
415 1c53767e 2022-07-13 op rm -f test-${1}.d
416 f36fd90a 2022-07-09 op
417 f36fd90a 2022-07-09 op if [ -n "${pkgcfs}" -o -n "${pkglib}" ]
418 f36fd90a 2022-07-09 op then
419 f36fd90a 2022-07-09 op CFLAGS="${CFLAGS} ${pkgcfs}"
420 f36fd90a 2022-07-09 op eval "LDADD_${2}=\"${pkglib}\""
421 f36fd90a 2022-07-09 op elif [ -n "${extralib}" ]
422 f36fd90a 2022-07-09 op then
423 f36fd90a 2022-07-09 op eval "LDADD_${2}=\"${5}\""
424 f36fd90a 2022-07-09 op elif [ -n "${4}" ]
425 f36fd90a 2022-07-09 op then
426 f36fd90a 2022-07-09 op eval "LDADD_${2}=\"${4}\""
427 f36fd90a 2022-07-09 op fi
428 f36fd90a 2022-07-09 op
429 f36fd90a 2022-07-09 op echo "${1}: yes ${extralib}" 1>&2
430 f36fd90a 2022-07-09 op echo "${1}: yes ${extralib}" 1>&3
431 f36fd90a 2022-07-09 op echo 1>&3
432 f36fd90a 2022-07-09 op eval HAVE_${2}=1
433 f36fd90a 2022-07-09 op rm "test-${1}"
434 f36fd90a 2022-07-09 op return 0
435 f36fd90a 2022-07-09 op }
436 f36fd90a 2022-07-09 op
437 f36fd90a 2022-07-09 op # Run a complete autoconfiguration test, including the check for
438 f36fd90a 2022-07-09 op # a manual override and disabling the feature on failure.
439 f36fd90a 2022-07-09 op # Arguments: lower case name, upper case name, additional CFLAGS,
440 f36fd90a 2022-07-09 op # additional LDADD, alternative LDADD, pkg-config name.
441 f36fd90a 2022-07-09 op
442 f36fd90a 2022-07-09 op runtest() {
443 f36fd90a 2022-07-09 op eval _manual=\${HAVE_${2}}
444 f36fd90a 2022-07-09 op ismanual "${1}" "${2}" "${_manual}" && return 0
445 f36fd90a 2022-07-09 op singletest "${1}" "${2}" "${3}" "${4}" "${5}" "${6}" && return 0
446 f36fd90a 2022-07-09 op echo "${1}: no" 1>&2
447 f36fd90a 2022-07-09 op eval HAVE_${2}=0
448 f36fd90a 2022-07-09 op return 1
449 f36fd90a 2022-07-09 op }
450 f36fd90a 2022-07-09 op
451 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
452 f36fd90a 2022-07-09 op # Begin running the tests themselves.
453 f36fd90a 2022-07-09 op # All of your tests must be defined here.
454 f36fd90a 2022-07-09 op # Please sort as the HAVE_xxxx values were defined.
455 f36fd90a 2022-07-09 op # You WANT to change this.
456 f36fd90a 2022-07-09 op # It consists of the following columns:
457 f36fd90a 2022-07-09 op # runtest
458 f36fd90a 2022-07-09 op # (1) test file
459 f36fd90a 2022-07-09 op # (2) macro to set
460 f36fd90a 2022-07-09 op # (3) argument to cc *before* -o
461 f36fd90a 2022-07-09 op # (4) argument to cc *after*
462 f36fd90a 2022-07-09 op # (5) alternative argument to cc *after*
463 f36fd90a 2022-07-09 op # (6) name for pkg-config auto-discovery
464 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
465 f36fd90a 2022-07-09 op
466 f36fd90a 2022-07-09 op if runtest -MMD _MMD -MMD; then
467 f36fd90a 2022-07-09 op CFLAGS="${CFLAGS} -MMD"
468 f36fd90a 2022-07-09 op echo "adding -MMD to CFLAGS" 1>&2
469 f36fd90a 2022-07-09 op echo "adding -MMD to CFLAGS" 1>&3
470 f36fd90a 2022-07-09 op fi
471 f36fd90a 2022-07-09 op
472 f36fd90a 2022-07-09 op runtest capsicum CAPSICUM || true
473 f36fd90a 2022-07-09 op runtest err ERR || true
474 f36fd90a 2022-07-09 op runtest explicit_bzero EXPLICIT_BZERO || true
475 f36fd90a 2022-07-09 op runtest flock FLOCK || true
476 f36fd90a 2022-07-09 op runtest freezero FREEZERO || true
477 f36fd90a 2022-07-09 op runtest getdtablecount GETDTABLECOUNT || true
478 f36fd90a 2022-07-09 op runtest getexecname GETEXECNAME || true
479 f36fd90a 2022-07-09 op runtest getprogname GETPROGNAME || true
480 f36fd90a 2022-07-09 op runtest imsg IMSG "" "" "-lutil" || true
481 f36fd90a 2022-07-09 op runtest INFTIM INFTIM || true
482 f36fd90a 2022-07-09 op runtest landlock LANDLOCK || true
483 f36fd90a 2022-07-09 op
484 f36fd90a 2022-07-09 op runtest libevent LIBEVENT "" "" "-levent" || \
485 f36fd90a 2022-07-09 op runtest libevent2 LIBEVENT2 "" "" "-levent_extra -levent_core" "libevent" || true
486 f36fd90a 2022-07-09 op
487 f36fd90a 2022-07-09 op runtest lib_flac LIB_FLAC "" "" "-lFLAC" "flac" || true
488 f36fd90a 2022-07-09 op runtest lib_mpg123 LIB_MPG123 "" "" "-lmpg123" "libmpg123" || true
489 f36fd90a 2022-07-09 op runtest lib_opusfile LIB_OPUSFILE "" "" "-lopusfile" "opusfile" || true
490 f36fd90a 2022-07-09 op runtest lib_vorbisfile LIB_VORBISFILE "" "" "-lvorbisfile" "vorbisfile" || true
491 f36fd90a 2022-07-09 op
492 f36fd90a 2022-07-09 op runtest lib_sndio LIB_SNDIO "" "" "-lsndio" "sndio" || true
493 f36fd90a 2022-07-09 op runtest lib_socket LIB_SOCKET "" "" "-lsocket -lnsl" || true
494 f36fd90a 2022-07-09 op runtest memmem MEMMEM || true
495 f36fd90a 2022-07-09 op runtest memrchr MEMRCHR || true
496 f36fd90a 2022-07-09 op runtest memset_s MEMSET_S || true
497 f36fd90a 2022-07-09 op runtest optreset OPTRESET || true
498 f36fd90a 2022-07-09 op runtest PATH_MAX PATH_MAX || true
499 f36fd90a 2022-07-09 op runtest pledge PLEDGE || true
500 f36fd90a 2022-07-09 op runtest program_invocation_short_name PROGRAM_INVOCATION_SHORT_NAME || true
501 f36fd90a 2022-07-09 op runtest PR_SET_NAME PR_SET_NAME || true
502 f36fd90a 2022-07-09 op runtest reallocarray REALLOCARRAY || true
503 f36fd90a 2022-07-09 op runtest recallocarray RECALLOCARRAY || true
504 f36fd90a 2022-07-09 op runtest sandbox_init SANDBOX_INIT "-Wno-deprecated" || true
505 f36fd90a 2022-07-09 op runtest setproctitle SETPROCTITLE || true
506 f36fd90a 2022-07-09 op runtest sio_flush SIO_FLUSH "" "" "${LDADD_LIB_SNDIO}" || true
507 f36fd90a 2022-07-09 op runtest SOCK_NONBLOCK SOCK_NONBLOCK || true
508 f36fd90a 2022-07-09 op runtest static STATIC "" "-static" || true
509 f36fd90a 2022-07-09 op runtest strlcat STRLCAT || true
510 f36fd90a 2022-07-09 op runtest strlcpy STRLCPY || true
511 f36fd90a 2022-07-09 op runtest strndup STRNDUP || true
512 f36fd90a 2022-07-09 op runtest strnlen STRNLEN || true
513 f36fd90a 2022-07-09 op runtest strtonum STRTONUM || true
514 f36fd90a 2022-07-09 op runtest sys_queue SYS_QUEUE || true
515 f36fd90a 2022-07-09 op runtest sys_file SYS_FILE || true
516 f36fd90a 2022-07-09 op runtest unveil UNVEIL || true
517 f36fd90a 2022-07-09 op runtest __progname __PROGNAME || true
518 f36fd90a 2022-07-09 op
519 f36fd90a 2022-07-09 op if [ "${HAVE_LIBEVENT}" -eq 0 -a "${HAVE_LIBEVENT2}" -eq 0 ]; then
520 f36fd90a 2022-07-09 op echo "Fatal: missing libevent" 1>&2
521 f36fd90a 2022-07-09 op echo "Fatal: missing libevent" 1>&3
522 f36fd90a 2022-07-09 op exit 1
523 f36fd90a 2022-07-09 op fi
524 f36fd90a 2022-07-09 op
525 f36fd90a 2022-07-09 op if [ "${HAVE_LIB_FLAC}" -eq 0 -o \
526 f36fd90a 2022-07-09 op "${HAVE_LIB_MPG123}" -eq 0 -o \
527 f36fd90a 2022-07-09 op "${HAVE_LIB_OPUSFILE}" -eq 0 -o \
528 f36fd90a 2022-07-09 op "${HAVE_LIB_VORBISFILE}" -eq 0 ]; then
529 f36fd90a 2022-07-09 op echo "Fatal: missing required audio libraries" 1>&2
530 f36fd90a 2022-07-09 op echo "Fatal: missing required audio libraries" 1>&3
531 f36fd90a 2022-07-09 op exit 1
532 f36fd90a 2022-07-09 op fi
533 f36fd90a 2022-07-09 op
534 f36fd90a 2022-07-09 op if [ "${HAVE_LIB_SNDIO}" -eq 0 ]; then
535 f36fd90a 2022-07-09 op echo "Fatal: missing libsndio" 1>&2
536 f36fd90a 2022-07-09 op echo "Fatal: missing libsndio" 1>&3
537 f36fd90a 2022-07-09 op exit 1
538 f36fd90a 2022-07-09 op fi
539 f36fd90a 2022-07-09 op
540 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
541 f36fd90a 2022-07-09 op # Output writing: generate the config.h file.
542 f36fd90a 2022-07-09 op # This file contains all of the HAVE_xxxx variables necessary for
543 f36fd90a 2022-07-09 op # compiling your source.
544 f36fd90a 2022-07-09 op # You must include "config.h" BEFORE any other variables.
545 f36fd90a 2022-07-09 op # You WANT to change this.
546 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
547 f36fd90a 2022-07-09 op
548 f36fd90a 2022-07-09 op exec > config.h
549 f36fd90a 2022-07-09 op
550 f36fd90a 2022-07-09 op # Start with prologue.
551 f36fd90a 2022-07-09 op
552 f36fd90a 2022-07-09 op cat << __HEREDOC__
553 f36fd90a 2022-07-09 op #ifndef OCONFIGURE_CONFIG_H
554 f36fd90a 2022-07-09 op #define OCONFIGURE_CONFIG_H
555 f36fd90a 2022-07-09 op
556 f36fd90a 2022-07-09 op #ifdef __cplusplus
557 f36fd90a 2022-07-09 op # error "Do not use C++: this is a C application."
558 f36fd90a 2022-07-09 op #endif
559 f36fd90a 2022-07-09 op #if !defined(__GNUC__) || (__GNUC__ < 4)
560 f36fd90a 2022-07-09 op # define __attribute__(x)
561 f36fd90a 2022-07-09 op #endif
562 f36fd90a 2022-07-09 op #if defined(__linux__) || defined(__MINT__)
563 f36fd90a 2022-07-09 op # define _GNU_SOURCE /* memmem, memrchr, setresuid... */
564 f36fd90a 2022-07-09 op # define _DEFAULT_SOURCE /* le32toh, crypt, ... */
565 f36fd90a 2022-07-09 op #endif
566 f36fd90a 2022-07-09 op #if defined(__NetBSD__)
567 f36fd90a 2022-07-09 op # define _OPENBSD_SOURCE /* reallocarray, etc. */
568 f36fd90a 2022-07-09 op #endif
569 f36fd90a 2022-07-09 op #if defined(__sun)
570 f36fd90a 2022-07-09 op # ifndef _XOPEN_SOURCE /* SunOS already defines */
571 f36fd90a 2022-07-09 op # define _XOPEN_SOURCE /* XPGx */
572 f36fd90a 2022-07-09 op # endif
573 f36fd90a 2022-07-09 op # define _XOPEN_SOURCE_EXTENDED 1 /* XPG4v2 */
574 f36fd90a 2022-07-09 op # ifndef __EXTENSIONS__ /* SunOS already defines */
575 f36fd90a 2022-07-09 op # define __EXTENSIONS__ /* reallocarray, etc. */
576 f36fd90a 2022-07-09 op # endif
577 f36fd90a 2022-07-09 op #endif
578 f36fd90a 2022-07-09 op #if !defined(__BEGIN_DECLS)
579 f36fd90a 2022-07-09 op # define __BEGIN_DECLS
580 f36fd90a 2022-07-09 op #endif
581 f36fd90a 2022-07-09 op #if !defined(__END_DECLS)
582 f36fd90a 2022-07-09 op # define __END_DECLS
583 f36fd90a 2022-07-09 op #endif
584 f36fd90a 2022-07-09 op
585 f36fd90a 2022-07-09 op __HEREDOC__
586 f36fd90a 2022-07-09 op
587 f36fd90a 2022-07-09 op # This is just for size_t, mode_t, and dev_t.
588 f36fd90a 2022-07-09 op # Most of these functions, in the real world, pull in <string.h> or
589 f36fd90a 2022-07-09 op # someting that pulls in support for size_t.
590 f36fd90a 2022-07-09 op # Our function declarations are standalone, so specify them here.
591 f36fd90a 2022-07-09 op
592 f36fd90a 2022-07-09 op if [ ${HAVE_IMSG} -eq 0 -o \
593 f36fd90a 2022-07-09 op ${HAVE_MEMMEM} -eq 0 -o \
594 f36fd90a 2022-07-09 op ${HAVE_MEMRCHR} -eq 0 -o \
595 f36fd90a 2022-07-09 op ${HAVE_REALLOCARRAY} -eq 0 -o \
596 f36fd90a 2022-07-09 op ${HAVE_RECALLOCARRAY} -eq 0 -o \
597 f36fd90a 2022-07-09 op ${HAVE_STRLCAT} -eq 0 -o \
598 f36fd90a 2022-07-09 op ${HAVE_STRLCPY} -eq 0 -o \
599 f36fd90a 2022-07-09 op ${HAVE_STRNDUP} -eq 0 -o \
600 f36fd90a 2022-07-09 op ${HAVE_STRNLEN} -eq 0 ]
601 f36fd90a 2022-07-09 op then
602 f36fd90a 2022-07-09 op echo "#include <sys/types.h> /* size_t, mode_t, dev_t */ "
603 f36fd90a 2022-07-09 op echo
604 f36fd90a 2022-07-09 op fi
605 f36fd90a 2022-07-09 op
606 f36fd90a 2022-07-09 op if [ ${HAVE_FLOCK} -eq 0 ]; then
607 f36fd90a 2022-07-09 op if [ ${HAVE_SYS_FILE} -eq 0 ]; then
608 f36fd90a 2022-07-09 op HAVE_FLOCK=1
609 f36fd90a 2022-07-09 op echo "#include <sys/file.h>"
610 f36fd90a 2022-07-09 op echo
611 f36fd90a 2022-07-09 op else
612 f36fd90a 2022-07-09 op echo "int flock(int, int);"
613 f36fd90a 2022-07-09 op echo "#define LOCK_SH 0x1"
614 f36fd90a 2022-07-09 op echo "#define LOCK_EX 0x2"
615 f36fd90a 2022-07-09 op echo "#define LOCK_NB 0x4"
616 f36fd90a 2022-07-09 op echo
617 f36fd90a 2022-07-09 op fi
618 f36fd90a 2022-07-09 op fi
619 f36fd90a 2022-07-09 op
620 f36fd90a 2022-07-09 op if [ ${HAVE_ERR} -eq 0 ]; then
621 f36fd90a 2022-07-09 op echo "#include <stdarg.h> /* err(3) */"
622 f36fd90a 2022-07-09 op echo
623 f36fd90a 2022-07-09 op else
624 f36fd90a 2022-07-09 op echo "#include <err.h>"
625 f36fd90a 2022-07-09 op echo
626 f36fd90a 2022-07-09 op fi
627 f36fd90a 2022-07-09 op
628 f36fd90a 2022-07-09 op if [ ${HAVE_PLEDGE} -eq 0 ]; then
629 f36fd90a 2022-07-09 op echo "#define pledge(p, e) (0)"
630 f36fd90a 2022-07-09 op echo
631 f36fd90a 2022-07-09 op else
632 f36fd90a 2022-07-09 op echo "#include <unistd.h>"
633 f36fd90a 2022-07-09 op echo
634 f36fd90a 2022-07-09 op fi
635 f36fd90a 2022-07-09 op
636 f36fd90a 2022-07-09 op # Now we handle our HAVE_xxxx values.
637 f36fd90a 2022-07-09 op # Most will just be defined as 0 or 1.
638 f36fd90a 2022-07-09 op
639 f36fd90a 2022-07-09 op if [ ${HAVE_PATH_MAX} -eq 0 ]
640 f36fd90a 2022-07-09 op then
641 f36fd90a 2022-07-09 op echo "#define PATH_MAX 4096"
642 f36fd90a 2022-07-09 op echo
643 f36fd90a 2022-07-09 op fi
644 f36fd90a 2022-07-09 op
645 f36fd90a 2022-07-09 op if [ ${HAVE_INFTIM} -eq 0 ]
646 f36fd90a 2022-07-09 op then
647 f36fd90a 2022-07-09 op echo "#define INFTIM (-1) /* poll.h */"
648 f36fd90a 2022-07-09 op echo
649 f36fd90a 2022-07-09 op fi
650 f36fd90a 2022-07-09 op
651 f36fd90a 2022-07-09 op cat << __HEREDOC__
652 f36fd90a 2022-07-09 op /*
653 f36fd90a 2022-07-09 op * Results of configuration feature-testing.
654 f36fd90a 2022-07-09 op */
655 f36fd90a 2022-07-09 op #define HAVE_CAPSICUM ${HAVE_CAPSICUM}
656 f36fd90a 2022-07-09 op #define HAVE_ERR ${HAVE_ERR}
657 f36fd90a 2022-07-09 op #define HAVE_EXPLICIT_BZERO ${HAVE_EXPLICIT_BZERO}
658 f36fd90a 2022-07-09 op #define HAVE_FLOCK ${HAVE_FLOCK}
659 f36fd90a 2022-07-09 op #define HAVE_FREEZERO ${HAVE_FREEZERO}
660 f36fd90a 2022-07-09 op #define HAVE_GETDTABLECOUNT ${HAVE_GETDTABLECOUNT}
661 f36fd90a 2022-07-09 op #define HAVE_GETEXECNAME ${HAVE_GETEXECNAME}
662 f36fd90a 2022-07-09 op #define HAVE_GETPROGNAME ${HAVE_GETPROGNAME}
663 f36fd90a 2022-07-09 op #define HAVE_INFTIM ${HAVE_INFTIM}
664 f36fd90a 2022-07-09 op #define HAVE_LANDLOCK ${HAVE_LANDLOCK}
665 f36fd90a 2022-07-09 op #define HAVE_MEMMEM ${HAVE_MEMMEM}
666 f36fd90a 2022-07-09 op #define HAVE_MEMRCHR ${HAVE_MEMRCHR}
667 f36fd90a 2022-07-09 op #define HAVE_MEMSET_S ${HAVE_MEMSET_S}
668 f36fd90a 2022-07-09 op #define HAVE_OPTRESET ${HAVE_OPTRESET}
669 f36fd90a 2022-07-09 op #define HAVE_PATH_MAX ${HAVE_PATH_MAX}
670 f36fd90a 2022-07-09 op #define HAVE_PLEDGE ${HAVE_PLEDGE}
671 f36fd90a 2022-07-09 op #define HAVE_PROGRAM_INVOCATION_SHORT_NAME ${HAVE_PROGRAM_INVOCATION_SHORT_NAME}
672 f36fd90a 2022-07-09 op #define HAVE_PR_SET_NAME ${HAVE_PR_SET_NAME}
673 f36fd90a 2022-07-09 op #define HAVE_REALLOCARRAY ${HAVE_REALLOCARRAY}
674 f36fd90a 2022-07-09 op #define HAVE_RECALLOCARRAY ${HAVE_RECALLOCARRAY}
675 f36fd90a 2022-07-09 op #define HAVE_SANDBOX_INIT ${HAVE_SANDBOX_INIT}
676 f36fd90a 2022-07-09 op #define HAVE_SETPROCTITLE ${HAVE_SETPROCTITLE}
677 f36fd90a 2022-07-09 op #define HAVE_SIO_FLUSH ${HAVE_SIO_FLUSH}
678 f36fd90a 2022-07-09 op #define HAVE_SOCK_NONBLOCK ${HAVE_SOCK_NONBLOCK}
679 f36fd90a 2022-07-09 op #define HAVE_STRLCAT ${HAVE_STRLCAT}
680 f36fd90a 2022-07-09 op #define HAVE_STRLCPY ${HAVE_STRLCPY}
681 f36fd90a 2022-07-09 op #define HAVE_STRNDUP ${HAVE_STRNDUP}
682 f36fd90a 2022-07-09 op #define HAVE_STRNLEN ${HAVE_STRNLEN}
683 f36fd90a 2022-07-09 op #define HAVE_STRTONUM ${HAVE_STRTONUM}
684 f36fd90a 2022-07-09 op #define HAVE_SYS_FILE ${HAVE_SYS_FILE}
685 f36fd90a 2022-07-09 op #define HAVE_SYS_QUEUE ${HAVE_SYS_QUEUE}
686 f36fd90a 2022-07-09 op #define HAVE_SYSTRACE ${HAVE_SYSTRACE}
687 f36fd90a 2022-07-09 op #define HAVE_UNVEIL ${HAVE_UNVEIL}
688 f36fd90a 2022-07-09 op #define HAVE___PROGNAME ${HAVE___PROGNAME}
689 f36fd90a 2022-07-09 op
690 f36fd90a 2022-07-09 op __HEREDOC__
691 f36fd90a 2022-07-09 op
692 f36fd90a 2022-07-09 op # Now we do our function declarations for missing functions.
693 f36fd90a 2022-07-09 op
694 f36fd90a 2022-07-09 op [ ${HAVE_ERR} -eq 0 ] && \
695 f36fd90a 2022-07-09 op cat << __HEREDOC__
696 f36fd90a 2022-07-09 op /*
697 f36fd90a 2022-07-09 op * Compatibility functions for err(3).
698 f36fd90a 2022-07-09 op */
699 f36fd90a 2022-07-09 op extern void err(int, const char *, ...) __attribute__((noreturn));
700 f36fd90a 2022-07-09 op extern void errc(int, int, const char *, ...) __attribute__((noreturn));
701 f36fd90a 2022-07-09 op extern void errx(int, const char *, ...) __attribute__((noreturn));
702 f36fd90a 2022-07-09 op extern void verr(int, const char *, va_list) __attribute__((noreturn));
703 f36fd90a 2022-07-09 op extern void verrc(int, int, const char *, va_list) __attribute__((noreturn));
704 f36fd90a 2022-07-09 op extern void verrx(int, const char *, va_list) __attribute__((noreturn));
705 f36fd90a 2022-07-09 op extern void warn(const char *, ...);
706 f36fd90a 2022-07-09 op extern void warnx(const char *, ...);
707 f36fd90a 2022-07-09 op extern void warnc(int, const char *, ...);
708 f36fd90a 2022-07-09 op extern void vwarn(const char *, va_list);
709 f36fd90a 2022-07-09 op extern void vwarnc(int, const char *, va_list);
710 f36fd90a 2022-07-09 op extern void vwarnx(const char *, va_list);
711 f36fd90a 2022-07-09 op __HEREDOC__
712 f36fd90a 2022-07-09 op
713 f36fd90a 2022-07-09 op [ ${HAVE_EXPLICIT_BZERO} -eq 0 ] && \
714 f36fd90a 2022-07-09 op cat << __HEREDOC__
715 f36fd90a 2022-07-09 op /*
716 f36fd90a 2022-07-09 op * Compatibility for explicit_bzero(3).
717 f36fd90a 2022-07-09 op */
718 f36fd90a 2022-07-09 op extern void explicit_bzero(void *, size_t);
719 f36fd90a 2022-07-09 op
720 f36fd90a 2022-07-09 op __HEREDOC__
721 f36fd90a 2022-07-09 op
722 f36fd90a 2022-07-09 op [ ${HAVE_FREEZERO} -eq 0 ] && \
723 f36fd90a 2022-07-09 op cat << __HEREDOC__
724 f36fd90a 2022-07-09 op /*
725 f36fd90a 2022-07-09 op * Compatibility for freezero(3).
726 f36fd90a 2022-07-09 op */
727 f36fd90a 2022-07-09 op extern void freezero(void *, size_t);
728 f36fd90a 2022-07-09 op
729 f36fd90a 2022-07-09 op __HEREDOC__
730 f36fd90a 2022-07-09 op
731 f36fd90a 2022-07-09 op [ ${HAVE_MEMMEM} -eq 0 ] && \
732 f36fd90a 2022-07-09 op cat << __HEREDOC__
733 f36fd90a 2022-07-09 op /*
734 f36fd90a 2022-07-09 op * Compatibility for memmem(3).
735 f36fd90a 2022-07-09 op */
736 f36fd90a 2022-07-09 op void *memmem(const void *, size_t, const void *, size_t);
737 f36fd90a 2022-07-09 op
738 f36fd90a 2022-07-09 op __HEREDOC__
739 f36fd90a 2022-07-09 op
740 f36fd90a 2022-07-09 op [ ${HAVE_MEMRCHR} -eq 0 ] && \
741 f36fd90a 2022-07-09 op cat << __HEREDOC__
742 f36fd90a 2022-07-09 op /*
743 f36fd90a 2022-07-09 op * Compatibility for memrchr(3).
744 f36fd90a 2022-07-09 op */
745 f36fd90a 2022-07-09 op void *memrchr(const void *b, int, size_t);
746 f36fd90a 2022-07-09 op
747 f36fd90a 2022-07-09 op __HEREDOC__
748 f36fd90a 2022-07-09 op
749 f36fd90a 2022-07-09 op [ ${HAVE_GETPROGNAME} -eq 0 ] && \
750 f36fd90a 2022-07-09 op cat << __HEREDOC__
751 f36fd90a 2022-07-09 op /*
752 f36fd90a 2022-07-09 op * Compatibility for getprogname(3).
753 f36fd90a 2022-07-09 op */
754 f36fd90a 2022-07-09 op extern const char *getprogname(void);
755 f36fd90a 2022-07-09 op
756 f36fd90a 2022-07-09 op __HEREDOC__
757 f36fd90a 2022-07-09 op
758 f36fd90a 2022-07-09 op [ ${HAVE_REALLOCARRAY} -eq 0 ] && \
759 f36fd90a 2022-07-09 op cat << __HEREDOC__
760 f36fd90a 2022-07-09 op /*
761 f36fd90a 2022-07-09 op * Compatibility for reallocarray(3).
762 f36fd90a 2022-07-09 op */
763 f36fd90a 2022-07-09 op extern void *reallocarray(void *, size_t, size_t);
764 f36fd90a 2022-07-09 op
765 f36fd90a 2022-07-09 op __HEREDOC__
766 f36fd90a 2022-07-09 op
767 f36fd90a 2022-07-09 op [ ${HAVE_RECALLOCARRAY} -eq 0 ] && \
768 f36fd90a 2022-07-09 op cat << __HEREDOC__
769 f36fd90a 2022-07-09 op /*
770 f36fd90a 2022-07-09 op * Compatibility for recallocarray(3).
771 f36fd90a 2022-07-09 op */
772 f36fd90a 2022-07-09 op extern void *recallocarray(void *, size_t, size_t, size_t);
773 f36fd90a 2022-07-09 op
774 f36fd90a 2022-07-09 op __HEREDOC__
775 f36fd90a 2022-07-09 op
776 f36fd90a 2022-07-09 op [ ${HAVE_SETPROCTITLE} -eq 0 ] && \
777 f36fd90a 2022-07-09 op cat << __HEREDOC__
778 f36fd90a 2022-07-09 op /*
779 f36fd90a 2022-07-09 op * Compatibility for setproctitle(3).
780 f36fd90a 2022-07-09 op */
781 f36fd90a 2022-07-09 op extern void setproctitle(const char *, ...);
782 f36fd90a 2022-07-09 op
783 f36fd90a 2022-07-09 op __HEREDOC__
784 f36fd90a 2022-07-09 op
785 f36fd90a 2022-07-09 op [ ${HAVE_STRLCAT} -eq 0 ] && \
786 f36fd90a 2022-07-09 op cat << __HEREDOC__
787 f36fd90a 2022-07-09 op /*
788 f36fd90a 2022-07-09 op * Compatibility for strlcat(3).
789 f36fd90a 2022-07-09 op */
790 f36fd90a 2022-07-09 op extern size_t strlcat(char *, const char *, size_t);
791 f36fd90a 2022-07-09 op
792 f36fd90a 2022-07-09 op __HEREDOC__
793 f36fd90a 2022-07-09 op
794 f36fd90a 2022-07-09 op [ ${HAVE_STRLCPY} -eq 0 ] && \
795 f36fd90a 2022-07-09 op cat << __HEREDOC__
796 f36fd90a 2022-07-09 op /*
797 f36fd90a 2022-07-09 op * Compatibility for strlcpy(3).
798 f36fd90a 2022-07-09 op */
799 f36fd90a 2022-07-09 op extern size_t strlcpy(char *, const char *, size_t);
800 f36fd90a 2022-07-09 op
801 f36fd90a 2022-07-09 op __HEREDOC__
802 f36fd90a 2022-07-09 op
803 f36fd90a 2022-07-09 op [ ${HAVE_STRNDUP} -eq 0 ] && \
804 f36fd90a 2022-07-09 op cat << __HEREDOC__
805 f36fd90a 2022-07-09 op /*
806 f36fd90a 2022-07-09 op * Compatibility for strndup(3).
807 f36fd90a 2022-07-09 op */
808 f36fd90a 2022-07-09 op extern char *strndup(const char *, size_t);
809 f36fd90a 2022-07-09 op
810 f36fd90a 2022-07-09 op __HEREDOC__
811 f36fd90a 2022-07-09 op
812 f36fd90a 2022-07-09 op [ ${HAVE_STRNLEN} -eq 0 ] && \
813 f36fd90a 2022-07-09 op cat << __HEREDOC__
814 f36fd90a 2022-07-09 op /*
815 f36fd90a 2022-07-09 op * Compatibility for strnlen(3).
816 f36fd90a 2022-07-09 op */
817 f36fd90a 2022-07-09 op extern size_t strnlen(const char *, size_t);
818 f36fd90a 2022-07-09 op
819 f36fd90a 2022-07-09 op __HEREDOC__
820 f36fd90a 2022-07-09 op
821 f36fd90a 2022-07-09 op [ ${HAVE_STRTONUM} -eq 0 ] && \
822 f36fd90a 2022-07-09 op cat << __HEREDOC__
823 f36fd90a 2022-07-09 op /*
824 f36fd90a 2022-07-09 op * Compatibility for strotnum(3).
825 f36fd90a 2022-07-09 op */
826 f36fd90a 2022-07-09 op extern long long strtonum(const char *, long long, long long, const char **);
827 f36fd90a 2022-07-09 op
828 f36fd90a 2022-07-09 op __HEREDOC__
829 f36fd90a 2022-07-09 op
830 f36fd90a 2022-07-09 op if [ ${HAVE_SYS_QUEUE} -eq 0 ]; then
831 f36fd90a 2022-07-09 op cat << __HEREDOC__
832 f36fd90a 2022-07-09 op #include "queue.h"
833 f36fd90a 2022-07-09 op __HEREDOC__
834 f36fd90a 2022-07-09 op else
835 f36fd90a 2022-07-09 op echo "#include <sys/queue.h>"
836 f36fd90a 2022-07-09 op echo
837 f36fd90a 2022-07-09 op fi
838 f36fd90a 2022-07-09 op
839 f36fd90a 2022-07-09 op echo "#include <sys/uio.h>"
840 f36fd90a 2022-07-09 op echo "#include <stdint.h>"
841 f36fd90a 2022-07-09 op if [ ${HAVE_IMSG} -eq 0 ]; then
842 f36fd90a 2022-07-09 op echo "#include \"imsg.h\""
843 f36fd90a 2022-07-09 op else
844 f36fd90a 2022-07-09 op echo "#include <imsg.h>"
845 f36fd90a 2022-07-09 op fi
846 f36fd90a 2022-07-09 op echo
847 f36fd90a 2022-07-09 op
848 f36fd90a 2022-07-09 op if [ "${HAVE_LIBEVENT2}" -eq 1 ]; then
849 f36fd90a 2022-07-09 op cat << __HEREDOC__
850 f36fd90a 2022-07-09 op #include <event2/event.h>
851 f36fd90a 2022-07-09 op #include <event2/event_compat.h>
852 f36fd90a 2022-07-09 op #include <event2/event_struct.h>
853 f36fd90a 2022-07-09 op #include <event2/buffer.h>
854 f36fd90a 2022-07-09 op #include <event2/buffer_compat.h>
855 f36fd90a 2022-07-09 op #include <event2/bufferevent.h>
856 f36fd90a 2022-07-09 op #include <event2/bufferevent_struct.h>
857 f36fd90a 2022-07-09 op #include <event2/bufferevent_compat.h>
858 f36fd90a 2022-07-09 op
859 f36fd90a 2022-07-09 op __HEREDOC__
860 f36fd90a 2022-07-09 op elif [ "${HAVE_LIBEVENT}" -eq 1 ]; then
861 f36fd90a 2022-07-09 op cat << __HEREDOC__
862 f36fd90a 2022-07-09 op #include <event.h>
863 f36fd90a 2022-07-09 op
864 f36fd90a 2022-07-09 op __HEREDOC__
865 f36fd90a 2022-07-09 op fi
866 f36fd90a 2022-07-09 op
867 f36fd90a 2022-07-09 op cat << __HEREDOC__
868 f36fd90a 2022-07-09 op #ifndef __dead
869 f36fd90a 2022-07-09 op # define __dead __attribute__((noreturn))
870 f36fd90a 2022-07-09 op #endif
871 f36fd90a 2022-07-09 op
872 f36fd90a 2022-07-09 op #if !HAVE_SIO_FLUSH
873 f36fd90a 2022-07-09 op #define sio_flush(hdl) (sio_stop(hdl))
874 f36fd90a 2022-07-09 op #endif
875 f36fd90a 2022-07-09 op
876 f36fd90a 2022-07-09 op #if !HAVE_GETDTABLECOUNT
877 f36fd90a 2022-07-09 op /* XXX: on linux it should be possible to inspect /proc/self/fd/ */
878 f36fd90a 2022-07-09 op #define getdtablecount() (0)
879 f36fd90a 2022-07-09 op #endif
880 f36fd90a 2022-07-09 op
881 f36fd90a 2022-07-09 op #if !HAVE_OPTRESET
882 f36fd90a 2022-07-09 op /* replace host' getopt with OpenBSD' one */
883 f36fd90a 2022-07-09 op #define opterr BSDopterr
884 f36fd90a 2022-07-09 op #define optind BSDoptind
885 f36fd90a 2022-07-09 op #define optopt BSDoptopt
886 f36fd90a 2022-07-09 op #define optreset BSDoptreset
887 f36fd90a 2022-07-09 op #define optarg BSDoptarg
888 f36fd90a 2022-07-09 op #define getopt BSDgetopt
889 f36fd90a 2022-07-09 op
890 f36fd90a 2022-07-09 op extern int BSDopterr, BSDoptind, BSDoptopt, BSDoptreset;
891 f36fd90a 2022-07-09 op extern char *BSDoptarg;
892 f36fd90a 2022-07-09 op #endif
893 f36fd90a 2022-07-09 op
894 f36fd90a 2022-07-09 op #endif /*!OCONFIGURE_CONFIG_H*/
895 f36fd90a 2022-07-09 op __HEREDOC__
896 f36fd90a 2022-07-09 op
897 f36fd90a 2022-07-09 op echo "config.h: written" 1>&2
898 f36fd90a 2022-07-09 op echo "config.h: written" 1>&3
899 f36fd90a 2022-07-09 op
900 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
901 f36fd90a 2022-07-09 op # Now we go to generate our Makefile.configure.
902 f36fd90a 2022-07-09 op # This file is simply a bunch of Makefile variables.
903 f36fd90a 2022-07-09 op # They'll work in both GNUmakefile and BSDmakefile.
904 f36fd90a 2022-07-09 op # You MIGHT want to change this.
905 f36fd90a 2022-07-09 op #----------------------------------------------------------------------
906 f36fd90a 2022-07-09 op
907 f36fd90a 2022-07-09 op exec > Makefile.configure
908 f36fd90a 2022-07-09 op
909 f36fd90a 2022-07-09 op [ -z "${BINDIR}" ] && BINDIR="${PREFIX}/bin"
910 f36fd90a 2022-07-09 op [ -z "${SBINDIR}" ] && SBINDIR="${PREFIX}/sbin"
911 f36fd90a 2022-07-09 op [ -z "${INCLUDEDIR}" ] && INCLUDEDIR="${PREFIX}/include"
912 f36fd90a 2022-07-09 op [ -z "${LIBDIR}" ] && LIBDIR="${PREFIX}/lib"
913 f36fd90a 2022-07-09 op [ -z "${MANDIR}" ] && MANDIR="${PREFIX}/man"
914 f36fd90a 2022-07-09 op [ -z "${SHAREDIR}" ] && SHAREDIR="${PREFIX}/share"
915 f36fd90a 2022-07-09 op
916 f36fd90a 2022-07-09 op [ -z "${INSTALL_PROGRAM}" ] && INSTALL_PROGRAM="${INSTALL} -m 0555"
917 f36fd90a 2022-07-09 op [ -z "${INSTALL_LIB}" ] && INSTALL_LIB="${INSTALL} -m 0444"
918 f36fd90a 2022-07-09 op [ -z "${INSTALL_MAN}" ] && INSTALL_MAN="${INSTALL} -m 0444"
919 f36fd90a 2022-07-09 op [ -z "${INSTALL_DATA}" ] && INSTALL_DATA="${INSTALL} -m 0444"
920 f36fd90a 2022-07-09 op
921 f36fd90a 2022-07-09 op cat << __HEREDOC__
922 f36fd90a 2022-07-09 op CC = ${CC}
923 f36fd90a 2022-07-09 op CFLAGS = ${CFLAGS}
924 f36fd90a 2022-07-09 op CPPFLAGS = ${CPPFLAGS}
925 f36fd90a 2022-07-09 op LDADD = ${LDADD} ${LDADD_IMSG} ${LDADD_LIB_FLAC} ${LDADD_LIB_MPG123} \
926 f36fd90a 2022-07-09 op ${LDADD_LIB_OPUSFILE} ${LDADD_LIB_VORBISFILE} ${LDADD_LIB_SOCKET} \
927 f36fd90a 2022-07-09 op ${LDADD_LIBEVENT} ${LDADD_LIBEVENT2} ${LDADD_LIB_SNDIO}
928 f36fd90a 2022-07-09 op LDADD_STATIC = ${LDADD_STATIC}
929 f36fd90a 2022-07-09 op LDFLAGS = ${LDFLAGS}
930 f36fd90a 2022-07-09 op STATIC = ${STATIC}
931 f36fd90a 2022-07-09 op PREFIX = ${PREFIX}
932 f36fd90a 2022-07-09 op BINDIR = ${BINDIR}
933 f36fd90a 2022-07-09 op SHAREDIR = ${SHAREDIR}
934 f36fd90a 2022-07-09 op SBINDIR = ${SBINDIR}
935 f36fd90a 2022-07-09 op INCLUDEDIR = ${INCLUDEDIR}
936 f36fd90a 2022-07-09 op LIBDIR = ${LIBDIR}
937 f36fd90a 2022-07-09 op MANDIR = ${MANDIR}
938 f36fd90a 2022-07-09 op INSTALL = ${INSTALL}
939 f36fd90a 2022-07-09 op INSTALL_PROGRAM = ${INSTALL_PROGRAM}
940 f36fd90a 2022-07-09 op INSTALL_LIB = ${INSTALL_LIB}
941 f36fd90a 2022-07-09 op INSTALL_MAN = ${INSTALL_MAN}
942 f36fd90a 2022-07-09 op INSTALL_DATA = ${INSTALL_DATA}
943 f36fd90a 2022-07-09 op __HEREDOC__
944 f36fd90a 2022-07-09 op
945 f36fd90a 2022-07-09 op echo "Makefile.configure: written" 1>&2
946 f36fd90a 2022-07-09 op echo "Makefile.configure: written" 1>&3
947 f36fd90a 2022-07-09 op
948 f36fd90a 2022-07-09 op exit 0