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