xref: /netbsd-src/external/bsd/mdocml/dist/configure (revision 6167eca2d062f3691f8b22e3b8ea212d6dde852a)
170f041f9Sjoerg#!/bin/sh
270f041f9Sjoerg#
3*6167eca2Schristos# Id: configure,v 1.70 2019/03/06 16:04:31 schwarze Exp
437ef69edSchristos#
5*6167eca2Schristos# Copyright (c) 2014-2019 Ingo Schwarze <schwarze@openbsd.org>
670f041f9Sjoerg#
770f041f9Sjoerg# Permission to use, copy, modify, and distribute this software for any
870f041f9Sjoerg# purpose with or without fee is hereby granted, provided that the above
970f041f9Sjoerg# copyright notice and this permission notice appear in all copies.
1070f041f9Sjoerg#
1170f041f9Sjoerg# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1270f041f9Sjoerg# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1370f041f9Sjoerg# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1470f041f9Sjoerg# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1570f041f9Sjoerg# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1670f041f9Sjoerg# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1770f041f9Sjoerg# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1870f041f9Sjoerg
1970f041f9Sjoergset -e
2070f041f9Sjoerg
21f47368cfSchristos[ -w config.log ] && mv config.log config.log.old
22f47368cfSchristos[ -w config.h   ] && mv config.h config.h.old
2370f041f9Sjoerg
24fec65c98Schristos# Output file descriptor usage:
25fec65c98Schristos# 1 (stdout): config.h, Makefile.local
26fec65c98Schristos# 2 (stderr): original stderr, usually to the console
27fec65c98Schristos# 3: config.log
2870f041f9Sjoerg
29fec65c98Schristosexec 3> config.log
3014e7489eSchristosecho "file config.log: writing..."
31fec65c98Schristos
32fec65c98Schristos# --- default settings -------------------------------------------------
33fec65c98Schristos# Initialize all variables here,
34fec65c98Schristos# such that nothing can leak in from the environment.
35fec65c98Schristos
3637ef69edSchristosSOURCEDIR=`dirname "$0"`
3737ef69edSchristos
3814e7489eSchristosMANPATH_BASE="/usr/share/man:/usr/X11R6/man"
39f47368cfSchristosMANPATH_DEFAULT="/usr/share/man:/usr/X11R6/man:/usr/local/man"
40*6167eca2SchristosOSENUM=
41fec65c98SchristosOSNAME=
427275494cSchristosMAKEFLAGS=
4337ef69edSchristosUTF8_LOCALE=
44fec65c98Schristos
45f6f53c25Sjoergif [ -z "${CC}" ]; then
4637ef69edSchristos	CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | env -i make -sf -`
47f6f53c25Sjoergfi
4837ef69edSchristosCFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings"
4937ef69edSchristosCFLAGS="${CFLAGS} -Wno-unused-parameter"
50f47368cfSchristosLDADD=
51f47368cfSchristosLDFLAGS=
5237ef69edSchristosLD_NANOSLEEP=
53f47368cfSchristosLD_OHASH=
5437ef69edSchristosLD_RECVMSG=
5514e7489eSchristosSTATIC=
56fec65c98Schristos
57fec65c98SchristosBUILD_CGI=0
5837ef69edSchristosBUILD_CATMAN=0
5937ef69edSchristosINSTALL_LIBMANDOC=0
60fec65c98Schristos
6137ef69edSchristosHAVE_CMSG=
6237ef69edSchristosHAVE_CMSG_XPG42=0
63fec65c98SchristosHAVE_DIRENT_NAMLEN=
6437ef69edSchristosHAVE_EFTYPE=
6537ef69edSchristosHAVE_ENDIAN=
66f47368cfSchristosHAVE_ERR=
67fec65c98SchristosHAVE_FTS=
6837ef69edSchristosHAVE_FTS_COMPARE_CONST=
69f47368cfSchristosHAVE_GETLINE=
70fec65c98SchristosHAVE_GETSUBOPT=
71f47368cfSchristosHAVE_ISBLANK=
72*6167eca2SchristosHAVE_LESS_T=
73f47368cfSchristosHAVE_MKDTEMP=
7437ef69edSchristosHAVE_NANOSLEEP=
7537ef69edSchristosHAVE_NTOHL=
7637ef69edSchristosHAVE_O_DIRECTORY=
7737ef69edSchristosHAVE_OHASH=
7837ef69edSchristosHAVE_PATH_MAX=
79f47368cfSchristosHAVE_PLEDGE=
80f47368cfSchristosHAVE_PROGNAME=
81fec65c98SchristosHAVE_REALLOCARRAY=
8214e7489eSchristosHAVE_RECALLOCARRAY=
8337ef69edSchristosHAVE_RECVMSG=
84f47368cfSchristosHAVE_REWB_BSD=
85f47368cfSchristosHAVE_REWB_SYSV=
86f47368cfSchristosHAVE_SANDBOX_INIT=
87fec65c98SchristosHAVE_STRCASESTR=
88f47368cfSchristosHAVE_STRINGLIST=
89fec65c98SchristosHAVE_STRLCAT=
90fec65c98SchristosHAVE_STRLCPY=
9114e7489eSchristosHAVE_STRNDUP=
92fec65c98SchristosHAVE_STRPTIME=
93fec65c98SchristosHAVE_STRSEP=
94fec65c98SchristosHAVE_STRTONUM=
9537ef69edSchristosHAVE_SYS_ENDIAN=
96f47368cfSchristosHAVE_VASPRINTF=
97fec65c98SchristosHAVE_WCHAR=
98fec65c98Schristos
99*6167eca2SchristosNEED_GNU_SOURCE=0
100*6167eca2SchristosNEED_OPENBSD_SOURCE=0
101*6167eca2Schristos
102fec65c98SchristosPREFIX="/usr/local"
103fec65c98SchristosBINDIR=
104fec65c98SchristosSBINDIR=
10514e7489eSchristosBIN_FROM_SBIN=
106fec65c98SchristosINCLUDEDIR=
107fec65c98SchristosLIBDIR=
108fec65c98SchristosMANDIR=
109fec65c98SchristosHOMEBREWDIR=
110fec65c98Schristos
111fec65c98SchristosWWWPREFIX="/var/www"
112fec65c98SchristosHTDOCDIR=
113fec65c98SchristosCGIBINDIR=
114fec65c98Schristos
115fec65c98SchristosBINM_APROPOS="apropos"
11637ef69edSchristosBINM_CATMAN="catman"
117fec65c98SchristosBINM_MAKEWHATIS="makewhatis"
118f47368cfSchristosBINM_MAN="man"
119f47368cfSchristosBINM_SOELIM="soelim"
120f47368cfSchristosBINM_WHATIS="whatis"
121fec65c98SchristosMANM_MAN="man"
122f47368cfSchristosMANM_MANCONF="man.conf"
123fec65c98SchristosMANM_MDOC="mdoc"
124fec65c98SchristosMANM_ROFF="roff"
125fec65c98SchristosMANM_EQN="eqn"
126fec65c98SchristosMANM_TBL="tbl"
127fec65c98Schristos
128fec65c98SchristosINSTALL="install"
129fec65c98SchristosINSTALL_PROGRAM=
130fec65c98SchristosINSTALL_LIB=
131fec65c98SchristosINSTALL_MAN=
132fec65c98SchristosINSTALL_DATA=
13337ef69edSchristosLN="ln -f"
134fec65c98Schristos
135fec65c98Schristos# --- manual settings from configure.local -----------------------------
136fec65c98Schristos
137f47368cfSchristosif [ -r ./configure.local ]; then
13814e7489eSchristos	echo "file configure.local: reading..." 1>&2
13914e7489eSchristos	echo "file configure.local: reading..." 1>&3
140fec65c98Schristos	cat ./configure.local 1>&3
141fec65c98Schristos	. ./configure.local
142fec65c98Schristoselse
14314e7489eSchristos	echo "file configure.local: no (fully automatic configuration)" 1>&2
14414e7489eSchristos	echo "file configure.local: no (fully automatic configuration)" 1>&3
145fec65c98Schristosfi
146fec65c98Schristosecho 1>&3
147fec65c98Schristos
14814e7489eSchristos# --- tests functions --------------------------------------------------
149fec65c98Schristos
150fec65c98Schristos# Check whether this HAVE_ setting is manually overridden.
151fec65c98Schristos# If yes, use the override, if no, do not decide anything yet.
15214e7489eSchristos# Arguments: test file name, test var name, manual value
153fec65c98Schristosismanual() {
15437ef69edSchristos	[ -z "${3}" ] && return 1
15514e7489eSchristos	echo "tested ${1}: HAVE_${2}=${3} (manual)" 1>&2
15614e7489eSchristos	echo "tested ${1}: HAVE_${2}=${3} (manual)" 1>&3
157fec65c98Schristos	echo 1>&3
158fec65c98Schristos	return 0
15970f041f9Sjoerg}
16070f041f9Sjoerg
161fec65c98Schristos# Run a single autoconfiguration test.
162fec65c98Schristos# In case of success, enable the feature.
163fec65c98Schristos# In case of failure, do not decide anything yet.
16414e7489eSchristos# Arguments: test file name, test var name, additional CFLAGS
165fec65c98Schristossingletest() {
166*6167eca2Schristos	n=${1}${3}${4}
167fec65c98Schristos	cat 1>&3 << __HEREDOC__
168*6167eca2Schristostesting ${n} ...
169*6167eca2Schristos${COMP} -o test-${1} test-${1}.c ${3} ${4}
170fec65c98Schristos__HEREDOC__
171fec65c98Schristos
172*6167eca2Schristos	if ${COMP} -o "test-${1}" "${SOURCEDIR}/test-${1}.c" ${3} ${4} 1>&3 2>&3
17337ef69edSchristos	then
174*6167eca2Schristos		echo "partial result of ${n}: ${CC} succeeded" 1>&3
175fec65c98Schristos	else
176*6167eca2Schristos		echo "result of ${n}: ${CC} failed with exit status $?" 1>&3
177*6167eca2Schristos		echo "result of compiling ${n}: no" 1>&3
178fec65c98Schristos		echo 1>&3
179fec65c98Schristos		return 1
180fec65c98Schristos	fi
181fec65c98Schristos
182fec65c98Schristos	if ./test-${1} 1>&3 2>&3; then
183*6167eca2Schristos		echo "tested ${n}: yes" 1>&2
184*6167eca2Schristos		echo "result of running ${n}: yes" 1>&3
185fec65c98Schristos		echo 1>&3
186fec65c98Schristos		eval HAVE_${2}=1
187*6167eca2Schristos		[ "X$3" = "X-D_GNU_SOURCE" ] && NEED_GNU_SOURCE=1
188*6167eca2Schristos		[ "X$3" = "X-D_OPENBSD_SOURCE" ] && NEED_OPENBSD_SOURCE=1
189fec65c98Schristos		rm "test-${1}"
190fec65c98Schristos		return 0
191fec65c98Schristos	else
192*6167eca2Schristos		echo "result of ${n}: execution failed with exit status $?" 1>&3
193*6167eca2Schristos		echo "result of running ${n}: no" 1>&3
194fec65c98Schristos		echo 1>&3
195fec65c98Schristos		rm "test-${1}"
196fec65c98Schristos		return 1
197fec65c98Schristos	fi
198fec65c98Schristos}
199fec65c98Schristos
200fec65c98Schristos# Run a complete autoconfiguration test, including the check for
201fec65c98Schristos# a manual override and disabling the feature on failure.
20214e7489eSchristos# Arguments: test file name, test var name, additional CFLAGS
203fec65c98Schristosruntest() {
204fec65c98Schristos	eval _manual=\${HAVE_${2}}
20537ef69edSchristos	ismanual "${1}" "${2}" "${_manual}" && return 0
206*6167eca2Schristos	singletest "${1}" "${2}" "${3}" "${4}" && return 0
207*6167eca2Schristos	echo "tested ${1}${3}${4}: no" 1>&2
208fec65c98Schristos	eval HAVE_${2}=0
209fec65c98Schristos	return 1
210fec65c98Schristos}
211fec65c98Schristos
21237ef69edSchristos# Select a UTF-8 locale.
21337ef69edSchristosget_locale() {
21437ef69edSchristos	[ -n "${HAVE_WCHAR}" ] && [ "${HAVE_WCHAR}" -eq 0 ] && return 0
21537ef69edSchristos	ismanual UTF8_LOCALE UTF8_LOCALE "$UTF8_LOCALE" && return 0
21614e7489eSchristos	echo "testing UTF8_LOCALE ..." 1>&3
21737ef69edSchristos	UTF8_LOCALE=`locale -a | grep -i '^en_US\.UTF-*8$' | head -n 1`
21837ef69edSchristos	if [ -z "${UTF8_LOCALE}" ]; then
21937ef69edSchristos		UTF8_LOCALE=`locale -a | grep -i '\.UTF-*8' | head -n 1`
22037ef69edSchristos		[ -n "${UTF8_LOCALE}" ] || return 1
22137ef69edSchristos	fi
22214e7489eSchristos	echo "selected UTF8_LOCALE=${UTF8_LOCALE}" 1>&2
22314e7489eSchristos	echo "selected UTF8_LOCALE=${UTF8_LOCALE}" 1>&3
22437ef69edSchristos	echo 1>&3
22537ef69edSchristos	return 0;
22637ef69edSchristos}
22737ef69edSchristos
228*6167eca2Schristos# --- operating system -------------------------------------------------
229*6167eca2Schristos
230*6167eca2Schristosif [ -n "${OSENUM}" ]; then
231*6167eca2Schristos	echo "OSENUM specified manually: ${OSENUM}" 1>&2
232*6167eca2Schristos	echo "OSENUM specified manually: ${OSENUM}" 1>&3
233*6167eca2Schristoselse
234*6167eca2Schristos	OSDETECT=`uname`
235*6167eca2Schristos	if [ "X${OSDETECT}" = "XNetBSD" ]; then
236*6167eca2Schristos		OSENUM=MANDOC_OS_NETBSD
237*6167eca2Schristos	elif [ "X${OSDETECT}" = "XOpenBSD" ]; then
238*6167eca2Schristos		OSENUM=MANDOC_OS_OPENBSD
239*6167eca2Schristos	else
240*6167eca2Schristos		OSENUM=MANDOC_OS_OTHER
241*6167eca2Schristos	fi
242*6167eca2Schristos	echo "tested operating system: ${OSDETECT} -> OSENUM=${OSENUM}" 1>&2
243*6167eca2Schristos	echo "tested operating system: ${OSDETECT} -> OSENUM=${OSENUM}" 1>&3
244*6167eca2Schristos	unset OSDETECT
245*6167eca2Schristosfi
246*6167eca2Schristosecho 1>&3
247*6167eca2Schristos
24814e7489eSchristos# --- compiler options -------------------------------------------------
24914e7489eSchristos
250*6167eca2SchristosDEFCFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter"
251*6167eca2Schristos
25214e7489eSchristosif [ -n "${CFLAGS}" ]; then
25314e7489eSchristos	COMP="${CC} ${CFLAGS} -Wno-unused -Werror"
254*6167eca2Schristoselse
255*6167eca2Schristos	COMP="${CC} ${DEFCFLAGS} -Wno-unused -Werror"
256*6167eca2Schristosfi
25714e7489eSchristosecho -n "tested ${CC} -W: " 1>&2
25814e7489eSchristosecho -n "testing ${CC} -W: " 1>&3
25914e7489eSchristosruntest noop WFLAG || true
260*6167eca2Schristos
261*6167eca2Schristosif [ -n "${CFLAGS}" ]; then
262*6167eca2Schristos	echo "CFLAGS specified manually:" 1>&3
263*6167eca2Schristoselif [ ${HAVE_WFLAG} -eq 0 ]; then
26414e7489eSchristos	CFLAGS="-g"
265*6167eca2Schristoselse
266*6167eca2Schristos	CFLAGS="${DEFCFLAGS}"
26714e7489eSchristosfi
26814e7489eSchristosecho "selected CFLAGS=\"${CFLAGS}\"" 1>&2
26914e7489eSchristosecho "selected CFLAGS=\"${CFLAGS}\"" 1>&3
27014e7489eSchristosecho 1>&3
271*6167eca2Schristos
272*6167eca2SchristosCOMP="${CC} ${CFLAGS}"
273*6167eca2Schristos[ ${HAVE_WFLAG} -eq 0 ] || COMP="${COMP} -Wno-unused -Werror"
27414e7489eSchristos
27514e7489eSchristosif [ -n "${STATIC}" ]; then
27614e7489eSchristos	echo "selected STATIC=\"${STATIC}\" (manual)" 1>&2
27714e7489eSchristos	echo "selected STATIC=\"${STATIC}\" (manual)" 1>&3
27814e7489eSchristos	echo 1>&3
27914e7489eSchristoselse
28014e7489eSchristos	runtest noop STATIC -static || true
28114e7489eSchristos	[ ${HAVE_STATIC} -eq 0 ] || STATIC="-static"
28214e7489eSchristos	echo "selected STATIC=\"${STATIC}\"" 1>&2
28314e7489eSchristos	echo "selected STATIC=\"${STATIC}\"" 1>&3
28414e7489eSchristos	echo 1>&3
28514e7489eSchristosfi
28614e7489eSchristos
28714e7489eSchristos# --- tests for config.h  ----------------------------------------------
28837ef69edSchristos
289fec65c98Schristos# --- library functions ---
290fec65c98Schristosruntest dirent-namlen	DIRENT_NAMLEN	|| true
29137ef69edSchristosruntest be32toh		ENDIAN		|| true
29237ef69edSchristosruntest be32toh		SYS_ENDIAN	-DSYS_ENDIAN || true
29337ef69edSchristosruntest EFTYPE		EFTYPE		|| true
294f47368cfSchristosruntest err		ERR		|| true
295f47368cfSchristosruntest getline		GETLINE		|| true
296*6167eca2Schristossingletest getsubopt	GETSUBOPT	|| \
297*6167eca2Schristos   runtest getsubopt	GETSUBOPT	-D_GNU_SOURCE || true
298f47368cfSchristosruntest isblank		ISBLANK		|| true
299f47368cfSchristosruntest mkdtemp		MKDTEMP		|| true
30037ef69edSchristosruntest ntohl		NTOHL		|| true
30137ef69edSchristosruntest O_DIRECTORY	O_DIRECTORY	|| true
30237ef69edSchristosruntest PATH_MAX	PATH_MAX	|| true
303f47368cfSchristosruntest pledge		PLEDGE		|| true
304f47368cfSchristosruntest sandbox_init	SANDBOX_INIT	|| true
305f47368cfSchristosruntest progname	PROGNAME	|| true
306*6167eca2Schristossingletest reallocarray	REALLOCARRAY	|| \
307*6167eca2Schristos   runtest reallocarray	REALLOCARRAY	-D_OPENBSD_SOURCE || true
308*6167eca2Schristossingletest recallocarray RECALLOCARRAY	|| \
309*6167eca2Schristos   runtest recallocarray RECALLOCARRAY	-D_OPENBSD_SOURCE || true
310f47368cfSchristosruntest rewb-bsd	REWB_BSD	|| true
311f47368cfSchristosruntest rewb-sysv	REWB_SYSV	|| true
312*6167eca2Schristossingletest strcasestr	STRCASESTR	|| \
313*6167eca2Schristos   runtest strcasestr	STRCASESTR	-D_GNU_SOURCE || true
314f47368cfSchristosruntest stringlist	STRINGLIST	|| true
315fec65c98Schristosruntest strlcat		STRLCAT		|| true
316fec65c98Schristosruntest strlcpy		STRLCPY		|| true
31714e7489eSchristosruntest strndup		STRNDUP		|| true
318*6167eca2Schristossingletest strptime	STRPTIME	|| \
319*6167eca2Schristos   runtest strptime	STRPTIME	-D_GNU_SOURCE || true
320fec65c98Schristosruntest strsep		STRSEP		|| true
321*6167eca2Schristossingletest strtonum	STRTONUM	|| \
322*6167eca2Schristos   runtest strtonum	STRTONUM	-D_OPENBSD_SOURCE || true
323*6167eca2Schristossingletest vasprintf	VASPRINTF	|| \
324*6167eca2Schristos   runtest vasprintf	VASPRINTF	-D_GNU_SOURCE || true
325fec65c98Schristos
32637ef69edSchristosif [ ${HAVE_ENDIAN} -eq 0 -a \
32737ef69edSchristos     ${HAVE_SYS_ENDIAN} -eq 0 -a \
32837ef69edSchristos     ${HAVE_NTOHL} -eq 0 ]; then
32937ef69edSchristos	echo "FATAL: no endian conversion functions found" 1>&2
33037ef69edSchristos	echo "FATAL: no endian conversion functions found" 1>&3
33137ef69edSchristos	exit 1
332f47368cfSchristosfi
333fec65c98Schristos
33437ef69edSchristosif ismanual fts FTS ${HAVE_FTS}; then
33537ef69edSchristos	HAVE_FTS_COMPARE_CONST=0
33637ef69edSchristoselif runtest fts FTS_COMPARE_CONST -DFTS_COMPARE_CONST; then
33737ef69edSchristos	HAVE_FTS=1
338fec65c98Schristoselse
33937ef69edSchristos	runtest fts FTS || true
34037ef69edSchristosfi
34137ef69edSchristos
342*6167eca2Schristosif ismanual "less -T" LESS_T ${HAVE_LESS_T}; then
343*6167eca2Schristos	:
344*6167eca2Schristoselif less -ET /dev/null test-noop.c 1>/dev/null 2>&3; then
345*6167eca2Schristos	HAVE_LESS_T=1
346*6167eca2Schristos	echo "tested less -T: yes" 1>&2
347*6167eca2Schristos	echo "tested less -T: yes" 1>&3
348*6167eca2Schristos	echo 1>&3
349*6167eca2Schristoselse
350*6167eca2Schristos	HAVE_LESS_T=0
351*6167eca2Schristos	echo "tested less -T: no" 1>&2
352*6167eca2Schristos	echo "tested less -T: no" 1>&3
353*6167eca2Schristos	echo 1>&3
354*6167eca2Schristosfi
355*6167eca2Schristos
35637ef69edSchristos# --- wide character and locale support ---
35737ef69edSchristosif get_locale; then
358*6167eca2Schristos	singletest wchar WCHAR -DUTF8_LOCALE=\"${UTF8_LOCALE}\" || \
359*6167eca2Schristos	runtest wchar WCHAR -D_GNU_SOURCE \
360*6167eca2Schristos			    -DUTF8_LOCALE=\"${UTF8_LOCALE}\" || true
36137ef69edSchristoselse
36237ef69edSchristos	HAVE_WCHAR=0
36314e7489eSchristos	echo "tested wchar: no (no UTF8_LOCALE)" 1>&2
36414e7489eSchristos	echo "tested wchar: no (no UTF8_LOCALE)" 1>&3
36514e7489eSchristos	echo 1>&3
36637ef69edSchristosfi
36737ef69edSchristos
36837ef69edSchristos# --- nanosleep ---
36937ef69edSchristosif [ -n "${LD_NANOSLEEP}" ]; then
37037ef69edSchristos	runtest nanosleep NANOSLEEP "${LD_NANOSLEEP}" || true
37137ef69edSchristoselif singletest nanosleep NANOSLEEP; then
37237ef69edSchristos	:
37337ef69edSchristoselif runtest nanosleep NANOSLEEP "-lrt"; then
37437ef69edSchristos	LD_NANOSLEEP="-lrt"
37537ef69edSchristosfi
37637ef69edSchristosif [ "${HAVE_NANOSLEEP}" -eq 0 ]; then
37737ef69edSchristos	echo "FATAL: nanosleep: no" 1>&2
37837ef69edSchristos	echo "FATAL: nanosleep: no" 1>&3
37937ef69edSchristos	exit 1
38037ef69edSchristosfi
38137ef69edSchristos
38237ef69edSchristosif [ ${BUILD_CATMAN} -gt 0 ]; then
38337ef69edSchristos	# --- recvmsg ---
38437ef69edSchristos	if [ -n "${LD_RECVMSG}" ]; then
38537ef69edSchristos		runtest recvmsg RECVMSG "${LD_RECVMSG}" || true
38637ef69edSchristos	elif singletest recvmsg RECVMSG; then
38737ef69edSchristos		:
38837ef69edSchristos	elif runtest recvmsg RECVMSG "-lsocket"; then
38937ef69edSchristos		LD_RECVMSG="-lsocket"
39037ef69edSchristos	fi
39137ef69edSchristos	if [ "${HAVE_RECVMSG}" -eq 0 ]; then
39237ef69edSchristos		echo "FATAL: recvmsg: no" 1>&2
39337ef69edSchristos		echo "FATAL: recvmsg: no" 1>&3
39437ef69edSchristos		echo "Without recvmsg(2), you cannot BUILD_CATMAN." 1>&2
39537ef69edSchristos		exit 1
39637ef69edSchristos	fi
39737ef69edSchristos
39837ef69edSchristos	# --- cmsg ---
39937ef69edSchristos	if singletest cmsg CMSG; then
40037ef69edSchristos		:
40137ef69edSchristos	elif runtest cmsg CMSG "-D_XPG4_2"; then
40237ef69edSchristos		HAVE_CMSG_XPG42=1
40337ef69edSchristos	fi
40437ef69edSchristos	if [ "${HAVE_CMSG}" -eq 0 ]; then
40537ef69edSchristos		echo "FATAL: cmsg: no" 1>&2
40637ef69edSchristos		echo "FATAL: cmsg: no" 1>&3
40737ef69edSchristos		echo "Without CMSG_FIRSTHDR(3), you cannot BUILD_CATMAN." 1>&2
40837ef69edSchristos		exit 1
40937ef69edSchristos	fi
410fec65c98Schristosfi
411fec65c98Schristos
412fec65c98Schristos# --- ohash ---
41337ef69edSchristosif ismanual ohash OHASH "${HAVE_OHASH}"; then
414fec65c98Schristos	:
415f47368cfSchristoselif [ -n "${LD_OHASH}" ]; then
416f47368cfSchristos	runtest ohash OHASH "${LD_OHASH}" || true
417fec65c98Schristoselif singletest ohash OHASH; then
418fec65c98Schristos	:
419fec65c98Schristoselif runtest ohash OHASH "-lutil"; then
420f47368cfSchristos	LD_OHASH="-lutil"
421f47368cfSchristosfi
422f47368cfSchristosif [ "${HAVE_OHASH}" -eq 0 ]; then
423f47368cfSchristos	LD_OHASH=
424fec65c98Schristosfi
425fec65c98Schristos
426f47368cfSchristos# --- LDADD ---
42737ef69edSchristosLDADD="${LDADD} ${LD_NANOSLEEP} ${LD_RECVMSG} ${LD_OHASH} -lz"
42814e7489eSchristosecho "selected LDADD=\"${LDADD}\"" 1>&2
42914e7489eSchristosecho "selected LDADD=\"${LDADD}\"" 1>&3
430fec65c98Schristosecho 1>&3
431fec65c98Schristos
432fec65c98Schristos# --- write config.h ---
433fec65c98Schristos
434fec65c98Schristosexec > config.h
435fec65c98Schristos
436fec65c98Schristoscat << __HEREDOC__
437f47368cfSchristos#ifdef __cplusplus
438f47368cfSchristos#error "Do not use C++.  See the INSTALL file."
439f47368cfSchristos#endif
440f47368cfSchristos
44137ef69edSchristos#if !defined(__GNUC__) || (__GNUC__ < 4)
44237ef69edSchristos#define __attribute__(x)
44337ef69edSchristos#endif
444fec65c98Schristos
4455a13d7fdSuwe#ifdef HAVE_NBTOOL_CONFIG_H
4465a13d7fdSuwe#include "nbtool_config.h"
4475a13d7fdSuwe#endif
4485a13d7fdSuwe
449fec65c98Schristos__HEREDOC__
450*6167eca2Schristos[ ${NEED_GNU_SOURCE} -eq 0 ] || echo "#define _GNU_SOURCE"
451*6167eca2Schristos[ ${NEED_OPENBSD_SOURCE} -eq 0 ] || echo "#define _OPENBSD_SOURCE"
452fec65c98Schristos
45314e7489eSchristos[ ${HAVE_GETLINE} -eq 0 -o \
45414e7489eSchristos  ${HAVE_REALLOCARRAY} -eq 0 -o ${HAVE_RECALLOCARRAY} -eq 0 -o \
45514e7489eSchristos  ${HAVE_STRLCAT} -eq 0 -o ${HAVE_STRLCPY} -eq 0 -o \
45614e7489eSchristos  ${HAVE_STRNDUP} -eq 0 ] \
457fec65c98Schristos	&& echo "#include <sys/types.h>"
458f47368cfSchristos[ ${HAVE_VASPRINTF} -eq 0 ] && echo "#include <stdarg.h>"
459f47368cfSchristos[ ${HAVE_GETLINE} -eq 0 ] && echo "#include <stdio.h>"
460fec65c98Schristos
46170f041f9Sjoergecho
462f47368cfSchristosecho "#define MAN_CONF_FILE \"/etc/${MANM_MANCONF}\""
46314e7489eSchristosecho "#define MANPATH_BASE \"${MANPATH_BASE}\""
464f47368cfSchristosecho "#define MANPATH_DEFAULT \"${MANPATH_DEFAULT}\""
465*6167eca2Schristosecho "#define OSENUM ${OSENUM}"
466fec65c98Schristos[ -n "${OSNAME}" ] && echo "#define OSNAME \"${OSNAME}\""
46737ef69edSchristos[ -n "${UTF8_LOCALE}" ] && echo "#define UTF8_LOCALE \"${UTF8_LOCALE}\""
468fec65c98Schristos[ -n "${HOMEBREWDIR}" ] && echo "#define HOMEBREWDIR \"${HOMEBREWDIR}\""
46920db6447Schristos[ ${HAVE_EFTYPE} -eq 0 ] && echo "#ifndef EFTYPE" && \
47020db6447Schristos    echo "#define EFTYPE EINVAL" && echo "#endif"
47137ef69edSchristos[ ${HAVE_O_DIRECTORY} -eq 0 ] && echo "#define O_DIRECTORY 0"
47237ef69edSchristos[ ${HAVE_PATH_MAX} -eq 0 ] && echo "#define PATH_MAX 4096"
47337ef69edSchristosif [ ${HAVE_ENDIAN} -eq 0 -a ${HAVE_SYS_ENDIAN} -eq 0 ]; then
47437ef69edSchristos	echo "#define be32toh ntohl"
47537ef69edSchristos	echo "#define htobe32 htonl"
47637ef69edSchristosfi
477fec65c98Schristos
478fec65c98Schristoscat << __HEREDOC__
4795c413d0cSchristos#ifndef HAVE_NBTOOL_CONFIG_H
48037ef69edSchristos#define HAVE_CMSG_XPG42 ${HAVE_CMSG_XPG42}
481fec65c98Schristos#define HAVE_DIRENT_NAMLEN ${HAVE_DIRENT_NAMLEN}
48237ef69edSchristos#define HAVE_ENDIAN ${HAVE_ENDIAN}
483f47368cfSchristos#define HAVE_ERR ${HAVE_ERR}
484fec65c98Schristos#define HAVE_FTS ${HAVE_FTS}
48537ef69edSchristos#define HAVE_FTS_COMPARE_CONST ${HAVE_FTS_COMPARE_CONST}
486f47368cfSchristos#define HAVE_GETLINE ${HAVE_GETLINE}
487fec65c98Schristos#define HAVE_GETSUBOPT ${HAVE_GETSUBOPT}
488f47368cfSchristos#define HAVE_ISBLANK ${HAVE_ISBLANK}
489*6167eca2Schristos#define HAVE_LESS_T ${HAVE_LESS_T}
490f47368cfSchristos#define HAVE_MKDTEMP ${HAVE_MKDTEMP}
49137ef69edSchristos#define HAVE_NTOHL ${HAVE_NTOHL}
492f47368cfSchristos#define HAVE_PLEDGE ${HAVE_PLEDGE}
493f47368cfSchristos#define HAVE_PROGNAME ${HAVE_PROGNAME}
494fec65c98Schristos#define HAVE_REALLOCARRAY ${HAVE_REALLOCARRAY}
49514e7489eSchristos#define HAVE_RECALLOCARRAY ${HAVE_RECALLOCARRAY}
496f47368cfSchristos#define HAVE_REWB_BSD ${HAVE_REWB_BSD}
497f47368cfSchristos#define HAVE_REWB_SYSV ${HAVE_REWB_SYSV}
498f47368cfSchristos#define HAVE_SANDBOX_INIT ${HAVE_SANDBOX_INIT}
499fec65c98Schristos#define HAVE_STRCASESTR ${HAVE_STRCASESTR}
500f47368cfSchristos#define HAVE_STRINGLIST ${HAVE_STRINGLIST}
501fec65c98Schristos#define HAVE_STRLCAT ${HAVE_STRLCAT}
502fec65c98Schristos#define HAVE_STRLCPY ${HAVE_STRLCPY}
50314e7489eSchristos#define HAVE_STRNDUP ${HAVE_STRNDUP}
504fec65c98Schristos#define HAVE_STRPTIME ${HAVE_STRPTIME}
505fec65c98Schristos#define HAVE_STRSEP ${HAVE_STRSEP}
506fec65c98Schristos#define HAVE_STRTONUM ${HAVE_STRTONUM}
50737ef69edSchristos#define HAVE_SYS_ENDIAN ${HAVE_SYS_ENDIAN}
508f47368cfSchristos#define HAVE_VASPRINTF ${HAVE_VASPRINTF}
509fec65c98Schristos#define HAVE_WCHAR ${HAVE_WCHAR}
510fec65c98Schristos#define HAVE_OHASH ${HAVE_OHASH}
5115c413d0cSchristos#endif
512fec65c98Schristos
513fec65c98Schristos#define BINM_APROPOS "${BINM_APROPOS}"
51437ef69edSchristos#define BINM_CATMAN "${BINM_CATMAN}"
515fec65c98Schristos#define BINM_MAKEWHATIS "${BINM_MAKEWHATIS}"
516f47368cfSchristos#define BINM_MAN "${BINM_MAN}"
517f47368cfSchristos#define BINM_SOELIM "${BINM_SOELIM}"
518f47368cfSchristos#define BINM_WHATIS "${BINM_WHATIS}"
519fec65c98Schristos
520fec65c98Schristos__HEREDOC__
521fec65c98Schristos
522f47368cfSchristosif [ ${HAVE_ERR} -eq 0 ]; then
523f47368cfSchristos	echo "extern	void	  err(int, const char *, ...);"
524f47368cfSchristos	echo "extern	void	  errx(int, const char *, ...);"
525f47368cfSchristos	echo "extern	void	  warn(const char *, ...);"
526f47368cfSchristos	echo "extern	void	  warnx(const char *, ...);"
527f47368cfSchristosfi
528f47368cfSchristos
529f47368cfSchristos[ ${HAVE_GETLINE} -eq 0 ] && \
530f47368cfSchristos	echo "extern	ssize_t	  getline(char **, size_t *, FILE *);"
531fec65c98Schristos
532fec65c98Schristos[ ${HAVE_GETSUBOPT} -eq 0 ] && \
533fec65c98Schristos	echo "extern	int	  getsubopt(char **, char * const *, char **);"
534fec65c98Schristos
535c1b5cff4Sjoergif [ ${HAVE_ISBLANK} -eq 0 ]; then
536c1b5cff4Sjoerg	echo "#undef isblank"
537f47368cfSchristos	echo "extern	int	  isblank(int);"
538c1b5cff4Sjoergfi
539f47368cfSchristos
540f47368cfSchristos[ ${HAVE_MKDTEMP} -eq 0 ] && \
541f47368cfSchristos	echo "extern	char	 *mkdtemp(char *);"
542f47368cfSchristos
543f47368cfSchristosif [ ${HAVE_PROGNAME} -eq 0 ]; then
544f47368cfSchristos	echo "extern 	const char *getprogname(void);"
545f47368cfSchristos	echo "extern	void	  setprogname(const char *);"
546f47368cfSchristosfi
547f47368cfSchristos
548fec65c98Schristos[ ${HAVE_REALLOCARRAY} -eq 0 ] && \
549fec65c98Schristos	echo "extern	void	 *reallocarray(void *, size_t, size_t);"
550fec65c98Schristos
55114e7489eSchristos[ ${HAVE_RECALLOCARRAY} -eq 0 ] && \
55214e7489eSchristos	echo "extern	void	 *recallocarray(void *, size_t, size_t, size_t);"
55314e7489eSchristos
554fec65c98Schristos[ ${HAVE_STRCASESTR} -eq 0 ] && \
555fec65c98Schristos	echo "extern	char	 *strcasestr(const char *, const char *);"
556fec65c98Schristos
557fec65c98Schristos[ ${HAVE_STRLCAT} -eq 0 ] && \
558fec65c98Schristos	echo "extern	size_t	  strlcat(char *, const char *, size_t);"
559fec65c98Schristos
560fec65c98Schristos[ ${HAVE_STRLCPY} -eq 0 ] && \
561fec65c98Schristos	echo "extern	size_t	  strlcpy(char *, const char *, size_t);"
562fec65c98Schristos
56314e7489eSchristos[ ${HAVE_STRNDUP} -eq 0 ] && \
56414e7489eSchristos	echo "extern	char	 *strndup(const char *, size_t);"
56514e7489eSchristos
56614e7489eSchristos[ ${HAVE_STRSEP} -eq 0 ] && \
567fec65c98Schristos	echo "extern	char	 *strsep(char **, const char *);"
568fec65c98Schristos
569fec65c98Schristos[ ${HAVE_STRTONUM} -eq 0 ] && \
570fec65c98Schristos	echo "extern	long long strtonum(const char *, long long, long long, const char **);"
571fec65c98Schristos
572f47368cfSchristos[ ${HAVE_VASPRINTF} -eq 0 ] && \
573f47368cfSchristos	echo "extern	int	  vasprintf(char **, const char *, va_list);"
574f47368cfSchristos
57514e7489eSchristosecho "file config.h: written" 1>&2
57614e7489eSchristosecho "file config.h: written" 1>&3
577fec65c98Schristos
578fec65c98Schristos# --- tests for Makefile.local -----------------------------------------
579fec65c98Schristos
580fec65c98Schristosexec > Makefile.local
581fec65c98Schristos
582fec65c98Schristos[ -z "${BINDIR}"          ] && BINDIR="${PREFIX}/bin"
583fec65c98Schristos[ -z "${SBINDIR}"         ] && SBINDIR="${PREFIX}/sbin"
58414e7489eSchristos[ -z "${BIN_FROM_SBIN}"   ] && BIN_FROM_SBIN="../bin"
585fec65c98Schristos[ -z "${INCLUDEDIR}"      ] && INCLUDEDIR="${PREFIX}/include/mandoc"
586fec65c98Schristos[ -z "${LIBDIR}"          ] && LIBDIR="${PREFIX}/lib/mandoc"
587fec65c98Schristos[ -z "${MANDIR}"          ] && MANDIR="${PREFIX}/man"
588fec65c98Schristos
589fec65c98Schristos[ -z "${HTDOCDIR}"        ] && HTDOCDIR="${WWWPREFIX}/htdocs"
590fec65c98Schristos[ -z "${CGIBINDIR}"       ] && CGIBINDIR="${WWWPREFIX}/cgi-bin"
591fec65c98Schristos
592fec65c98Schristos[ -z "${INSTALL_PROGRAM}" ] && INSTALL_PROGRAM="${INSTALL} -m 0555"
593fec65c98Schristos[ -z "${INSTALL_LIB}"     ] && INSTALL_LIB="${INSTALL} -m 0444"
594fec65c98Schristos[ -z "${INSTALL_MAN}"     ] && INSTALL_MAN="${INSTALL} -m 0444"
595fec65c98Schristos[ -z "${INSTALL_DATA}"    ] && INSTALL_DATA="${INSTALL} -m 0444"
596fec65c98Schristos
59737ef69edSchristosBUILD_TARGETS=
59837ef69edSchristos[ ${BUILD_CGI} -gt 0 ] && BUILD_TARGETS="man.cgi"
59937ef69edSchristos[ ${BUILD_CATMAN} -gt 0 ] && \
60037ef69edSchristos	BUILD_TARGETS="${BUILD_TARGETS} mandocd catman"
60137ef69edSchristosINSTALL_TARGETS=
60237ef69edSchristos[ ${INSTALL_LIBMANDOC} -gt 0 ] && INSTALL_TARGETS="lib-install"
603fec65c98Schristos[ ${BUILD_CGI} -gt 0 ] && INSTALL_TARGETS="${INSTALL_TARGETS} cgi-install"
60437ef69edSchristos[ ${BUILD_CATMAN} -gt 0 ] && \
60537ef69edSchristos	INSTALL_TARGETS="${INSTALL_TARGETS} catman-install"
606fec65c98Schristos
607fec65c98Schristoscat << __HEREDOC__
608fec65c98SchristosBUILD_TARGETS	= ${BUILD_TARGETS}
609fec65c98SchristosINSTALL_TARGETS	= ${INSTALL_TARGETS}
610f47368cfSchristosCC		= ${CC}
611fec65c98SchristosCFLAGS		= ${CFLAGS}
612f47368cfSchristosLDADD		= ${LDADD}
613f47368cfSchristosLDFLAGS		= ${LDFLAGS}
614fec65c98SchristosSTATIC		= ${STATIC}
615fec65c98SchristosPREFIX		= ${PREFIX}
616fec65c98SchristosBINDIR		= ${BINDIR}
617fec65c98SchristosSBINDIR		= ${SBINDIR}
61814e7489eSchristosBIN_FROM_SBIN	= ${BIN_FROM_SBIN}
619fec65c98SchristosINCLUDEDIR	= ${INCLUDEDIR}
620fec65c98SchristosLIBDIR		= ${LIBDIR}
621fec65c98SchristosMANDIR		= ${MANDIR}
622fec65c98SchristosWWWPREFIX	= ${WWWPREFIX}
623fec65c98SchristosHTDOCDIR	= ${HTDOCDIR}
624fec65c98SchristosCGIBINDIR	= ${CGIBINDIR}
625fec65c98SchristosBINM_APROPOS	= ${BINM_APROPOS}
62637ef69edSchristosBINM_CATMAN	= ${BINM_CATMAN}
627fec65c98SchristosBINM_MAKEWHATIS	= ${BINM_MAKEWHATIS}
628f47368cfSchristosBINM_MAN	= ${BINM_MAN}
629f47368cfSchristosBINM_SOELIM	= ${BINM_SOELIM}
630f47368cfSchristosBINM_WHATIS	= ${BINM_WHATIS}
631fec65c98SchristosMANM_MAN	= ${MANM_MAN}
632f47368cfSchristosMANM_MANCONF	= ${MANM_MANCONF}
633fec65c98SchristosMANM_MDOC	= ${MANM_MDOC}
634fec65c98SchristosMANM_ROFF	= ${MANM_ROFF}
635fec65c98SchristosMANM_EQN	= ${MANM_EQN}
636fec65c98SchristosMANM_TBL	= ${MANM_TBL}
637fec65c98SchristosINSTALL		= ${INSTALL}
638fec65c98SchristosINSTALL_PROGRAM	= ${INSTALL_PROGRAM}
639fec65c98SchristosINSTALL_LIB	= ${INSTALL_LIB}
640fec65c98SchristosINSTALL_MAN	= ${INSTALL_MAN}
641fec65c98SchristosINSTALL_DATA	= ${INSTALL_DATA}
64237ef69edSchristosLN		= ${LN}
643fec65c98Schristos__HEREDOC__
644fec65c98Schristos
64514e7489eSchristosecho "file Makefile.local: written" 1>&2
64614e7489eSchristosecho "file Makefile.local: written" 1>&3
64770f041f9Sjoerg
64870f041f9Sjoergexit 0
649