=================================================================== RCS file: /cvs/mandoc/configure,v retrieving revision 1.36 retrieving revision 1.43.2.2 diff -u -p -r1.36 -r1.43.2.2 --- mandoc/configure 2015/11/07 21:31:22 1.36 +++ mandoc/configure 2016/07/31 09:47:01 1.43.2.2 @@ -1,7 +1,9 @@ #!/bin/sh # -# Copyright (c) 2014, 2015 Ingo Schwarze +# $Id: configure,v 1.43.2.2 2016/07/31 09:47:01 schwarze Exp $ # +# Copyright (c) 2014, 2015, 2016 Ingo Schwarze +# # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. @@ -33,10 +35,16 @@ echo "config.log: writing..." MANPATH_DEFAULT="/usr/share/man:/usr/X11R6/man:/usr/local/man" OSNAME= +UTF8_LOCALE= -CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | make -f -` -CFLAGS="-g -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings" -DBLIB= +CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | env -i make -f -` +CFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings" +CFLAGS="${CFLAGS} -Wno-unused-parameter" +LDADD= +LDFLAGS= +LD_NANOSLEEP= +LD_OHASH= +LD_SQLITE3= STATIC="-static" BUILD_DB=1 @@ -50,11 +58,13 @@ HAVE_GETSUBOPT= HAVE_ISBLANK= HAVE_MKDTEMP= HAVE_MMAP= +HAVE_NANOSLEEP= HAVE_PLEDGE= HAVE_PROGNAME= HAVE_REALLOCARRAY= HAVE_REWB_BSD= HAVE_REWB_SYSV= +HAVE_SANDBOX_INIT= HAVE_STRCASESTR= HAVE_STRINGLIST= HAVE_STRLCAT= @@ -173,6 +183,23 @@ runtest() { return 1 } +# Select a UTF-8 locale. +get_locale() { + [ -n "${HAVE_WCHAR}" ] && [ "${HAVE_WCHAR}" -eq 0 ] && return 0 + ismanual UTF8_LOCALE "$UTF8_LOCALE" && return 0 + echo "UTF8_LOCALE: testing..." 1>&3 + UTF8_LOCALE=`locale -a | grep -i '^en_US\.UTF-*8$' | head -n 1` + if [ -z "${UTF8_LOCALE}" ]; then + UTF8_LOCALE=`locale -a | grep -i '\.UTF-*8' | head -n 1` + [ -n "${UTF8_LOCALE}" ] || return 1 + fi + echo "UTF8_LOCALE=${UTF8_LOCALE}" 1>&2 + echo "UTF8_LOCALE=${UTF8_LOCALE}" 1>&3 + echo 1>&3 + return 0; +} + + # --- library functions --- runtest dirent-namlen DIRENT_NAMLEN || true runtest err ERR || true @@ -183,6 +210,7 @@ runtest isblank ISBLANK || true runtest mkdtemp MKDTEMP || true runtest mmap MMAP || true runtest pledge PLEDGE || true +runtest sandbox_init SANDBOX_INIT || true runtest progname PROGNAME || true runtest reallocarray REALLOCARRAY || true runtest rewb-bsd REWB_BSD || true @@ -195,31 +223,43 @@ runtest strptime STRPTIME || true runtest strsep STRSEP || true runtest strtonum STRTONUM || true runtest vasprintf VASPRINTF || true -runtest wchar WCHAR || true +# --- wide character and locale support --- +if get_locale; then + runtest wchar WCHAR -DUTF8_LOCALE=\"${UTF8_LOCALE}\" || true +else + HAVE_WCHAR=0 + echo "wchar: no (no UTF8_LOCALE)" 1>&2 + echo "wchar: no (no UTF8_LOCALE)" 1>&3 +fi + # --- sqlite3 --- -DETECTLIB= if [ ${BUILD_DB} -eq 0 ]; then echo "BUILD_DB=0 (manual)" 1>&2 echo "BUILD_DB=0 (manual)" 1>&3 echo 1>&3 HAVE_SQLITE3=0 elif ismanual sqlite3 "${HAVE_SQLITE3}"; then - DETECTLIB="-lsqlite3" -elif [ -n "${DBLIB}" ]; then - runtest sqlite3 SQLITE3 "${DBLIB}" || true + if [ -z "${LD_SQLITE3}" ]; then + LD_SQLITE3="-lsqlite3" + fi +elif [ -n "${LD_SQLITE3}" ]; then + runtest sqlite3 SQLITE3 "${LD_SQLITE3}" || true elif singletest sqlite3 SQLITE3 "-lsqlite3"; then - DETECTLIB="-lsqlite3" + LD_SQLITE3="-lsqlite3" elif runtest sqlite3 SQLITE3 \ "-I/usr/local/include -L/usr/local/lib -lsqlite3"; then - DETECTLIB="-L/usr/local/lib -lsqlite3" + LD_SQLITE3="-L/usr/local/lib -lsqlite3" CFLAGS="${CFLAGS} -I/usr/local/include" fi -if [ ${BUILD_DB} -gt 0 -a ${HAVE_SQLITE3} -eq 0 ]; then - echo "BUILD_DB=0 (no sqlite3)" 1>&2 - echo "BUILD_DB=0 (no sqlite3)" 1>&3 - echo 1>&3 - BUILD_DB=0 +if [ ${HAVE_SQLITE3} -eq 0 ]; then + LD_SQLITE3= + if [ ${BUILD_DB} -gt 0 ]; then + echo "BUILD_DB=0 (no sqlite3)" 1>&2 + echo "BUILD_DB=0 (no sqlite3)" 1>&3 + echo 1>&3 + BUILD_DB=0 + fi fi # --- sqlite3_errstr --- @@ -227,35 +267,44 @@ if [ ${BUILD_DB} -eq 0 ]; then HAVE_SQLITE3_ERRSTR=1 elif ismanual sqlite3_errstr "${HAVE_SQLITE3_ERRSTR}"; then : -elif [ -n "${DBLIB}" ]; then - runtest sqlite3_errstr SQLITE3_ERRSTR "${DBLIB}" || true else - runtest sqlite3_errstr SQLITE3_ERRSTR "${DETECTLIB}" || true + runtest sqlite3_errstr SQLITE3_ERRSTR "${LD_SQLITE3}" || true fi +# --- nanosleep --- +if [ -n "${LD_NANOSLEEP}" ]; then + runtest nanosleep NANOSLEEP "${LD_NANOSLEEP}" || true +elif singletest nanosleep NANOSLEEP; then + : +elif runtest nanosleep NANOSLEEP "-lrt"; then + LD_NANOSLEEP="-lrt" +fi +if [ "${HAVE_NANOSLEEP}" -eq 0 ]; then + echo "FATAL: nanosleep: no" 1>&2 + echo "FATAL: nanosleep: no" 1>&3 + exit 1 +fi + # --- ohash --- -if [ ${BUILD_DB} -eq 0 ]; then - HAVE_OHASH=1 -elif ismanual ohash "${HAVE_OHASH}"; then +if ismanual ohash "${HAVE_OHASH}"; then : -elif [ -n "${DBLIB}" ]; then - runtest ohash OHASH "${DBLIB}" || true +elif [ -n "${LD_OHASH}" ]; then + runtest ohash OHASH "${LD_OHASH}" || true elif singletest ohash OHASH; then : elif runtest ohash OHASH "-lutil"; then - DETECTLIB="${DETECTLIB} -lutil" + LD_OHASH="-lutil" fi - -# --- DBLIB --- -if [ ${BUILD_DB} -eq 0 ]; then - DBLIB="-lz" -elif [ -z "${DBLIB}" ]; then - DBLIB="${DETECTLIB} -lz" - echo "DBLIB=\"${DBLIB}\"" 1>&2 - echo "DBLIB=\"${DBLIB}\"" 1>&3 - echo 1>&3 +if [ "${HAVE_OHASH}" -eq 0 ]; then + LD_OHASH= fi +# --- LDADD --- +LDADD="${LDADD} ${LD_SQLITE3} ${LD_NANOSLEEP} ${LD_OHASH} -lz" +echo "LDADD=\"${LDADD}\"" 1>&2 +echo "LDADD=\"${LDADD}\"" 1>&3 +echo 1>&3 + # --- manpath --- if ismanual manpath "${HAVE_MANPATH}"; then : @@ -280,8 +329,9 @@ cat << __HEREDOC__ #error "Do not use C++. See the INSTALL file." #endif -#ifndef MANDOC_CONFIG_H -#define MANDOC_CONFIG_H +#if !defined(__GNUC__) || (__GNUC__ < 4) +#define __attribute__(x) +#endif #if defined(__linux__) || defined(__MINT__) #define _GNU_SOURCE /* See test-*.c what needs this. */ @@ -299,6 +349,7 @@ echo echo "#define MAN_CONF_FILE \"/etc/${MANM_MANCONF}\"" echo "#define MANPATH_DEFAULT \"${MANPATH_DEFAULT}\"" [ -n "${OSNAME}" ] && echo "#define OSNAME \"${OSNAME}\"" +[ -n "${UTF8_LOCALE}" ] && echo "#define UTF8_LOCALE \"${UTF8_LOCALE}\"" [ -n "${HOMEBREWDIR}" ] && echo "#define HOMEBREWDIR \"${HOMEBREWDIR}\"" cat << __HEREDOC__ @@ -315,6 +366,7 @@ cat << __HEREDOC__ #define HAVE_REALLOCARRAY ${HAVE_REALLOCARRAY} #define HAVE_REWB_BSD ${HAVE_REWB_BSD} #define HAVE_REWB_SYSV ${HAVE_REWB_SYSV} +#define HAVE_SANDBOX_INIT ${HAVE_SANDBOX_INIT} #define HAVE_STRCASESTR ${HAVE_STRCASESTR} #define HAVE_STRINGLIST ${HAVE_STRINGLIST} #define HAVE_STRLCAT ${HAVE_STRLCAT} @@ -339,6 +391,7 @@ __HEREDOC__ if [ ${HAVE_ERR} -eq 0 ]; then echo "extern void err(int, const char *, ...);" + echo "extern void errx(int, const char *, ...);" echo "extern void warn(const char *, ...);" echo "extern void warnx(const char *, ...);" fi @@ -384,9 +437,6 @@ fi [ ${HAVE_VASPRINTF} -eq 0 ] && \ echo "extern int vasprintf(char **, const char *, va_list);" -echo -echo "#endif /* MANDOC_CONFIG_H */" - echo "config.h: written" 1>&2 echo "config.h: written" 1>&3 @@ -425,7 +475,8 @@ BUILD_TARGETS = ${BUILD_TARGETS} INSTALL_TARGETS = ${INSTALL_TARGETS} CC = ${CC} CFLAGS = ${CFLAGS} -DBLIB = ${DBLIB} +LDADD = ${LDADD} +LDFLAGS = ${LDFLAGS} STATIC = ${STATIC} PREFIX = ${PREFIX} BINDIR = ${BINDIR}