configure revision 1.11 1 1.1 joerg #!/bin/sh
2 1.1 joerg #
3 1.11 christos # Id: configure,v 1.66 2018/07/31 15:34:00 schwarze Exp
4 1.7 christos #
5 1.11 christos # Copyright (c) 2014,2015,2016,2017,2018 Ingo Schwarze <schwarze (at] openbsd.org>
6 1.1 joerg #
7 1.1 joerg # Permission to use, copy, modify, and distribute this software for any
8 1.1 joerg # purpose with or without fee is hereby granted, provided that the above
9 1.1 joerg # copyright notice and this permission notice appear in all copies.
10 1.1 joerg #
11 1.1 joerg # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 1.1 joerg # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 1.1 joerg # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 1.1 joerg # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 1.1 joerg # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 1.1 joerg # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 1.1 joerg # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 1.1 joerg
19 1.1 joerg set -e
20 1.1 joerg
21 1.5 christos [ -w config.log ] && mv config.log config.log.old
22 1.5 christos [ -w config.h ] && mv config.h config.h.old
23 1.1 joerg
24 1.2 christos # Output file descriptor usage:
25 1.2 christos # 1 (stdout): config.h, Makefile.local
26 1.2 christos # 2 (stderr): original stderr, usually to the console
27 1.2 christos # 3: config.log
28 1.1 joerg
29 1.2 christos exec 3> config.log
30 1.11 christos echo "file config.log: writing..."
31 1.2 christos
32 1.2 christos # --- default settings -------------------------------------------------
33 1.2 christos # Initialize all variables here,
34 1.2 christos # such that nothing can leak in from the environment.
35 1.2 christos
36 1.7 christos SOURCEDIR=`dirname "$0"`
37 1.7 christos
38 1.11 christos MANPATH_BASE="/usr/share/man:/usr/X11R6/man"
39 1.5 christos MANPATH_DEFAULT="/usr/share/man:/usr/X11R6/man:/usr/local/man"
40 1.2 christos OSNAME=
41 1.4 christos MAKEFLAGS=
42 1.7 christos UTF8_LOCALE=
43 1.2 christos
44 1.10 joerg if [ -z "${CC}" ]; then
45 1.10 joerg CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | env -i make -sf -`
46 1.10 joerg fi
47 1.7 christos CFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings"
48 1.7 christos CFLAGS="${CFLAGS} -Wno-unused-parameter"
49 1.5 christos LDADD=
50 1.5 christos LDFLAGS=
51 1.7 christos LD_NANOSLEEP=
52 1.5 christos LD_OHASH=
53 1.7 christos LD_RECVMSG=
54 1.11 christos STATIC=
55 1.2 christos
56 1.2 christos BUILD_CGI=0
57 1.7 christos BUILD_CATMAN=0
58 1.7 christos INSTALL_LIBMANDOC=0
59 1.2 christos
60 1.7 christos HAVE_CMSG=
61 1.7 christos HAVE_CMSG_XPG42=0
62 1.2 christos HAVE_DIRENT_NAMLEN=
63 1.7 christos HAVE_EFTYPE=
64 1.7 christos HAVE_ENDIAN=
65 1.5 christos HAVE_ERR=
66 1.2 christos HAVE_FTS=
67 1.7 christos HAVE_FTS_COMPARE_CONST=
68 1.5 christos HAVE_GETLINE=
69 1.2 christos HAVE_GETSUBOPT=
70 1.5 christos HAVE_ISBLANK=
71 1.5 christos HAVE_MKDTEMP=
72 1.7 christos HAVE_NANOSLEEP=
73 1.7 christos HAVE_NTOHL=
74 1.7 christos HAVE_O_DIRECTORY=
75 1.7 christos HAVE_OHASH=
76 1.7 christos HAVE_PATH_MAX=
77 1.5 christos HAVE_PLEDGE=
78 1.5 christos HAVE_PROGNAME=
79 1.2 christos HAVE_REALLOCARRAY=
80 1.11 christos HAVE_RECALLOCARRAY=
81 1.7 christos HAVE_RECVMSG=
82 1.5 christos HAVE_REWB_BSD=
83 1.5 christos HAVE_REWB_SYSV=
84 1.5 christos HAVE_SANDBOX_INIT=
85 1.2 christos HAVE_STRCASESTR=
86 1.5 christos HAVE_STRINGLIST=
87 1.2 christos HAVE_STRLCAT=
88 1.2 christos HAVE_STRLCPY=
89 1.11 christos HAVE_STRNDUP=
90 1.2 christos HAVE_STRPTIME=
91 1.2 christos HAVE_STRSEP=
92 1.2 christos HAVE_STRTONUM=
93 1.7 christos HAVE_SYS_ENDIAN=
94 1.5 christos HAVE_VASPRINTF=
95 1.2 christos HAVE_WCHAR=
96 1.2 christos
97 1.2 christos PREFIX="/usr/local"
98 1.2 christos BINDIR=
99 1.2 christos SBINDIR=
100 1.11 christos BIN_FROM_SBIN=
101 1.2 christos INCLUDEDIR=
102 1.2 christos LIBDIR=
103 1.2 christos MANDIR=
104 1.2 christos HOMEBREWDIR=
105 1.2 christos
106 1.2 christos WWWPREFIX="/var/www"
107 1.2 christos HTDOCDIR=
108 1.2 christos CGIBINDIR=
109 1.2 christos
110 1.2 christos BINM_APROPOS="apropos"
111 1.7 christos BINM_CATMAN="catman"
112 1.5 christos BINM_MAKEWHATIS="makewhatis"
113 1.2 christos BINM_MAN="man"
114 1.5 christos BINM_SOELIM="soelim"
115 1.2 christos BINM_WHATIS="whatis"
116 1.2 christos MANM_MAN="man"
117 1.5 christos MANM_MANCONF="man.conf"
118 1.2 christos MANM_MDOC="mdoc"
119 1.2 christos MANM_ROFF="roff"
120 1.2 christos MANM_EQN="eqn"
121 1.2 christos MANM_TBL="tbl"
122 1.2 christos
123 1.2 christos INSTALL="install"
124 1.2 christos INSTALL_PROGRAM=
125 1.2 christos INSTALL_LIB=
126 1.2 christos INSTALL_MAN=
127 1.2 christos INSTALL_DATA=
128 1.7 christos LN="ln -f"
129 1.2 christos
130 1.2 christos # --- manual settings from configure.local -----------------------------
131 1.2 christos
132 1.5 christos if [ -r ./configure.local ]; then
133 1.11 christos echo "file configure.local: reading..." 1>&2
134 1.11 christos echo "file configure.local: reading..." 1>&3
135 1.2 christos cat ./configure.local 1>&3
136 1.2 christos . ./configure.local
137 1.2 christos else
138 1.11 christos echo "file configure.local: no (fully automatic configuration)" 1>&2
139 1.11 christos echo "file configure.local: no (fully automatic configuration)" 1>&3
140 1.2 christos fi
141 1.2 christos echo 1>&3
142 1.2 christos
143 1.11 christos # --- tests functions --------------------------------------------------
144 1.2 christos
145 1.2 christos # Check whether this HAVE_ setting is manually overridden.
146 1.2 christos # If yes, use the override, if no, do not decide anything yet.
147 1.11 christos # Arguments: test file name, test var name, manual value
148 1.2 christos ismanual() {
149 1.7 christos [ -z "${3}" ] && return 1
150 1.11 christos echo "tested ${1}: HAVE_${2}=${3} (manual)" 1>&2
151 1.11 christos echo "tested ${1}: HAVE_${2}=${3} (manual)" 1>&3
152 1.2 christos echo 1>&3
153 1.2 christos return 0
154 1.2 christos }
155 1.2 christos
156 1.2 christos # Run a single autoconfiguration test.
157 1.2 christos # In case of success, enable the feature.
158 1.2 christos # In case of failure, do not decide anything yet.
159 1.11 christos # Arguments: test file name, test var name, additional CFLAGS
160 1.2 christos singletest() {
161 1.2 christos cat 1>&3 << __HEREDOC__
162 1.11 christos testing ${1}${3} ...
163 1.7 christos ${COMP} -o test-${1} test-${1}.c ${3}
164 1.2 christos __HEREDOC__
165 1.2 christos
166 1.7 christos if ${COMP} -o "test-${1}" "${SOURCEDIR}/test-${1}.c" ${3} 1>&3 2>&3
167 1.7 christos then
168 1.11 christos echo "partial result of ${1}${3}: ${CC} succeeded" 1>&3
169 1.2 christos else
170 1.11 christos echo "result of ${1}${3}: ${CC} failed with exit status $?" 1>&3
171 1.11 christos echo "result of compiling ${1}${3}: no" 1>&3
172 1.2 christos echo 1>&3
173 1.2 christos return 1
174 1.2 christos fi
175 1.2 christos
176 1.2 christos if ./test-${1} 1>&3 2>&3; then
177 1.11 christos echo "tested ${1}${3}: yes" 1>&2
178 1.11 christos echo "result of running ${1}${3}: yes" 1>&3
179 1.2 christos echo 1>&3
180 1.2 christos eval HAVE_${2}=1
181 1.2 christos rm "test-${1}"
182 1.2 christos return 0
183 1.2 christos else
184 1.11 christos echo "result of ${1}${3}: execution failed with exit status $?" 1>&3
185 1.11 christos echo "result of running ${1}${3}: no" 1>&3
186 1.2 christos echo 1>&3
187 1.2 christos rm "test-${1}"
188 1.2 christos return 1
189 1.2 christos fi
190 1.2 christos }
191 1.2 christos
192 1.2 christos # Run a complete autoconfiguration test, including the check for
193 1.2 christos # a manual override and disabling the feature on failure.
194 1.11 christos # Arguments: test file name, test var name, additional CFLAGS
195 1.1 joerg runtest() {
196 1.2 christos eval _manual=\${HAVE_${2}}
197 1.7 christos ismanual "${1}" "${2}" "${_manual}" && return 0
198 1.2 christos singletest "${1}" "${2}" "${3}" && return 0
199 1.11 christos echo "tested ${1}${3}: no" 1>&2
200 1.2 christos eval HAVE_${2}=0
201 1.2 christos return 1
202 1.1 joerg }
203 1.1 joerg
204 1.7 christos # Select a UTF-8 locale.
205 1.7 christos get_locale() {
206 1.7 christos [ -n "${HAVE_WCHAR}" ] && [ "${HAVE_WCHAR}" -eq 0 ] && return 0
207 1.7 christos ismanual UTF8_LOCALE UTF8_LOCALE "$UTF8_LOCALE" && return 0
208 1.11 christos echo "testing UTF8_LOCALE ..." 1>&3
209 1.7 christos UTF8_LOCALE=`locale -a | grep -i '^en_US\.UTF-*8$' | head -n 1`
210 1.7 christos if [ -z "${UTF8_LOCALE}" ]; then
211 1.7 christos UTF8_LOCALE=`locale -a | grep -i '\.UTF-*8' | head -n 1`
212 1.7 christos [ -n "${UTF8_LOCALE}" ] || return 1
213 1.7 christos fi
214 1.11 christos echo "selected UTF8_LOCALE=${UTF8_LOCALE}" 1>&2
215 1.11 christos echo "selected UTF8_LOCALE=${UTF8_LOCALE}" 1>&3
216 1.7 christos echo 1>&3
217 1.7 christos return 0;
218 1.7 christos }
219 1.7 christos
220 1.11 christos # --- compiler options -------------------------------------------------
221 1.11 christos
222 1.11 christos if [ -n "${CFLAGS}" ]; then
223 1.11 christos COMP="${CC} ${CFLAGS}"
224 1.11 christos echo "selected CFLAGS=\"${CFLAGS}\" (manual)" 1>&2
225 1.11 christos echo "selected CFLAGS=\"${CFLAGS}\" (manual)" 1>&3
226 1.11 christos echo 1>&3
227 1.11 christos else
228 1.11 christos CFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes"
229 1.11 christos CFLAGS="${CFLAGS} -Wwrite-strings -Wno-unused-parameter"
230 1.11 christos COMP="${CC} ${CFLAGS} -Wno-unused -Werror"
231 1.11 christos echo -n "tested ${CC} -W: " 1>&2
232 1.11 christos echo -n "testing ${CC} -W: " 1>&3
233 1.11 christos runtest noop WFLAG || true
234 1.11 christos if [ "${HAVE_WFLAG}" -eq 0 ]; then
235 1.11 christos CFLAGS="-g"
236 1.11 christos COMP="${CC} ${CFLAGS}"
237 1.11 christos fi
238 1.11 christos echo "selected CFLAGS=\"${CFLAGS}\"" 1>&2
239 1.11 christos echo "selected CFLAGS=\"${CFLAGS}\"" 1>&3
240 1.11 christos echo 1>&3
241 1.11 christos fi
242 1.11 christos
243 1.11 christos if [ -n "${STATIC}" ]; then
244 1.11 christos echo "selected STATIC=\"${STATIC}\" (manual)" 1>&2
245 1.11 christos echo "selected STATIC=\"${STATIC}\" (manual)" 1>&3
246 1.11 christos echo 1>&3
247 1.11 christos else
248 1.11 christos runtest noop STATIC -static || true
249 1.11 christos [ ${HAVE_STATIC} -eq 0 ] || STATIC="-static"
250 1.11 christos echo "selected STATIC=\"${STATIC}\"" 1>&2
251 1.11 christos echo "selected STATIC=\"${STATIC}\"" 1>&3
252 1.11 christos echo 1>&3
253 1.11 christos fi
254 1.11 christos
255 1.11 christos # --- tests for config.h ----------------------------------------------
256 1.7 christos
257 1.2 christos # --- library functions ---
258 1.2 christos runtest dirent-namlen DIRENT_NAMLEN || true
259 1.7 christos runtest be32toh ENDIAN || true
260 1.7 christos runtest be32toh SYS_ENDIAN -DSYS_ENDIAN || true
261 1.7 christos runtest EFTYPE EFTYPE || true
262 1.5 christos runtest err ERR || true
263 1.5 christos runtest getline GETLINE || true
264 1.2 christos runtest getsubopt GETSUBOPT || true
265 1.5 christos runtest isblank ISBLANK || true
266 1.5 christos runtest mkdtemp MKDTEMP || true
267 1.7 christos runtest ntohl NTOHL || true
268 1.7 christos runtest O_DIRECTORY O_DIRECTORY || true
269 1.7 christos runtest PATH_MAX PATH_MAX || true
270 1.5 christos runtest pledge PLEDGE || true
271 1.5 christos runtest sandbox_init SANDBOX_INIT || true
272 1.5 christos runtest progname PROGNAME || true
273 1.2 christos runtest reallocarray REALLOCARRAY || true
274 1.11 christos runtest recallocarray RECALLOCARRAY || true
275 1.5 christos runtest rewb-bsd REWB_BSD || true
276 1.5 christos runtest rewb-sysv REWB_SYSV || true
277 1.2 christos runtest strcasestr STRCASESTR || true
278 1.5 christos runtest stringlist STRINGLIST || true
279 1.2 christos runtest strlcat STRLCAT || true
280 1.2 christos runtest strlcpy STRLCPY || true
281 1.11 christos runtest strndup STRNDUP || true
282 1.2 christos runtest strptime STRPTIME || true
283 1.2 christos runtest strsep STRSEP || true
284 1.2 christos runtest strtonum STRTONUM || true
285 1.5 christos runtest vasprintf VASPRINTF || true
286 1.2 christos
287 1.7 christos if [ ${HAVE_ENDIAN} -eq 0 -a \
288 1.7 christos ${HAVE_SYS_ENDIAN} -eq 0 -a \
289 1.7 christos ${HAVE_NTOHL} -eq 0 ]; then
290 1.7 christos echo "FATAL: no endian conversion functions found" 1>&2
291 1.7 christos echo "FATAL: no endian conversion functions found" 1>&3
292 1.7 christos exit 1
293 1.7 christos fi
294 1.7 christos
295 1.7 christos if ismanual fts FTS ${HAVE_FTS}; then
296 1.7 christos HAVE_FTS_COMPARE_CONST=0
297 1.7 christos elif runtest fts FTS_COMPARE_CONST -DFTS_COMPARE_CONST; then
298 1.7 christos HAVE_FTS=1
299 1.7 christos else
300 1.7 christos runtest fts FTS || true
301 1.7 christos fi
302 1.7 christos
303 1.7 christos # --- wide character and locale support ---
304 1.7 christos if get_locale; then
305 1.7 christos runtest wchar WCHAR -DUTF8_LOCALE=\"${UTF8_LOCALE}\" || true
306 1.7 christos else
307 1.7 christos HAVE_WCHAR=0
308 1.11 christos echo "tested wchar: no (no UTF8_LOCALE)" 1>&2
309 1.11 christos echo "tested wchar: no (no UTF8_LOCALE)" 1>&3
310 1.11 christos echo 1>&3
311 1.7 christos fi
312 1.7 christos
313 1.7 christos # --- nanosleep ---
314 1.7 christos if [ -n "${LD_NANOSLEEP}" ]; then
315 1.7 christos runtest nanosleep NANOSLEEP "${LD_NANOSLEEP}" || true
316 1.7 christos elif singletest nanosleep NANOSLEEP; then
317 1.7 christos :
318 1.7 christos elif runtest nanosleep NANOSLEEP "-lrt"; then
319 1.7 christos LD_NANOSLEEP="-lrt"
320 1.7 christos fi
321 1.7 christos if [ "${HAVE_NANOSLEEP}" -eq 0 ]; then
322 1.7 christos echo "FATAL: nanosleep: no" 1>&2
323 1.7 christos echo "FATAL: nanosleep: no" 1>&3
324 1.7 christos exit 1
325 1.7 christos fi
326 1.7 christos
327 1.7 christos if [ ${BUILD_CATMAN} -gt 0 ]; then
328 1.7 christos # --- recvmsg ---
329 1.7 christos if [ -n "${LD_RECVMSG}" ]; then
330 1.7 christos runtest recvmsg RECVMSG "${LD_RECVMSG}" || true
331 1.7 christos elif singletest recvmsg RECVMSG; then
332 1.7 christos :
333 1.7 christos elif runtest recvmsg RECVMSG "-lsocket"; then
334 1.7 christos LD_RECVMSG="-lsocket"
335 1.5 christos fi
336 1.7 christos if [ "${HAVE_RECVMSG}" -eq 0 ]; then
337 1.7 christos echo "FATAL: recvmsg: no" 1>&2
338 1.7 christos echo "FATAL: recvmsg: no" 1>&3
339 1.7 christos echo "Without recvmsg(2), you cannot BUILD_CATMAN." 1>&2
340 1.7 christos exit 1
341 1.5 christos fi
342 1.2 christos
343 1.7 christos # --- cmsg ---
344 1.7 christos if singletest cmsg CMSG; then
345 1.7 christos :
346 1.7 christos elif runtest cmsg CMSG "-D_XPG4_2"; then
347 1.7 christos HAVE_CMSG_XPG42=1
348 1.7 christos fi
349 1.7 christos if [ "${HAVE_CMSG}" -eq 0 ]; then
350 1.7 christos echo "FATAL: cmsg: no" 1>&2
351 1.7 christos echo "FATAL: cmsg: no" 1>&3
352 1.7 christos echo "Without CMSG_FIRSTHDR(3), you cannot BUILD_CATMAN." 1>&2
353 1.7 christos exit 1
354 1.7 christos fi
355 1.2 christos fi
356 1.2 christos
357 1.2 christos # --- ohash ---
358 1.7 christos if ismanual ohash OHASH "${HAVE_OHASH}"; then
359 1.2 christos :
360 1.5 christos elif [ -n "${LD_OHASH}" ]; then
361 1.5 christos runtest ohash OHASH "${LD_OHASH}" || true
362 1.2 christos elif singletest ohash OHASH; then
363 1.2 christos :
364 1.2 christos elif runtest ohash OHASH "-lutil"; then
365 1.5 christos LD_OHASH="-lutil"
366 1.5 christos fi
367 1.5 christos if [ "${HAVE_OHASH}" -eq 0 ]; then
368 1.5 christos LD_OHASH=
369 1.2 christos fi
370 1.2 christos
371 1.5 christos # --- LDADD ---
372 1.7 christos LDADD="${LDADD} ${LD_NANOSLEEP} ${LD_RECVMSG} ${LD_OHASH} -lz"
373 1.11 christos echo "selected LDADD=\"${LDADD}\"" 1>&2
374 1.11 christos echo "selected LDADD=\"${LDADD}\"" 1>&3
375 1.5 christos echo 1>&3
376 1.2 christos
377 1.2 christos # --- write config.h ---
378 1.2 christos
379 1.2 christos exec > config.h
380 1.2 christos
381 1.2 christos cat << __HEREDOC__
382 1.5 christos #ifdef __cplusplus
383 1.5 christos #error "Do not use C++. See the INSTALL file."
384 1.5 christos #endif
385 1.5 christos
386 1.7 christos #if !defined(__GNUC__) || (__GNUC__ < 4)
387 1.7 christos #define __attribute__(x)
388 1.7 christos #endif
389 1.2 christos
390 1.2 christos #ifdef HAVE_NBTOOL_CONFIG_H
391 1.2 christos #include "nbtool_config.h"
392 1.2 christos #endif
393 1.2 christos
394 1.2 christos #if defined(__linux__) || defined(__MINT__)
395 1.2 christos #define _GNU_SOURCE /* See test-*.c what needs this. */
396 1.2 christos #endif
397 1.2 christos
398 1.2 christos __HEREDOC__
399 1.2 christos
400 1.11 christos [ ${HAVE_GETLINE} -eq 0 -o \
401 1.11 christos ${HAVE_REALLOCARRAY} -eq 0 -o ${HAVE_RECALLOCARRAY} -eq 0 -o \
402 1.11 christos ${HAVE_STRLCAT} -eq 0 -o ${HAVE_STRLCPY} -eq 0 -o \
403 1.11 christos ${HAVE_STRNDUP} -eq 0 ] \
404 1.2 christos && echo "#include <sys/types.h>"
405 1.5 christos [ ${HAVE_VASPRINTF} -eq 0 ] && echo "#include <stdarg.h>"
406 1.5 christos [ ${HAVE_GETLINE} -eq 0 ] && echo "#include <stdio.h>"
407 1.2 christos
408 1.1 joerg echo
409 1.5 christos echo "#define MAN_CONF_FILE \"/etc/${MANM_MANCONF}\""
410 1.11 christos echo "#define MANPATH_BASE \"${MANPATH_BASE}\""
411 1.5 christos echo "#define MANPATH_DEFAULT \"${MANPATH_DEFAULT}\""
412 1.2 christos [ -n "${OSNAME}" ] && echo "#define OSNAME \"${OSNAME}\""
413 1.7 christos [ -n "${UTF8_LOCALE}" ] && echo "#define UTF8_LOCALE \"${UTF8_LOCALE}\""
414 1.2 christos [ -n "${HOMEBREWDIR}" ] && echo "#define HOMEBREWDIR \"${HOMEBREWDIR}\""
415 1.8 christos [ ${HAVE_EFTYPE} -eq 0 ] && echo "#ifndef EFTYPE" && \
416 1.8 christos echo "#define EFTYPE EINVAL" && echo "#endif"
417 1.7 christos [ ${HAVE_O_DIRECTORY} -eq 0 ] && echo "#define O_DIRECTORY 0"
418 1.7 christos [ ${HAVE_PATH_MAX} -eq 0 ] && echo "#define PATH_MAX 4096"
419 1.7 christos if [ ${HAVE_ENDIAN} -eq 0 -a ${HAVE_SYS_ENDIAN} -eq 0 ]; then
420 1.7 christos echo "#define be32toh ntohl"
421 1.7 christos echo "#define htobe32 htonl"
422 1.7 christos fi
423 1.2 christos
424 1.2 christos cat << __HEREDOC__
425 1.2 christos #ifndef HAVE_NBTOOL_CONFIG_H
426 1.7 christos #define HAVE_CMSG_XPG42 ${HAVE_CMSG_XPG42}
427 1.2 christos #define HAVE_DIRENT_NAMLEN ${HAVE_DIRENT_NAMLEN}
428 1.7 christos #define HAVE_ENDIAN ${HAVE_ENDIAN}
429 1.5 christos #define HAVE_ERR ${HAVE_ERR}
430 1.2 christos #define HAVE_FTS ${HAVE_FTS}
431 1.7 christos #define HAVE_FTS_COMPARE_CONST ${HAVE_FTS_COMPARE_CONST}
432 1.5 christos #define HAVE_GETLINE ${HAVE_GETLINE}
433 1.2 christos #define HAVE_GETSUBOPT ${HAVE_GETSUBOPT}
434 1.5 christos #define HAVE_ISBLANK ${HAVE_ISBLANK}
435 1.5 christos #define HAVE_MKDTEMP ${HAVE_MKDTEMP}
436 1.7 christos #define HAVE_NTOHL ${HAVE_NTOHL}
437 1.5 christos #define HAVE_PLEDGE ${HAVE_PLEDGE}
438 1.5 christos #define HAVE_PROGNAME ${HAVE_PROGNAME}
439 1.2 christos #define HAVE_REALLOCARRAY ${HAVE_REALLOCARRAY}
440 1.11 christos #define HAVE_RECALLOCARRAY ${HAVE_RECALLOCARRAY}
441 1.5 christos #define HAVE_REWB_BSD ${HAVE_REWB_BSD}
442 1.5 christos #define HAVE_REWB_SYSV ${HAVE_REWB_SYSV}
443 1.5 christos #define HAVE_SANDBOX_INIT ${HAVE_SANDBOX_INIT}
444 1.2 christos #define HAVE_STRCASESTR ${HAVE_STRCASESTR}
445 1.5 christos #define HAVE_STRINGLIST ${HAVE_STRINGLIST}
446 1.2 christos #define HAVE_STRLCAT ${HAVE_STRLCAT}
447 1.2 christos #define HAVE_STRLCPY ${HAVE_STRLCPY}
448 1.11 christos #define HAVE_STRNDUP ${HAVE_STRNDUP}
449 1.2 christos #define HAVE_STRPTIME ${HAVE_STRPTIME}
450 1.2 christos #define HAVE_STRSEP ${HAVE_STRSEP}
451 1.2 christos #define HAVE_STRTONUM ${HAVE_STRTONUM}
452 1.7 christos #define HAVE_SYS_ENDIAN ${HAVE_SYS_ENDIAN}
453 1.5 christos #define HAVE_VASPRINTF ${HAVE_VASPRINTF}
454 1.2 christos #define HAVE_WCHAR ${HAVE_WCHAR}
455 1.2 christos #define HAVE_OHASH ${HAVE_OHASH}
456 1.2 christos #endif
457 1.2 christos
458 1.2 christos #define BINM_APROPOS "${BINM_APROPOS}"
459 1.7 christos #define BINM_CATMAN "${BINM_CATMAN}"
460 1.5 christos #define BINM_MAKEWHATIS "${BINM_MAKEWHATIS}"
461 1.2 christos #define BINM_MAN "${BINM_MAN}"
462 1.5 christos #define BINM_SOELIM "${BINM_SOELIM}"
463 1.2 christos #define BINM_WHATIS "${BINM_WHATIS}"
464 1.2 christos
465 1.5 christos __HEREDOC__
466 1.2 christos
467 1.5 christos if [ ${HAVE_ERR} -eq 0 ]; then
468 1.5 christos echo "extern void err(int, const char *, ...);"
469 1.5 christos echo "extern void errx(int, const char *, ...);"
470 1.5 christos echo "extern void warn(const char *, ...);"
471 1.5 christos echo "extern void warnx(const char *, ...);"
472 1.5 christos fi
473 1.2 christos
474 1.5 christos [ ${HAVE_GETLINE} -eq 0 ] && \
475 1.5 christos echo "extern ssize_t getline(char **, size_t *, FILE *);"
476 1.2 christos
477 1.2 christos [ ${HAVE_GETSUBOPT} -eq 0 ] && \
478 1.2 christos echo "extern int getsubopt(char **, char * const *, char **);"
479 1.2 christos
480 1.6 joerg if [ ${HAVE_ISBLANK} -eq 0 ]; then
481 1.6 joerg echo "#undef isblank"
482 1.5 christos echo "extern int isblank(int);"
483 1.6 joerg fi
484 1.5 christos
485 1.5 christos [ ${HAVE_MKDTEMP} -eq 0 ] && \
486 1.5 christos echo "extern char *mkdtemp(char *);"
487 1.5 christos
488 1.5 christos if [ ${HAVE_PROGNAME} -eq 0 ]; then
489 1.5 christos echo "extern const char *getprogname(void);"
490 1.5 christos echo "extern void setprogname(const char *);"
491 1.5 christos fi
492 1.5 christos
493 1.2 christos [ ${HAVE_REALLOCARRAY} -eq 0 ] && \
494 1.2 christos echo "extern void *reallocarray(void *, size_t, size_t);"
495 1.2 christos
496 1.11 christos [ ${HAVE_RECALLOCARRAY} -eq 0 ] && \
497 1.11 christos echo "extern void *recallocarray(void *, size_t, size_t, size_t);"
498 1.11 christos
499 1.2 christos [ ${HAVE_STRCASESTR} -eq 0 ] && \
500 1.2 christos echo "extern char *strcasestr(const char *, const char *);"
501 1.2 christos
502 1.2 christos [ ${HAVE_STRLCAT} -eq 0 ] && \
503 1.2 christos echo "extern size_t strlcat(char *, const char *, size_t);"
504 1.2 christos
505 1.2 christos [ ${HAVE_STRLCPY} -eq 0 ] && \
506 1.2 christos echo "extern size_t strlcpy(char *, const char *, size_t);"
507 1.2 christos
508 1.11 christos [ ${HAVE_STRNDUP} -eq 0 ] && \
509 1.11 christos echo "extern char *strndup(const char *, size_t);"
510 1.11 christos
511 1.11 christos [ ${HAVE_STRSEP} -eq 0 ] && \
512 1.2 christos echo "extern char *strsep(char **, const char *);"
513 1.9 jakllsch fi
514 1.2 christos
515 1.2 christos [ ${HAVE_STRTONUM} -eq 0 ] && \
516 1.2 christos echo "extern long long strtonum(const char *, long long, long long, const char **);"
517 1.2 christos
518 1.5 christos [ ${HAVE_VASPRINTF} -eq 0 ] && \
519 1.5 christos echo "extern int vasprintf(char **, const char *, va_list);"
520 1.5 christos
521 1.11 christos echo "file config.h: written" 1>&2
522 1.11 christos echo "file config.h: written" 1>&3
523 1.2 christos
524 1.2 christos # --- tests for Makefile.local -----------------------------------------
525 1.2 christos
526 1.2 christos exec > Makefile.local
527 1.2 christos
528 1.11 christos [ -z "${BINDIR}" ] && BINDIR="${PREFIX}/bin"
529 1.11 christos [ -z "${SBINDIR}" ] && SBINDIR="${PREFIX}/sbin"
530 1.11 christos [ -z "${BIN_FROM_SBIN}" ] && BIN_FROM_SBIN="../bin"
531 1.11 christos [ -z "${INCLUDEDIR}" ] && INCLUDEDIR="${PREFIX}/include/mandoc"
532 1.11 christos [ -z "${LIBDIR}" ] && LIBDIR="${PREFIX}/lib/mandoc"
533 1.11 christos [ -z "${MANDIR}" ] && MANDIR="${PREFIX}/man"
534 1.2 christos
535 1.11 christos [ -z "${HTDOCDIR}" ] && HTDOCDIR="${WWWPREFIX}/htdocs"
536 1.11 christos [ -z "${CGIBINDIR}" ] && CGIBINDIR="${WWWPREFIX}/cgi-bin"
537 1.2 christos
538 1.2 christos [ -z "${INSTALL_PROGRAM}" ] && INSTALL_PROGRAM="${INSTALL} -m 0555"
539 1.2 christos [ -z "${INSTALL_LIB}" ] && INSTALL_LIB="${INSTALL} -m 0444"
540 1.2 christos [ -z "${INSTALL_MAN}" ] && INSTALL_MAN="${INSTALL} -m 0444"
541 1.2 christos [ -z "${INSTALL_DATA}" ] && INSTALL_DATA="${INSTALL} -m 0444"
542 1.2 christos
543 1.7 christos BUILD_TARGETS=
544 1.7 christos [ ${BUILD_CGI} -gt 0 ] && BUILD_TARGETS="man.cgi"
545 1.7 christos [ ${BUILD_CATMAN} -gt 0 ] && \
546 1.7 christos BUILD_TARGETS="${BUILD_TARGETS} mandocd catman"
547 1.7 christos INSTALL_TARGETS=
548 1.7 christos [ ${INSTALL_LIBMANDOC} -gt 0 ] && INSTALL_TARGETS="lib-install"
549 1.2 christos [ ${BUILD_CGI} -gt 0 ] && INSTALL_TARGETS="${INSTALL_TARGETS} cgi-install"
550 1.7 christos [ ${BUILD_CATMAN} -gt 0 ] && \
551 1.7 christos INSTALL_TARGETS="${INSTALL_TARGETS} catman-install"
552 1.2 christos
553 1.2 christos cat << __HEREDOC__
554 1.2 christos BUILD_TARGETS = ${BUILD_TARGETS}
555 1.2 christos INSTALL_TARGETS = ${INSTALL_TARGETS}
556 1.5 christos CC = ${CC}
557 1.2 christos CFLAGS = ${CFLAGS}
558 1.5 christos LDADD = ${LDADD}
559 1.5 christos LDFLAGS = ${LDFLAGS}
560 1.2 christos STATIC = ${STATIC}
561 1.2 christos PREFIX = ${PREFIX}
562 1.2 christos BINDIR = ${BINDIR}
563 1.2 christos SBINDIR = ${SBINDIR}
564 1.11 christos BIN_FROM_SBIN = ${BIN_FROM_SBIN}
565 1.2 christos INCLUDEDIR = ${INCLUDEDIR}
566 1.2 christos LIBDIR = ${LIBDIR}
567 1.2 christos MANDIR = ${MANDIR}
568 1.2 christos WWWPREFIX = ${WWWPREFIX}
569 1.2 christos HTDOCDIR = ${HTDOCDIR}
570 1.2 christos CGIBINDIR = ${CGIBINDIR}
571 1.2 christos BINM_APROPOS = ${BINM_APROPOS}
572 1.7 christos BINM_CATMAN = ${BINM_CATMAN}
573 1.5 christos BINM_MAKEWHATIS = ${BINM_MAKEWHATIS}
574 1.2 christos BINM_MAN = ${BINM_MAN}
575 1.5 christos BINM_SOELIM = ${BINM_SOELIM}
576 1.2 christos BINM_WHATIS = ${BINM_WHATIS}
577 1.2 christos MANM_MAN = ${MANM_MAN}
578 1.5 christos MANM_MANCONF = ${MANM_MANCONF}
579 1.2 christos MANM_MDOC = ${MANM_MDOC}
580 1.2 christos MANM_ROFF = ${MANM_ROFF}
581 1.2 christos MANM_EQN = ${MANM_EQN}
582 1.2 christos MANM_TBL = ${MANM_TBL}
583 1.2 christos INSTALL = ${INSTALL}
584 1.2 christos INSTALL_PROGRAM = ${INSTALL_PROGRAM}
585 1.2 christos INSTALL_LIB = ${INSTALL_LIB}
586 1.2 christos INSTALL_MAN = ${INSTALL_MAN}
587 1.2 christos INSTALL_DATA = ${INSTALL_DATA}
588 1.7 christos LN = ${LN}
589 1.2 christos __HEREDOC__
590 1.2 christos
591 1.11 christos echo "file Makefile.local: written" 1>&2
592 1.11 christos echo "file Makefile.local: written" 1>&3
593 1.1 joerg
594 1.1 joerg exit 0
595