1#!/bin/sh 2# 3# Id: configure,v 1.70 2019/03/06 16:04:31 schwarze Exp 4# 5# Copyright (c) 2014-2019 Ingo Schwarze <schwarze@openbsd.org> 6# 7# Permission to use, copy, modify, and distribute this software for any 8# purpose with or without fee is hereby granted, provided that the above 9# copyright notice and this permission notice appear in all copies. 10# 11# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18 19set -e 20 21[ -w config.log ] && mv config.log config.log.old 22[ -w config.h ] && mv config.h config.h.old 23 24# Output file descriptor usage: 25# 1 (stdout): config.h, Makefile.local 26# 2 (stderr): original stderr, usually to the console 27# 3: config.log 28 29exec 3> config.log 30echo "file config.log: writing..." 31 32# --- default settings ------------------------------------------------- 33# Initialize all variables here, 34# such that nothing can leak in from the environment. 35 36SOURCEDIR=`dirname "$0"` 37 38MANPATH_BASE="/usr/share/man:/usr/X11R6/man" 39MANPATH_DEFAULT="/usr/share/man:/usr/X11R6/man:/usr/local/man" 40OSENUM= 41OSNAME= 42MAKEFLAGS= 43UTF8_LOCALE= 44 45if [ -z "${CC}" ]; then 46 CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | env -i make -sf -` 47fi 48CFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings" 49CFLAGS="${CFLAGS} -Wno-unused-parameter" 50LDADD= 51LDFLAGS= 52LD_NANOSLEEP= 53LD_OHASH= 54LD_RECVMSG= 55STATIC= 56 57BUILD_CGI=0 58BUILD_CATMAN=0 59INSTALL_LIBMANDOC=0 60 61HAVE_CMSG= 62HAVE_CMSG_XPG42=0 63HAVE_DIRENT_NAMLEN= 64HAVE_EFTYPE= 65HAVE_ENDIAN= 66HAVE_ERR= 67HAVE_FTS= 68HAVE_FTS_COMPARE_CONST= 69HAVE_GETLINE= 70HAVE_GETSUBOPT= 71HAVE_ISBLANK= 72HAVE_LESS_T= 73HAVE_MKDTEMP= 74HAVE_NANOSLEEP= 75HAVE_NTOHL= 76HAVE_O_DIRECTORY= 77HAVE_OHASH= 78HAVE_PATH_MAX= 79HAVE_PLEDGE= 80HAVE_PROGNAME= 81HAVE_REALLOCARRAY= 82HAVE_RECALLOCARRAY= 83HAVE_RECVMSG= 84HAVE_REWB_BSD= 85HAVE_REWB_SYSV= 86HAVE_SANDBOX_INIT= 87HAVE_STRCASESTR= 88HAVE_STRINGLIST= 89HAVE_STRLCAT= 90HAVE_STRLCPY= 91HAVE_STRNDUP= 92HAVE_STRPTIME= 93HAVE_STRSEP= 94HAVE_STRTONUM= 95HAVE_SYS_ENDIAN= 96HAVE_VASPRINTF= 97HAVE_WCHAR= 98 99NEED_GNU_SOURCE=0 100NEED_OPENBSD_SOURCE=0 101 102PREFIX="/usr/local" 103BINDIR= 104SBINDIR= 105BIN_FROM_SBIN= 106INCLUDEDIR= 107LIBDIR= 108MANDIR= 109HOMEBREWDIR= 110 111WWWPREFIX="/var/www" 112HTDOCDIR= 113CGIBINDIR= 114 115BINM_APROPOS="apropos" 116BINM_CATMAN="catman" 117BINM_MAKEWHATIS="makewhatis" 118BINM_MAN="man" 119BINM_SOELIM="soelim" 120BINM_WHATIS="whatis" 121MANM_MAN="man" 122MANM_MANCONF="man.conf" 123MANM_MDOC="mdoc" 124MANM_ROFF="roff" 125MANM_EQN="eqn" 126MANM_TBL="tbl" 127 128INSTALL="install" 129INSTALL_PROGRAM= 130INSTALL_LIB= 131INSTALL_MAN= 132INSTALL_DATA= 133LN="ln -f" 134 135# --- manual settings from configure.local ----------------------------- 136 137if [ -r ./configure.local ]; then 138 echo "file configure.local: reading..." 1>&2 139 echo "file configure.local: reading..." 1>&3 140 cat ./configure.local 1>&3 141 . ./configure.local 142else 143 echo "file configure.local: no (fully automatic configuration)" 1>&2 144 echo "file configure.local: no (fully automatic configuration)" 1>&3 145fi 146echo 1>&3 147 148# --- tests functions -------------------------------------------------- 149 150# Check whether this HAVE_ setting is manually overridden. 151# If yes, use the override, if no, do not decide anything yet. 152# Arguments: test file name, test var name, manual value 153ismanual() { 154 [ -z "${3}" ] && return 1 155 echo "tested ${1}: HAVE_${2}=${3} (manual)" 1>&2 156 echo "tested ${1}: HAVE_${2}=${3} (manual)" 1>&3 157 echo 1>&3 158 return 0 159} 160 161# Run a single autoconfiguration test. 162# In case of success, enable the feature. 163# In case of failure, do not decide anything yet. 164# Arguments: test file name, test var name, additional CFLAGS 165singletest() { 166 n=${1}${3}${4} 167 cat 1>&3 << __HEREDOC__ 168testing ${n} ... 169${COMP} -o test-${1} test-${1}.c ${3} ${4} 170__HEREDOC__ 171 172 if ${COMP} -o "test-${1}" "${SOURCEDIR}/test-${1}.c" ${3} ${4} 1>&3 2>&3 173 then 174 echo "partial result of ${n}: ${CC} succeeded" 1>&3 175 else 176 echo "result of ${n}: ${CC} failed with exit status $?" 1>&3 177 echo "result of compiling ${n}: no" 1>&3 178 echo 1>&3 179 return 1 180 fi 181 182 if ./test-${1} 1>&3 2>&3; then 183 echo "tested ${n}: yes" 1>&2 184 echo "result of running ${n}: yes" 1>&3 185 echo 1>&3 186 eval HAVE_${2}=1 187 [ "X$3" = "X-D_GNU_SOURCE" ] && NEED_GNU_SOURCE=1 188 [ "X$3" = "X-D_OPENBSD_SOURCE" ] && NEED_OPENBSD_SOURCE=1 189 rm "test-${1}" 190 return 0 191 else 192 echo "result of ${n}: execution failed with exit status $?" 1>&3 193 echo "result of running ${n}: no" 1>&3 194 echo 1>&3 195 rm "test-${1}" 196 return 1 197 fi 198} 199 200# Run a complete autoconfiguration test, including the check for 201# a manual override and disabling the feature on failure. 202# Arguments: test file name, test var name, additional CFLAGS 203runtest() { 204 eval _manual=\${HAVE_${2}} 205 ismanual "${1}" "${2}" "${_manual}" && return 0 206 singletest "${1}" "${2}" "${3}" "${4}" && return 0 207 echo "tested ${1}${3}${4}: no" 1>&2 208 eval HAVE_${2}=0 209 return 1 210} 211 212# Select a UTF-8 locale. 213get_locale() { 214 [ -n "${HAVE_WCHAR}" ] && [ "${HAVE_WCHAR}" -eq 0 ] && return 0 215 ismanual UTF8_LOCALE UTF8_LOCALE "$UTF8_LOCALE" && return 0 216 echo "testing UTF8_LOCALE ..." 1>&3 217 UTF8_LOCALE=`locale -a | grep -i '^en_US\.UTF-*8$' | head -n 1` 218 if [ -z "${UTF8_LOCALE}" ]; then 219 UTF8_LOCALE=`locale -a | grep -i '\.UTF-*8' | head -n 1` 220 [ -n "${UTF8_LOCALE}" ] || return 1 221 fi 222 echo "selected UTF8_LOCALE=${UTF8_LOCALE}" 1>&2 223 echo "selected UTF8_LOCALE=${UTF8_LOCALE}" 1>&3 224 echo 1>&3 225 return 0; 226} 227 228# --- operating system ------------------------------------------------- 229 230if [ -n "${OSENUM}" ]; then 231 echo "OSENUM specified manually: ${OSENUM}" 1>&2 232 echo "OSENUM specified manually: ${OSENUM}" 1>&3 233else 234 OSDETECT=`uname` 235 if [ "X${OSDETECT}" = "XNetBSD" ]; then 236 OSENUM=MANDOC_OS_NETBSD 237 elif [ "X${OSDETECT}" = "XOpenBSD" ]; then 238 OSENUM=MANDOC_OS_OPENBSD 239 else 240 OSENUM=MANDOC_OS_OTHER 241 fi 242 echo "tested operating system: ${OSDETECT} -> OSENUM=${OSENUM}" 1>&2 243 echo "tested operating system: ${OSDETECT} -> OSENUM=${OSENUM}" 1>&3 244 unset OSDETECT 245fi 246echo 1>&3 247 248# --- compiler options ------------------------------------------------- 249 250DEFCFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter" 251 252if [ -n "${CFLAGS}" ]; then 253 COMP="${CC} ${CFLAGS} -Wno-unused -Werror" 254else 255 COMP="${CC} ${DEFCFLAGS} -Wno-unused -Werror" 256fi 257echo -n "tested ${CC} -W: " 1>&2 258echo -n "testing ${CC} -W: " 1>&3 259runtest noop WFLAG || true 260 261if [ -n "${CFLAGS}" ]; then 262 echo "CFLAGS specified manually:" 1>&3 263elif [ ${HAVE_WFLAG} -eq 0 ]; then 264 CFLAGS="-g" 265else 266 CFLAGS="${DEFCFLAGS}" 267fi 268echo "selected CFLAGS=\"${CFLAGS}\"" 1>&2 269echo "selected CFLAGS=\"${CFLAGS}\"" 1>&3 270echo 1>&3 271 272COMP="${CC} ${CFLAGS}" 273[ ${HAVE_WFLAG} -eq 0 ] || COMP="${COMP} -Wno-unused -Werror" 274 275if [ -n "${STATIC}" ]; then 276 echo "selected STATIC=\"${STATIC}\" (manual)" 1>&2 277 echo "selected STATIC=\"${STATIC}\" (manual)" 1>&3 278 echo 1>&3 279else 280 runtest noop STATIC -static || true 281 [ ${HAVE_STATIC} -eq 0 ] || STATIC="-static" 282 echo "selected STATIC=\"${STATIC}\"" 1>&2 283 echo "selected STATIC=\"${STATIC}\"" 1>&3 284 echo 1>&3 285fi 286 287# --- tests for config.h ---------------------------------------------- 288 289# --- library functions --- 290runtest dirent-namlen DIRENT_NAMLEN || true 291runtest be32toh ENDIAN || true 292runtest be32toh SYS_ENDIAN -DSYS_ENDIAN || true 293runtest EFTYPE EFTYPE || true 294runtest err ERR || true 295runtest getline GETLINE || true 296singletest getsubopt GETSUBOPT || \ 297 runtest getsubopt GETSUBOPT -D_GNU_SOURCE || true 298runtest isblank ISBLANK || true 299runtest mkdtemp MKDTEMP || true 300runtest ntohl NTOHL || true 301runtest O_DIRECTORY O_DIRECTORY || true 302runtest PATH_MAX PATH_MAX || true 303runtest pledge PLEDGE || true 304runtest sandbox_init SANDBOX_INIT || true 305runtest progname PROGNAME || true 306singletest reallocarray REALLOCARRAY || \ 307 runtest reallocarray REALLOCARRAY -D_OPENBSD_SOURCE || true 308singletest recallocarray RECALLOCARRAY || \ 309 runtest recallocarray RECALLOCARRAY -D_OPENBSD_SOURCE || true 310runtest rewb-bsd REWB_BSD || true 311runtest rewb-sysv REWB_SYSV || true 312singletest strcasestr STRCASESTR || \ 313 runtest strcasestr STRCASESTR -D_GNU_SOURCE || true 314runtest stringlist STRINGLIST || true 315runtest strlcat STRLCAT || true 316runtest strlcpy STRLCPY || true 317runtest strndup STRNDUP || true 318singletest strptime STRPTIME || \ 319 runtest strptime STRPTIME -D_GNU_SOURCE || true 320runtest strsep STRSEP || true 321singletest strtonum STRTONUM || \ 322 runtest strtonum STRTONUM -D_OPENBSD_SOURCE || true 323singletest vasprintf VASPRINTF || \ 324 runtest vasprintf VASPRINTF -D_GNU_SOURCE || true 325 326if [ ${HAVE_ENDIAN} -eq 0 -a \ 327 ${HAVE_SYS_ENDIAN} -eq 0 -a \ 328 ${HAVE_NTOHL} -eq 0 ]; then 329 echo "FATAL: no endian conversion functions found" 1>&2 330 echo "FATAL: no endian conversion functions found" 1>&3 331 exit 1 332fi 333 334if ismanual fts FTS ${HAVE_FTS}; then 335 HAVE_FTS_COMPARE_CONST=0 336elif runtest fts FTS_COMPARE_CONST -DFTS_COMPARE_CONST; then 337 HAVE_FTS=1 338else 339 runtest fts FTS || true 340fi 341 342if ismanual "less -T" LESS_T ${HAVE_LESS_T}; then 343 : 344elif less -ET /dev/null test-noop.c 1>/dev/null 2>&3; then 345 HAVE_LESS_T=1 346 echo "tested less -T: yes" 1>&2 347 echo "tested less -T: yes" 1>&3 348 echo 1>&3 349else 350 HAVE_LESS_T=0 351 echo "tested less -T: no" 1>&2 352 echo "tested less -T: no" 1>&3 353 echo 1>&3 354fi 355 356# --- wide character and locale support --- 357if get_locale; then 358 singletest wchar WCHAR -DUTF8_LOCALE=\"${UTF8_LOCALE}\" || \ 359 runtest wchar WCHAR -D_GNU_SOURCE \ 360 -DUTF8_LOCALE=\"${UTF8_LOCALE}\" || true 361else 362 HAVE_WCHAR=0 363 echo "tested wchar: no (no UTF8_LOCALE)" 1>&2 364 echo "tested wchar: no (no UTF8_LOCALE)" 1>&3 365 echo 1>&3 366fi 367 368# --- nanosleep --- 369if [ -n "${LD_NANOSLEEP}" ]; then 370 runtest nanosleep NANOSLEEP "${LD_NANOSLEEP}" || true 371elif singletest nanosleep NANOSLEEP; then 372 : 373elif runtest nanosleep NANOSLEEP "-lrt"; then 374 LD_NANOSLEEP="-lrt" 375fi 376if [ "${HAVE_NANOSLEEP}" -eq 0 ]; then 377 echo "FATAL: nanosleep: no" 1>&2 378 echo "FATAL: nanosleep: no" 1>&3 379 exit 1 380fi 381 382if [ ${BUILD_CATMAN} -gt 0 ]; then 383 # --- recvmsg --- 384 if [ -n "${LD_RECVMSG}" ]; then 385 runtest recvmsg RECVMSG "${LD_RECVMSG}" || true 386 elif singletest recvmsg RECVMSG; then 387 : 388 elif runtest recvmsg RECVMSG "-lsocket"; then 389 LD_RECVMSG="-lsocket" 390 fi 391 if [ "${HAVE_RECVMSG}" -eq 0 ]; then 392 echo "FATAL: recvmsg: no" 1>&2 393 echo "FATAL: recvmsg: no" 1>&3 394 echo "Without recvmsg(2), you cannot BUILD_CATMAN." 1>&2 395 exit 1 396 fi 397 398 # --- cmsg --- 399 if singletest cmsg CMSG; then 400 : 401 elif runtest cmsg CMSG "-D_XPG4_2"; then 402 HAVE_CMSG_XPG42=1 403 fi 404 if [ "${HAVE_CMSG}" -eq 0 ]; then 405 echo "FATAL: cmsg: no" 1>&2 406 echo "FATAL: cmsg: no" 1>&3 407 echo "Without CMSG_FIRSTHDR(3), you cannot BUILD_CATMAN." 1>&2 408 exit 1 409 fi 410fi 411 412# --- ohash --- 413if ismanual ohash OHASH "${HAVE_OHASH}"; then 414 : 415elif [ -n "${LD_OHASH}" ]; then 416 runtest ohash OHASH "${LD_OHASH}" || true 417elif singletest ohash OHASH; then 418 : 419elif runtest ohash OHASH "-lutil"; then 420 LD_OHASH="-lutil" 421fi 422if [ "${HAVE_OHASH}" -eq 0 ]; then 423 LD_OHASH= 424fi 425 426# --- LDADD --- 427LDADD="${LDADD} ${LD_NANOSLEEP} ${LD_RECVMSG} ${LD_OHASH} -lz" 428echo "selected LDADD=\"${LDADD}\"" 1>&2 429echo "selected LDADD=\"${LDADD}\"" 1>&3 430echo 1>&3 431 432# --- write config.h --- 433 434exec > config.h 435 436cat << __HEREDOC__ 437#ifdef __cplusplus 438#error "Do not use C++. See the INSTALL file." 439#endif 440 441#if !defined(__GNUC__) || (__GNUC__ < 4) 442#define __attribute__(x) 443#endif 444 445#ifdef HAVE_NBTOOL_CONFIG_H 446#include "nbtool_config.h" 447#endif 448 449__HEREDOC__ 450[ ${NEED_GNU_SOURCE} -eq 0 ] || echo "#define _GNU_SOURCE" 451[ ${NEED_OPENBSD_SOURCE} -eq 0 ] || echo "#define _OPENBSD_SOURCE" 452 453[ ${HAVE_GETLINE} -eq 0 -o \ 454 ${HAVE_REALLOCARRAY} -eq 0 -o ${HAVE_RECALLOCARRAY} -eq 0 -o \ 455 ${HAVE_STRLCAT} -eq 0 -o ${HAVE_STRLCPY} -eq 0 -o \ 456 ${HAVE_STRNDUP} -eq 0 ] \ 457 && echo "#include <sys/types.h>" 458[ ${HAVE_VASPRINTF} -eq 0 ] && echo "#include <stdarg.h>" 459[ ${HAVE_GETLINE} -eq 0 ] && echo "#include <stdio.h>" 460 461echo 462echo "#define MAN_CONF_FILE \"/etc/${MANM_MANCONF}\"" 463echo "#define MANPATH_BASE \"${MANPATH_BASE}\"" 464echo "#define MANPATH_DEFAULT \"${MANPATH_DEFAULT}\"" 465echo "#define OSENUM ${OSENUM}" 466[ -n "${OSNAME}" ] && echo "#define OSNAME \"${OSNAME}\"" 467[ -n "${UTF8_LOCALE}" ] && echo "#define UTF8_LOCALE \"${UTF8_LOCALE}\"" 468[ -n "${HOMEBREWDIR}" ] && echo "#define HOMEBREWDIR \"${HOMEBREWDIR}\"" 469[ ${HAVE_EFTYPE} -eq 0 ] && echo "#ifndef EFTYPE" && \ 470 echo "#define EFTYPE EINVAL" && echo "#endif" 471[ ${HAVE_O_DIRECTORY} -eq 0 ] && echo "#define O_DIRECTORY 0" 472[ ${HAVE_PATH_MAX} -eq 0 ] && echo "#define PATH_MAX 4096" 473if [ ${HAVE_ENDIAN} -eq 0 -a ${HAVE_SYS_ENDIAN} -eq 0 ]; then 474 echo "#define be32toh ntohl" 475 echo "#define htobe32 htonl" 476fi 477 478cat << __HEREDOC__ 479#ifndef HAVE_NBTOOL_CONFIG_H 480#define HAVE_CMSG_XPG42 ${HAVE_CMSG_XPG42} 481#define HAVE_DIRENT_NAMLEN ${HAVE_DIRENT_NAMLEN} 482#define HAVE_ENDIAN ${HAVE_ENDIAN} 483#define HAVE_ERR ${HAVE_ERR} 484#define HAVE_FTS ${HAVE_FTS} 485#define HAVE_FTS_COMPARE_CONST ${HAVE_FTS_COMPARE_CONST} 486#define HAVE_GETLINE ${HAVE_GETLINE} 487#define HAVE_GETSUBOPT ${HAVE_GETSUBOPT} 488#define HAVE_ISBLANK ${HAVE_ISBLANK} 489#define HAVE_LESS_T ${HAVE_LESS_T} 490#define HAVE_MKDTEMP ${HAVE_MKDTEMP} 491#define HAVE_NTOHL ${HAVE_NTOHL} 492#define HAVE_PLEDGE ${HAVE_PLEDGE} 493#define HAVE_PROGNAME ${HAVE_PROGNAME} 494#define HAVE_REALLOCARRAY ${HAVE_REALLOCARRAY} 495#define HAVE_RECALLOCARRAY ${HAVE_RECALLOCARRAY} 496#define HAVE_REWB_BSD ${HAVE_REWB_BSD} 497#define HAVE_REWB_SYSV ${HAVE_REWB_SYSV} 498#define HAVE_SANDBOX_INIT ${HAVE_SANDBOX_INIT} 499#define HAVE_STRCASESTR ${HAVE_STRCASESTR} 500#define HAVE_STRINGLIST ${HAVE_STRINGLIST} 501#define HAVE_STRLCAT ${HAVE_STRLCAT} 502#define HAVE_STRLCPY ${HAVE_STRLCPY} 503#define HAVE_STRNDUP ${HAVE_STRNDUP} 504#define HAVE_STRPTIME ${HAVE_STRPTIME} 505#define HAVE_STRSEP ${HAVE_STRSEP} 506#define HAVE_STRTONUM ${HAVE_STRTONUM} 507#define HAVE_SYS_ENDIAN ${HAVE_SYS_ENDIAN} 508#define HAVE_VASPRINTF ${HAVE_VASPRINTF} 509#define HAVE_WCHAR ${HAVE_WCHAR} 510#define HAVE_OHASH ${HAVE_OHASH} 511#endif 512 513#define BINM_APROPOS "${BINM_APROPOS}" 514#define BINM_CATMAN "${BINM_CATMAN}" 515#define BINM_MAKEWHATIS "${BINM_MAKEWHATIS}" 516#define BINM_MAN "${BINM_MAN}" 517#define BINM_SOELIM "${BINM_SOELIM}" 518#define BINM_WHATIS "${BINM_WHATIS}" 519 520__HEREDOC__ 521 522if [ ${HAVE_ERR} -eq 0 ]; then 523 echo "extern void err(int, const char *, ...);" 524 echo "extern void errx(int, const char *, ...);" 525 echo "extern void warn(const char *, ...);" 526 echo "extern void warnx(const char *, ...);" 527fi 528 529[ ${HAVE_GETLINE} -eq 0 ] && \ 530 echo "extern ssize_t getline(char **, size_t *, FILE *);" 531 532[ ${HAVE_GETSUBOPT} -eq 0 ] && \ 533 echo "extern int getsubopt(char **, char * const *, char **);" 534 535if [ ${HAVE_ISBLANK} -eq 0 ]; then 536 echo "#undef isblank" 537 echo "extern int isblank(int);" 538fi 539 540[ ${HAVE_MKDTEMP} -eq 0 ] && \ 541 echo "extern char *mkdtemp(char *);" 542 543if [ ${HAVE_PROGNAME} -eq 0 ]; then 544 echo "extern const char *getprogname(void);" 545 echo "extern void setprogname(const char *);" 546fi 547 548[ ${HAVE_REALLOCARRAY} -eq 0 ] && \ 549 echo "extern void *reallocarray(void *, size_t, size_t);" 550 551[ ${HAVE_RECALLOCARRAY} -eq 0 ] && \ 552 echo "extern void *recallocarray(void *, size_t, size_t, size_t);" 553 554[ ${HAVE_STRCASESTR} -eq 0 ] && \ 555 echo "extern char *strcasestr(const char *, const char *);" 556 557[ ${HAVE_STRLCAT} -eq 0 ] && \ 558 echo "extern size_t strlcat(char *, const char *, size_t);" 559 560[ ${HAVE_STRLCPY} -eq 0 ] && \ 561 echo "extern size_t strlcpy(char *, const char *, size_t);" 562 563[ ${HAVE_STRNDUP} -eq 0 ] && \ 564 echo "extern char *strndup(const char *, size_t);" 565 566[ ${HAVE_STRSEP} -eq 0 ] && \ 567 echo "extern char *strsep(char **, const char *);" 568 569[ ${HAVE_STRTONUM} -eq 0 ] && \ 570 echo "extern long long strtonum(const char *, long long, long long, const char **);" 571 572[ ${HAVE_VASPRINTF} -eq 0 ] && \ 573 echo "extern int vasprintf(char **, const char *, va_list);" 574 575echo "file config.h: written" 1>&2 576echo "file config.h: written" 1>&3 577 578# --- tests for Makefile.local ----------------------------------------- 579 580exec > Makefile.local 581 582[ -z "${BINDIR}" ] && BINDIR="${PREFIX}/bin" 583[ -z "${SBINDIR}" ] && SBINDIR="${PREFIX}/sbin" 584[ -z "${BIN_FROM_SBIN}" ] && BIN_FROM_SBIN="../bin" 585[ -z "${INCLUDEDIR}" ] && INCLUDEDIR="${PREFIX}/include/mandoc" 586[ -z "${LIBDIR}" ] && LIBDIR="${PREFIX}/lib/mandoc" 587[ -z "${MANDIR}" ] && MANDIR="${PREFIX}/man" 588 589[ -z "${HTDOCDIR}" ] && HTDOCDIR="${WWWPREFIX}/htdocs" 590[ -z "${CGIBINDIR}" ] && CGIBINDIR="${WWWPREFIX}/cgi-bin" 591 592[ -z "${INSTALL_PROGRAM}" ] && INSTALL_PROGRAM="${INSTALL} -m 0555" 593[ -z "${INSTALL_LIB}" ] && INSTALL_LIB="${INSTALL} -m 0444" 594[ -z "${INSTALL_MAN}" ] && INSTALL_MAN="${INSTALL} -m 0444" 595[ -z "${INSTALL_DATA}" ] && INSTALL_DATA="${INSTALL} -m 0444" 596 597BUILD_TARGETS= 598[ ${BUILD_CGI} -gt 0 ] && BUILD_TARGETS="man.cgi" 599[ ${BUILD_CATMAN} -gt 0 ] && \ 600 BUILD_TARGETS="${BUILD_TARGETS} mandocd catman" 601INSTALL_TARGETS= 602[ ${INSTALL_LIBMANDOC} -gt 0 ] && INSTALL_TARGETS="lib-install" 603[ ${BUILD_CGI} -gt 0 ] && INSTALL_TARGETS="${INSTALL_TARGETS} cgi-install" 604[ ${BUILD_CATMAN} -gt 0 ] && \ 605 INSTALL_TARGETS="${INSTALL_TARGETS} catman-install" 606 607cat << __HEREDOC__ 608BUILD_TARGETS = ${BUILD_TARGETS} 609INSTALL_TARGETS = ${INSTALL_TARGETS} 610CC = ${CC} 611CFLAGS = ${CFLAGS} 612LDADD = ${LDADD} 613LDFLAGS = ${LDFLAGS} 614STATIC = ${STATIC} 615PREFIX = ${PREFIX} 616BINDIR = ${BINDIR} 617SBINDIR = ${SBINDIR} 618BIN_FROM_SBIN = ${BIN_FROM_SBIN} 619INCLUDEDIR = ${INCLUDEDIR} 620LIBDIR = ${LIBDIR} 621MANDIR = ${MANDIR} 622WWWPREFIX = ${WWWPREFIX} 623HTDOCDIR = ${HTDOCDIR} 624CGIBINDIR = ${CGIBINDIR} 625BINM_APROPOS = ${BINM_APROPOS} 626BINM_CATMAN = ${BINM_CATMAN} 627BINM_MAKEWHATIS = ${BINM_MAKEWHATIS} 628BINM_MAN = ${BINM_MAN} 629BINM_SOELIM = ${BINM_SOELIM} 630BINM_WHATIS = ${BINM_WHATIS} 631MANM_MAN = ${MANM_MAN} 632MANM_MANCONF = ${MANM_MANCONF} 633MANM_MDOC = ${MANM_MDOC} 634MANM_ROFF = ${MANM_ROFF} 635MANM_EQN = ${MANM_EQN} 636MANM_TBL = ${MANM_TBL} 637INSTALL = ${INSTALL} 638INSTALL_PROGRAM = ${INSTALL_PROGRAM} 639INSTALL_LIB = ${INSTALL_LIB} 640INSTALL_MAN = ${INSTALL_MAN} 641INSTALL_DATA = ${INSTALL_DATA} 642LN = ${LN} 643__HEREDOC__ 644 645echo "file Makefile.local: written" 1>&2 646echo "file Makefile.local: written" 1>&3 647 648exit 0 649