Home | History | Annotate | Line # | Download | only in dist
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