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