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