1274876Sbapt#!/bin/sh
2274876Sbapt#
3322249Sbapt# $Id: configure,v 1.64 2017/07/01 09:47:30 schwarze Exp $
4316420Sbapt#
5322249Sbapt# Copyright (c) 2014, 2015, 2016, 2017 Ingo Schwarze <schwarze@openbsd.org>
6274876Sbapt#
7274876Sbapt# Permission to use, copy, modify, and distribute this software for any
8274876Sbapt# purpose with or without fee is hereby granted, provided that the above
9274876Sbapt# copyright notice and this permission notice appear in all copies.
10274876Sbapt#
11274876Sbapt# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12274876Sbapt# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13274876Sbapt# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14274876Sbapt# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15274876Sbapt# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16274876Sbapt# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17274876Sbapt# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18274876Sbapt
19274876Sbaptset -e
20274876Sbapt
21294113Sbapt[ -w config.log ] && mv config.log config.log.old
22294113Sbapt[ -w config.h   ] && mv config.h config.h.old
23274876Sbapt
24275432Sbapt# Output file descriptor usage:
25275432Sbapt# 1 (stdout): config.h, Makefile.local
26275432Sbapt# 2 (stderr): original stderr, usually to the console
27275432Sbapt# 3: config.log
28275432Sbapt
29275432Sbaptexec 3> config.log
30275432Sbaptecho "config.log: writing..."
31275432Sbapt
32275432Sbapt# --- default settings -------------------------------------------------
33275432Sbapt# Initialize all variables here,
34275432Sbapt# such that nothing can leak in from the environment.
35275432Sbapt
36322249SbaptSOURCEDIR=`dirname "$0"`
37322249Sbapt
38322249SbaptMANPATH_BASE="/usr/share/man:/usr/X11R6/man"
39294113SbaptMANPATH_DEFAULT="/usr/share/man:/usr/X11R6/man:/usr/local/man"
40275432SbaptOSNAME=
41316420SbaptUTF8_LOCALE=
42275432Sbapt
43316420SbaptCC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | env -i make -sf -`
44316420SbaptCFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings"
45316420SbaptCFLAGS="${CFLAGS} -Wno-unused-parameter"
46307795SbaptLDADD=
47307795SbaptLDFLAGS=
48316420SbaptLD_NANOSLEEP=
49307795SbaptLD_OHASH=
50322249SbaptLD_RECVMSG=
51275432SbaptSTATIC="-static"
52275432Sbapt
53275432SbaptBUILD_CGI=0
54322249SbaptBUILD_CATMAN=0
55316420SbaptINSTALL_LIBMANDOC=0
56275432Sbapt
57322249SbaptHAVE_CMSG=
58322249SbaptHAVE_CMSG_XPG42=0
59275432SbaptHAVE_DIRENT_NAMLEN=
60316420SbaptHAVE_EFTYPE=
61316420SbaptHAVE_ENDIAN=
62294113SbaptHAVE_ERR=
63275432SbaptHAVE_FTS=
64316420SbaptHAVE_FTS_COMPARE_CONST=
65294113SbaptHAVE_GETLINE=
66275432SbaptHAVE_GETSUBOPT=
67294113SbaptHAVE_ISBLANK=
68294113SbaptHAVE_MKDTEMP=
69316420SbaptHAVE_NANOSLEEP=
70316420SbaptHAVE_NTOHL=
71322249SbaptHAVE_O_DIRECTORY=
72316420SbaptHAVE_OHASH=
73316420SbaptHAVE_PATH_MAX=
74294113SbaptHAVE_PLEDGE=
75294113SbaptHAVE_PROGNAME=
76275432SbaptHAVE_REALLOCARRAY=
77322249SbaptHAVE_RECALLOCARRAY=
78322249SbaptHAVE_RECVMSG=
79294113SbaptHAVE_REWB_BSD=
80294113SbaptHAVE_REWB_SYSV=
81307795SbaptHAVE_SANDBOX_INIT=
82275432SbaptHAVE_STRCASESTR=
83294113SbaptHAVE_STRINGLIST=
84275432SbaptHAVE_STRLCAT=
85275432SbaptHAVE_STRLCPY=
86275432SbaptHAVE_STRPTIME=
87275432SbaptHAVE_STRSEP=
88279527SbaptHAVE_STRTONUM=
89316420SbaptHAVE_SYS_ENDIAN=
90294113SbaptHAVE_VASPRINTF=
91275432SbaptHAVE_WCHAR=
92275432Sbapt
93275432SbaptPREFIX="/usr/local"
94275432SbaptBINDIR=
95275432SbaptSBINDIR=
96322249SbaptBIN_FROM_SBIN=
97275432SbaptINCLUDEDIR=
98275432SbaptLIBDIR=
99275432SbaptMANDIR=
100279527SbaptHOMEBREWDIR=
101275432Sbapt
102275432SbaptWWWPREFIX="/var/www"
103275432SbaptHTDOCDIR=
104275432SbaptCGIBINDIR=
105275432Sbapt
106276219SbaptBINM_APROPOS="apropos"
107322249SbaptBINM_CATMAN="catman"
108294113SbaptBINM_MAKEWHATIS="makewhatis"
109276219SbaptBINM_MAN="man"
110294113SbaptBINM_SOELIM="soelim"
111276219SbaptBINM_WHATIS="whatis"
112276219SbaptMANM_MAN="man"
113294113SbaptMANM_MANCONF="man.conf"
114276219SbaptMANM_MDOC="mdoc"
115276219SbaptMANM_ROFF="roff"
116276219SbaptMANM_EQN="eqn"
117276219SbaptMANM_TBL="tbl"
118276219Sbapt
119275432SbaptINSTALL="install"
120275432SbaptINSTALL_PROGRAM=
121275432SbaptINSTALL_LIB=
122275432SbaptINSTALL_MAN=
123275432SbaptINSTALL_DATA=
124322249SbaptLN="ln -f"
125275432Sbapt
126275432Sbapt# --- manual settings from configure.local -----------------------------
127275432Sbapt
128294113Sbaptif [ -r ./configure.local ]; then
129275432Sbapt	echo "configure.local: reading..." 1>&2
130275432Sbapt	echo "configure.local: reading..." 1>&3
131275432Sbapt	cat ./configure.local 1>&3
132275432Sbapt	. ./configure.local
133275432Sbaptelse
134275432Sbapt	echo "configure.local: no (fully automatic configuration)" 1>&2
135275432Sbapt	echo "configure.local: no (fully automatic configuration)" 1>&3
136275432Sbaptfi
137275432Sbaptecho 1>&3
138275432Sbapt
139275432Sbapt# --- tests for config.h  ----------------------------------------------
140275432Sbapt
141275432SbaptCOMP="${CC} ${CFLAGS} -Wno-unused -Werror"
142275432Sbapt
143275432Sbapt# Check whether this HAVE_ setting is manually overridden.
144275432Sbapt# If yes, use the override, if no, do not decide anything yet.
145275432Sbapt# Arguments: lower-case test name, manual value
146275432Sbaptismanual() {
147316420Sbapt	[ -z "${3}" ] && return 1
148316420Sbapt	echo "${1}: manual (HAVE_${2}=${3})" 1>&2
149316420Sbapt	echo "${1}: manual (HAVE_${2}=${3})" 1>&3
150275432Sbapt	echo 1>&3
151275432Sbapt	return 0
152275432Sbapt}
153275432Sbapt
154275432Sbapt# Run a single autoconfiguration test.
155275432Sbapt# In case of success, enable the feature.
156275432Sbapt# In case of failure, do not decide anything yet.
157275432Sbapt# Arguments: lower-case test name, upper-case test name, additional CFLAGS
158275432Sbaptsingletest() {
159275432Sbapt	cat 1>&3 << __HEREDOC__
160316420Sbapt${1}${3}: testing...
161316420Sbapt${COMP} -o test-${1} test-${1}.c ${3}
162275432Sbapt__HEREDOC__
163275432Sbapt
164322249Sbapt	if ${COMP} -o "test-${1}" "${SOURCEDIR}/test-${1}.c" ${3} 1>&3 2>&3
165322249Sbapt	then
166316420Sbapt		echo "${1}${3}: ${CC} succeeded" 1>&3
167275432Sbapt	else
168316420Sbapt		echo "${1}${3}: ${CC} failed with $?" 1>&3
169275432Sbapt		echo 1>&3
170275432Sbapt		return 1
171275432Sbapt	fi
172275432Sbapt
173275432Sbapt	if ./test-${1} 1>&3 2>&3; then
174316420Sbapt		echo "${1}${3}: yes" 1>&2
175316420Sbapt		echo "${1}${3}: yes" 1>&3
176275432Sbapt		echo 1>&3
177275432Sbapt		eval HAVE_${2}=1
178275432Sbapt		rm "test-${1}"
179275432Sbapt		return 0
180275432Sbapt	else
181316420Sbapt		echo "${1}${3}: execution failed with $?" 1>&3
182275432Sbapt		echo 1>&3
183275432Sbapt		rm "test-${1}"
184275432Sbapt		return 1
185275432Sbapt	fi
186275432Sbapt}
187275432Sbapt
188275432Sbapt# Run a complete autoconfiguration test, including the check for
189275432Sbapt# a manual override and disabling the feature on failure.
190275432Sbapt# Arguments: lower case name, upper case name, additional CFLAGS
191274876Sbaptruntest() {
192275432Sbapt	eval _manual=\${HAVE_${2}}
193316420Sbapt	ismanual "${1}" "${2}" "${_manual}" && return 0
194275432Sbapt	singletest "${1}" "${2}" "${3}" && return 0
195316420Sbapt	echo "${1}${3}: no" 1>&2
196275432Sbapt	eval HAVE_${2}=0
197275432Sbapt	return 1
198274876Sbapt}
199274876Sbapt
200316420Sbapt# Select a UTF-8 locale.
201316420Sbaptget_locale() {
202316420Sbapt	[ -n "${HAVE_WCHAR}" ] && [ "${HAVE_WCHAR}" -eq 0 ] && return 0
203316420Sbapt	ismanual UTF8_LOCALE UTF8_LOCALE "$UTF8_LOCALE" && return 0
204316420Sbapt	echo "UTF8_LOCALE: testing..." 1>&3
205316420Sbapt	UTF8_LOCALE=`locale -a | grep -i '^en_US\.UTF-*8$' | head -n 1`
206316420Sbapt	if [ -z "${UTF8_LOCALE}" ]; then
207316420Sbapt		UTF8_LOCALE=`locale -a | grep -i '\.UTF-*8' | head -n 1`
208316420Sbapt		[ -n "${UTF8_LOCALE}" ] || return 1
209316420Sbapt	fi
210316420Sbapt	echo "UTF8_LOCALE=${UTF8_LOCALE}" 1>&2
211316420Sbapt	echo "UTF8_LOCALE=${UTF8_LOCALE}" 1>&3
212316420Sbapt	echo 1>&3
213316420Sbapt	return 0;
214316420Sbapt}
215316420Sbapt
216316420Sbapt
217275432Sbapt# --- library functions ---
218275432Sbaptruntest dirent-namlen	DIRENT_NAMLEN	|| true
219316420Sbaptruntest be32toh		ENDIAN		|| true
220316420Sbaptruntest be32toh		SYS_ENDIAN	-DSYS_ENDIAN || true
221316420Sbaptruntest EFTYPE		EFTYPE		|| true
222294113Sbaptruntest err		ERR		|| true
223294113Sbaptruntest getline		GETLINE		|| true
224275432Sbaptruntest getsubopt	GETSUBOPT	|| true
225294113Sbaptruntest isblank		ISBLANK		|| true
226294113Sbaptruntest mkdtemp		MKDTEMP		|| true
227316420Sbaptruntest ntohl		NTOHL		|| true
228322249Sbaptruntest O_DIRECTORY	O_DIRECTORY	|| true
229316420Sbaptruntest PATH_MAX	PATH_MAX	|| true
230294113Sbaptruntest pledge		PLEDGE		|| true
231307795Sbaptruntest sandbox_init	SANDBOX_INIT	|| true
232294113Sbaptruntest progname	PROGNAME	|| true
233275432Sbaptruntest reallocarray	REALLOCARRAY	|| true
234322249Sbaptruntest recallocarray	RECALLOCARRAY	|| true
235294113Sbaptruntest rewb-bsd	REWB_BSD	|| true
236294113Sbaptruntest rewb-sysv	REWB_SYSV	|| true
237275432Sbaptruntest strcasestr	STRCASESTR	|| true
238294113Sbaptruntest stringlist	STRINGLIST	|| true
239275432Sbaptruntest strlcat		STRLCAT		|| true
240275432Sbaptruntest strlcpy		STRLCPY		|| true
241275432Sbaptruntest strptime	STRPTIME	|| true
242275432Sbaptruntest strsep		STRSEP		|| true
243279527Sbaptruntest strtonum	STRTONUM	|| true
244294113Sbaptruntest vasprintf	VASPRINTF	|| true
245275432Sbapt
246316420Sbaptif [ ${HAVE_ENDIAN} -eq 0 -a \
247316420Sbapt     ${HAVE_SYS_ENDIAN} -eq 0 -a \
248316420Sbapt     ${HAVE_NTOHL} -eq 0 ]; then
249316420Sbapt	echo "FATAL: no endian conversion functions found" 1>&2
250316420Sbapt	echo "FATAL: no endian conversion functions found" 1>&3
251316420Sbapt	exit 1
252275432Sbaptfi
253316420Sbapt
254316420Sbaptif ismanual fts FTS ${HAVE_FTS}; then
255316420Sbapt	HAVE_FTS_COMPARE_CONST=0
256316420Sbaptelif runtest fts FTS_COMPARE_CONST -DFTS_COMPARE_CONST; then
257316420Sbapt	HAVE_FTS=1
258316420Sbaptelse
259316420Sbapt	runtest fts FTS || true
260275432Sbaptfi
261275432Sbapt
262316420Sbapt# --- wide character and locale support ---
263316420Sbaptif get_locale; then
264316420Sbapt	runtest wchar WCHAR -DUTF8_LOCALE=\"${UTF8_LOCALE}\" || true
265275432Sbaptelse
266316420Sbapt	HAVE_WCHAR=0
267316420Sbapt	echo "wchar: no (no UTF8_LOCALE)" 1>&2
268316420Sbapt	echo "wchar: no (no UTF8_LOCALE)" 1>&3
269275432Sbaptfi
270275432Sbapt
271316420Sbapt# --- nanosleep ---
272316420Sbaptif [ -n "${LD_NANOSLEEP}" ]; then
273316420Sbapt	runtest nanosleep NANOSLEEP "${LD_NANOSLEEP}" || true
274316420Sbaptelif singletest nanosleep NANOSLEEP; then
275316420Sbapt	:
276316420Sbaptelif runtest nanosleep NANOSLEEP "-lrt"; then
277316420Sbapt	LD_NANOSLEEP="-lrt"
278316420Sbaptfi
279316420Sbaptif [ "${HAVE_NANOSLEEP}" -eq 0 ]; then
280316420Sbapt	echo "FATAL: nanosleep: no" 1>&2
281316420Sbapt	echo "FATAL: nanosleep: no" 1>&3
282316420Sbapt	exit 1
283316420Sbaptfi
284316420Sbapt
285322249Sbaptif [ ${BUILD_CATMAN} -gt 0 ]; then
286322249Sbapt	# --- recvmsg ---
287322249Sbapt	if [ -n "${LD_RECVMSG}" ]; then
288322249Sbapt		runtest recvmsg RECVMSG "${LD_RECVMSG}" || true
289322249Sbapt	elif singletest recvmsg RECVMSG; then
290322249Sbapt		:
291322249Sbapt	elif runtest recvmsg RECVMSG "-lsocket"; then
292322249Sbapt		LD_RECVMSG="-lsocket"
293322249Sbapt	fi
294322249Sbapt	if [ "${HAVE_RECVMSG}" -eq 0 ]; then
295322249Sbapt		echo "FATAL: recvmsg: no" 1>&2
296322249Sbapt		echo "FATAL: recvmsg: no" 1>&3
297322249Sbapt		echo "Without recvmsg(2), you cannot BUILD_CATMAN." 1>&2
298322249Sbapt		exit 1
299322249Sbapt	fi
300322249Sbapt
301322249Sbapt	# --- cmsg ---
302322249Sbapt	if singletest cmsg CMSG; then
303322249Sbapt		:
304322249Sbapt	elif runtest cmsg CMSG "-D_XPG4_2"; then
305322249Sbapt		HAVE_CMSG_XPG42=1
306322249Sbapt	fi
307322249Sbapt	if [ "${HAVE_CMSG}" -eq 0 ]; then
308322249Sbapt		echo "FATAL: cmsg: no" 1>&2
309322249Sbapt		echo "FATAL: cmsg: no" 1>&3
310322249Sbapt		echo "Without CMSG_FIRSTHDR(3), you cannot BUILD_CATMAN." 1>&2
311322249Sbapt		exit 1
312322249Sbapt	fi
313322249Sbaptfi
314322249Sbapt
315275432Sbapt# --- ohash ---
316316420Sbaptif ismanual ohash OHASH "${HAVE_OHASH}"; then
317275432Sbapt	:
318307795Sbaptelif [ -n "${LD_OHASH}" ]; then
319307795Sbapt	runtest ohash OHASH "${LD_OHASH}" || true
320275432Sbaptelif singletest ohash OHASH; then
321275432Sbapt	:
322275432Sbaptelif runtest ohash OHASH "-lutil"; then
323307795Sbapt	LD_OHASH="-lutil"
324275432Sbaptfi
325307795Sbaptif [ "${HAVE_OHASH}" -eq 0 ]; then
326307795Sbapt	LD_OHASH=
327275432Sbaptfi
328275432Sbapt
329307795Sbapt# --- LDADD ---
330322249SbaptLDADD="${LDADD} ${LD_NANOSLEEP} ${LD_RECVMSG} ${LD_OHASH} -lz"
331307795Sbaptecho "LDADD=\"${LDADD}\"" 1>&2
332307795Sbaptecho "LDADD=\"${LDADD}\"" 1>&3
333307795Sbaptecho 1>&3
334307795Sbapt
335275432Sbapt# --- write config.h ---
336275432Sbapt
337275432Sbaptexec > config.h
338275432Sbapt
339275432Sbaptcat << __HEREDOC__
340294113Sbapt#ifdef __cplusplus
341294113Sbapt#error "Do not use C++.  See the INSTALL file."
342294113Sbapt#endif
343294113Sbapt
344316420Sbapt#if !defined(__GNUC__) || (__GNUC__ < 4)
345316420Sbapt#define __attribute__(x)
346316420Sbapt#endif
347275432Sbapt
348275432Sbapt#if defined(__linux__) || defined(__MINT__)
349275432Sbapt#define _GNU_SOURCE	/* See test-*.c what needs this. */
350275432Sbapt#endif
351275432Sbapt
352275432Sbapt__HEREDOC__
353275432Sbapt
354322249Sbapt[ ${HAVE_GETLINE} -eq 0 -o \
355322249Sbapt  ${HAVE_REALLOCARRAY} -eq 0 -o ${HAVE_RECALLOCARRAY} -eq 0 -o \
356275432Sbapt  ${HAVE_STRLCAT} -eq 0 -o ${HAVE_STRLCPY} -eq 0 ] \
357275432Sbapt	&& echo "#include <sys/types.h>"
358294113Sbapt[ ${HAVE_VASPRINTF} -eq 0 ] && echo "#include <stdarg.h>"
359294113Sbapt[ ${HAVE_GETLINE} -eq 0 ] && echo "#include <stdio.h>"
360275432Sbapt
361274876Sbaptecho
362294113Sbaptecho "#define MAN_CONF_FILE \"/etc/${MANM_MANCONF}\""
363322249Sbaptecho "#define MANPATH_BASE \"${MANPATH_BASE}\""
364294113Sbaptecho "#define MANPATH_DEFAULT \"${MANPATH_DEFAULT}\""
365275432Sbapt[ -n "${OSNAME}" ] && echo "#define OSNAME \"${OSNAME}\""
366316420Sbapt[ -n "${UTF8_LOCALE}" ] && echo "#define UTF8_LOCALE \"${UTF8_LOCALE}\""
367279527Sbapt[ -n "${HOMEBREWDIR}" ] && echo "#define HOMEBREWDIR \"${HOMEBREWDIR}\""
368316420Sbapt[ ${HAVE_EFTYPE} -eq 0 ] && echo "#define EFTYPE EINVAL"
369322249Sbapt[ ${HAVE_O_DIRECTORY} -eq 0 ] && echo "#define O_DIRECTORY 0"
370316420Sbapt[ ${HAVE_PATH_MAX} -eq 0 ] && echo "#define PATH_MAX 4096"
371316420Sbaptif [ ${HAVE_ENDIAN} -eq 0 -a ${HAVE_SYS_ENDIAN} -eq 0 ]; then
372316420Sbapt	echo "#define be32toh ntohl"
373316420Sbapt	echo "#define htobe32 htonl"
374316420Sbaptfi
375275432Sbapt
376275432Sbaptcat << __HEREDOC__
377322249Sbapt#define HAVE_CMSG_XPG42 ${HAVE_CMSG_XPG42}
378275432Sbapt#define HAVE_DIRENT_NAMLEN ${HAVE_DIRENT_NAMLEN}
379316420Sbapt#define HAVE_ENDIAN ${HAVE_ENDIAN}
380294113Sbapt#define HAVE_ERR ${HAVE_ERR}
381275432Sbapt#define HAVE_FTS ${HAVE_FTS}
382316420Sbapt#define HAVE_FTS_COMPARE_CONST ${HAVE_FTS_COMPARE_CONST}
383294113Sbapt#define HAVE_GETLINE ${HAVE_GETLINE}
384275432Sbapt#define HAVE_GETSUBOPT ${HAVE_GETSUBOPT}
385294113Sbapt#define HAVE_ISBLANK ${HAVE_ISBLANK}
386294113Sbapt#define HAVE_MKDTEMP ${HAVE_MKDTEMP}
387316420Sbapt#define HAVE_NTOHL ${HAVE_NTOHL}
388294113Sbapt#define HAVE_PLEDGE ${HAVE_PLEDGE}
389294113Sbapt#define HAVE_PROGNAME ${HAVE_PROGNAME}
390275432Sbapt#define HAVE_REALLOCARRAY ${HAVE_REALLOCARRAY}
391322249Sbapt#define HAVE_RECALLOCARRAY ${HAVE_RECALLOCARRAY}
392294113Sbapt#define HAVE_REWB_BSD ${HAVE_REWB_BSD}
393294113Sbapt#define HAVE_REWB_SYSV ${HAVE_REWB_SYSV}
394307795Sbapt#define HAVE_SANDBOX_INIT ${HAVE_SANDBOX_INIT}
395275432Sbapt#define HAVE_STRCASESTR ${HAVE_STRCASESTR}
396294113Sbapt#define HAVE_STRINGLIST ${HAVE_STRINGLIST}
397275432Sbapt#define HAVE_STRLCAT ${HAVE_STRLCAT}
398275432Sbapt#define HAVE_STRLCPY ${HAVE_STRLCPY}
399275432Sbapt#define HAVE_STRPTIME ${HAVE_STRPTIME}
400275432Sbapt#define HAVE_STRSEP ${HAVE_STRSEP}
401279527Sbapt#define HAVE_STRTONUM ${HAVE_STRTONUM}
402316420Sbapt#define HAVE_SYS_ENDIAN ${HAVE_SYS_ENDIAN}
403294113Sbapt#define HAVE_VASPRINTF ${HAVE_VASPRINTF}
404275432Sbapt#define HAVE_WCHAR ${HAVE_WCHAR}
405275432Sbapt#define HAVE_OHASH ${HAVE_OHASH}
406275432Sbapt
407276219Sbapt#define BINM_APROPOS "${BINM_APROPOS}"
408322249Sbapt#define BINM_CATMAN "${BINM_CATMAN}"
409294113Sbapt#define BINM_MAKEWHATIS "${BINM_MAKEWHATIS}"
410276219Sbapt#define BINM_MAN "${BINM_MAN}"
411294113Sbapt#define BINM_SOELIM "${BINM_SOELIM}"
412276219Sbapt#define BINM_WHATIS "${BINM_WHATIS}"
413276219Sbapt
414275432Sbapt__HEREDOC__
415275432Sbapt
416294113Sbaptif [ ${HAVE_ERR} -eq 0 ]; then
417294113Sbapt	echo "extern	void	  err(int, const char *, ...);"
418294113Sbapt	echo "extern	void	  errx(int, const char *, ...);"
419294113Sbapt	echo "extern	void	  warn(const char *, ...);"
420294113Sbapt	echo "extern	void	  warnx(const char *, ...);"
421294113Sbaptfi
422275432Sbapt
423294113Sbapt[ ${HAVE_GETLINE} -eq 0 ] && \
424294113Sbapt	echo "extern	ssize_t	  getline(char **, size_t *, FILE *);"
425294113Sbapt
426275432Sbapt[ ${HAVE_GETSUBOPT} -eq 0 ] && \
427275432Sbapt	echo "extern	int	  getsubopt(char **, char * const *, char **);"
428275432Sbapt
429294113Sbapt[ ${HAVE_ISBLANK} -eq 0 ] && \
430294113Sbapt	echo "extern	int	  isblank(int);"
431294113Sbapt
432294113Sbapt[ ${HAVE_MKDTEMP} -eq 0 ] && \
433294113Sbapt	echo "extern	char	 *mkdtemp(char *);"
434294113Sbapt
435294113Sbaptif [ ${HAVE_PROGNAME} -eq 0 ]; then
436294113Sbapt	echo "extern 	const char *getprogname(void);"
437294113Sbapt	echo "extern	void	  setprogname(const char *);"
438294113Sbaptfi
439294113Sbapt
440275432Sbapt[ ${HAVE_REALLOCARRAY} -eq 0 ] && \
441275432Sbapt	echo "extern	void	 *reallocarray(void *, size_t, size_t);"
442275432Sbapt
443322249Sbapt[ ${HAVE_RECALLOCARRAY} -eq 0 ] && \
444322249Sbapt	echo "extern	void	 *recallocarray(void *, size_t, size_t, size_t);"
445322249Sbapt
446275432Sbapt[ ${HAVE_STRCASESTR} -eq 0 ] && \
447275432Sbapt	echo "extern	char	 *strcasestr(const char *, const char *);"
448275432Sbapt
449275432Sbapt[ ${HAVE_STRLCAT} -eq 0 ] && \
450275432Sbapt	echo "extern	size_t	  strlcat(char *, const char *, size_t);"
451275432Sbapt
452275432Sbapt[ ${HAVE_STRLCPY} -eq 0 ] && \
453275432Sbapt	echo "extern	size_t	  strlcpy(char *, const char *, size_t);"
454275432Sbapt
455275432Sbapt[ ${HAVE_STRSEP} -eq 0 ] && \
456275432Sbapt	echo "extern	char	 *strsep(char **, const char *);"
457275432Sbapt
458279527Sbapt[ ${HAVE_STRTONUM} -eq 0 ] && \
459279527Sbapt	echo "extern	long long strtonum(const char *, long long, long long, const char **);"
460279527Sbapt
461294113Sbapt[ ${HAVE_VASPRINTF} -eq 0 ] && \
462294113Sbapt	echo "extern	int	  vasprintf(char **, const char *, va_list);"
463294113Sbapt
464275432Sbaptecho "config.h: written" 1>&2
465275432Sbaptecho "config.h: written" 1>&3
466275432Sbapt
467275432Sbapt# --- tests for Makefile.local -----------------------------------------
468275432Sbapt
469275432Sbaptexec > Makefile.local
470275432Sbapt
471322249Sbapt[ -z "${BINDIR}"          ] && BINDIR="${PREFIX}/bin"
472322249Sbapt[ -z "${SBINDIR}"         ] && SBINDIR="${PREFIX}/sbin"
473322249Sbapt[ -z "${BIN_FROM_SBIN}"   ] && BIN_FROM_SBIN="../bin"
474322249Sbapt[ -z "${INCLUDEDIR}"      ] && INCLUDEDIR="${PREFIX}/include/mandoc"
475322249Sbapt[ -z "${LIBDIR}"          ] && LIBDIR="${PREFIX}/lib/mandoc"
476322249Sbapt[ -z "${MANDIR}"          ] && MANDIR="${PREFIX}/man"
477275432Sbapt
478322249Sbapt[ -z "${HTDOCDIR}"        ] && HTDOCDIR="${WWWPREFIX}/htdocs"
479322249Sbapt[ -z "${CGIBINDIR}"       ] && CGIBINDIR="${WWWPREFIX}/cgi-bin"
480275432Sbapt
481275432Sbapt[ -z "${INSTALL_PROGRAM}" ] && INSTALL_PROGRAM="${INSTALL} -m 0555"
482275432Sbapt[ -z "${INSTALL_LIB}"     ] && INSTALL_LIB="${INSTALL} -m 0444"
483275432Sbapt[ -z "${INSTALL_MAN}"     ] && INSTALL_MAN="${INSTALL} -m 0444"
484275432Sbapt[ -z "${INSTALL_DATA}"    ] && INSTALL_DATA="${INSTALL} -m 0444"
485275432Sbapt
486316420SbaptBUILD_TARGETS=
487322249Sbapt[ ${BUILD_CGI} -gt 0 ] && BUILD_TARGETS="man.cgi"
488322249Sbapt[ ${BUILD_CATMAN} -gt 0 ] && \
489322249Sbapt	BUILD_TARGETS="${BUILD_TARGETS} mandocd catman"
490316420SbaptINSTALL_TARGETS=
491316420Sbapt[ ${INSTALL_LIBMANDOC} -gt 0 ] && INSTALL_TARGETS="lib-install"
492276219Sbapt[ ${BUILD_CGI} -gt 0 ] && INSTALL_TARGETS="${INSTALL_TARGETS} cgi-install"
493322249Sbapt[ ${BUILD_CATMAN} -gt 0 ] && \
494322249Sbapt	INSTALL_TARGETS="${INSTALL_TARGETS} catman-install"
495275432Sbapt
496275432Sbaptcat << __HEREDOC__
497275432SbaptBUILD_TARGETS	= ${BUILD_TARGETS}
498276219SbaptINSTALL_TARGETS	= ${INSTALL_TARGETS}
499294113SbaptCC		= ${CC}
500275432SbaptCFLAGS		= ${CFLAGS}
501307795SbaptLDADD		= ${LDADD}
502307795SbaptLDFLAGS		= ${LDFLAGS}
503275432SbaptSTATIC		= ${STATIC}
504275432SbaptPREFIX		= ${PREFIX}
505275432SbaptBINDIR		= ${BINDIR}
506275432SbaptSBINDIR		= ${SBINDIR}
507322249SbaptBIN_FROM_SBIN	= ${BIN_FROM_SBIN}
508275432SbaptINCLUDEDIR	= ${INCLUDEDIR}
509275432SbaptLIBDIR		= ${LIBDIR}
510275432SbaptMANDIR		= ${MANDIR}
511275432SbaptWWWPREFIX	= ${WWWPREFIX}
512275432SbaptHTDOCDIR	= ${HTDOCDIR}
513275432SbaptCGIBINDIR	= ${CGIBINDIR}
514276219SbaptBINM_APROPOS	= ${BINM_APROPOS}
515322249SbaptBINM_CATMAN	= ${BINM_CATMAN}
516294113SbaptBINM_MAKEWHATIS	= ${BINM_MAKEWHATIS}
517276219SbaptBINM_MAN	= ${BINM_MAN}
518294113SbaptBINM_SOELIM	= ${BINM_SOELIM}
519276219SbaptBINM_WHATIS	= ${BINM_WHATIS}
520276219SbaptMANM_MAN	= ${MANM_MAN}
521294113SbaptMANM_MANCONF	= ${MANM_MANCONF}
522276219SbaptMANM_MDOC	= ${MANM_MDOC}
523276219SbaptMANM_ROFF	= ${MANM_ROFF}
524276219SbaptMANM_EQN	= ${MANM_EQN}
525276219SbaptMANM_TBL	= ${MANM_TBL}
526275432SbaptINSTALL		= ${INSTALL}
527275432SbaptINSTALL_PROGRAM	= ${INSTALL_PROGRAM}
528275432SbaptINSTALL_LIB	= ${INSTALL_LIB}
529275432SbaptINSTALL_MAN	= ${INSTALL_MAN}
530275432SbaptINSTALL_DATA	= ${INSTALL_DATA}
531322249SbaptLN		= ${LN}
532275432Sbapt__HEREDOC__
533275432Sbapt
534275432Sbaptecho "Makefile.local: written" 1>&2
535275432Sbaptecho "Makefile.local: written" 1>&3
536275432Sbapt
537274876Sbaptexit 0
538