Return to configure CVS log | Up to [cvsweb.bsd.lv] / mandoc |
version 1.44, 2016/07/19 21:31:55 | version 1.56, 2017/02/04 12:03:07 | ||
---|---|---|---|
|
|
||
#!/bin/sh | #!/bin/sh | ||
# | # | ||
# $Id$ | |||
# | |||
# Copyright (c) 2014, 2015, 2016 Ingo Schwarze <schwarze@openbsd.org> | # Copyright (c) 2014, 2015, 2016 Ingo Schwarze <schwarze@openbsd.org> | ||
# | # | ||
# Permission to use, copy, modify, and distribute this software for any | # Permission to use, copy, modify, and distribute this software for any | ||
|
|
||
MANPATH_DEFAULT="/usr/share/man:/usr/X11R6/man:/usr/local/man" | MANPATH_DEFAULT="/usr/share/man:/usr/X11R6/man:/usr/local/man" | ||
OSNAME= | OSNAME= | ||
UTF8_LOCALE= | |||
CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | env -i make -f -` | CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | env -i make -sf -` | ||
CFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings" | CFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings" | ||
CFLAGS="${CFLAGS} -Wno-unused-parameter" | CFLAGS="${CFLAGS} -Wno-unused-parameter" | ||
LDADD= | LDADD= | ||
LDFLAGS= | LDFLAGS= | ||
LD_NANOSLEEP= | |||
LD_OHASH= | LD_OHASH= | ||
STATIC="-static" | STATIC="-static" | ||
BUILD_CGI=0 | BUILD_CGI=0 | ||
BUILD_CATMAN=0 | |||
INSTALL_LIBMANDOC=0 | |||
HAVE_DIRENT_NAMLEN= | HAVE_DIRENT_NAMLEN= | ||
HAVE_EFTYPE= | |||
HAVE_ENDIAN= | |||
HAVE_ERR= | HAVE_ERR= | ||
HAVE_FTS= | HAVE_FTS= | ||
HAVE_FTS_COMPARE_CONST= | |||
HAVE_GETLINE= | HAVE_GETLINE= | ||
HAVE_GETSUBOPT= | HAVE_GETSUBOPT= | ||
HAVE_ISBLANK= | HAVE_ISBLANK= | ||
HAVE_MKDTEMP= | HAVE_MKDTEMP= | ||
HAVE_NANOSLEEP= | |||
HAVE_NTOHL= | |||
HAVE_OHASH= | |||
HAVE_PATH_MAX= | |||
HAVE_PLEDGE= | HAVE_PLEDGE= | ||
HAVE_PROGNAME= | HAVE_PROGNAME= | ||
HAVE_REALLOCARRAY= | HAVE_REALLOCARRAY= | ||
|
|
||
HAVE_STRPTIME= | HAVE_STRPTIME= | ||
HAVE_STRSEP= | HAVE_STRSEP= | ||
HAVE_STRTONUM= | HAVE_STRTONUM= | ||
HAVE_SYS_ENDIAN= | |||
HAVE_VASPRINTF= | HAVE_VASPRINTF= | ||
HAVE_WCHAR= | HAVE_WCHAR= | ||
HAVE_OHASH= | |||
HAVE_MANPATH= | |||
PREFIX="/usr/local" | PREFIX="/usr/local" | ||
BINDIR= | BINDIR= | ||
SBINDIR= | SBINDIR= | ||
|
|
||
# If yes, use the override, if no, do not decide anything yet. | # If yes, use the override, if no, do not decide anything yet. | ||
# Arguments: lower-case test name, manual value | # Arguments: lower-case test name, manual value | ||
ismanual() { | ismanual() { | ||
[ -z "${2}" ] && return 1 | [ -z "${3}" ] && return 1 | ||
echo "${1}: manual (${2})" 1>&2 | echo "${1}: manual (HAVE_${2}=${3})" 1>&2 | ||
echo "${1}: manual (${2})" 1>&3 | echo "${1}: manual (HAVE_${2}=${3})" 1>&3 | ||
echo 1>&3 | echo 1>&3 | ||
return 0 | return 0 | ||
} | } | ||
|
|
||
# Arguments: lower-case test name, upper-case test name, additional CFLAGS | # Arguments: lower-case test name, upper-case test name, additional CFLAGS | ||
singletest() { | singletest() { | ||
cat 1>&3 << __HEREDOC__ | cat 1>&3 << __HEREDOC__ | ||
${1}: testing... | ${1}${3}: testing... | ||
${COMP} ${3} -o test-${1} test-${1}.c | ${COMP} -o test-${1} test-${1}.c ${3} | ||
__HEREDOC__ | __HEREDOC__ | ||
if ${COMP} ${3} -o "test-${1}" "test-${1}.c" 1>&3 2>&3; then | if ${COMP} -o "test-${1}" "test-${1}.c" ${3} 1>&3 2>&3; then | ||
echo "${1}: ${CC} succeeded" 1>&3 | echo "${1}${3}: ${CC} succeeded" 1>&3 | ||
else | else | ||
echo "${1}: ${CC} failed with $?" 1>&3 | echo "${1}${3}: ${CC} failed with $?" 1>&3 | ||
echo 1>&3 | echo 1>&3 | ||
return 1 | return 1 | ||
fi | fi | ||
if ./test-${1} 1>&3 2>&3; then | if ./test-${1} 1>&3 2>&3; then | ||
echo "${1}: yes" 1>&2 | echo "${1}${3}: yes" 1>&2 | ||
echo "${1}: yes" 1>&3 | echo "${1}${3}: yes" 1>&3 | ||
echo 1>&3 | echo 1>&3 | ||
eval HAVE_${2}=1 | eval HAVE_${2}=1 | ||
rm "test-${1}" | rm "test-${1}" | ||
return 0 | return 0 | ||
else | else | ||
echo "${1}: execution failed with $?" 1>&3 | echo "${1}${3}: execution failed with $?" 1>&3 | ||
echo 1>&3 | echo 1>&3 | ||
rm "test-${1}" | rm "test-${1}" | ||
return 1 | return 1 | ||
|
|
||
# Arguments: lower case name, upper case name, additional CFLAGS | # Arguments: lower case name, upper case name, additional CFLAGS | ||
runtest() { | runtest() { | ||
eval _manual=\${HAVE_${2}} | eval _manual=\${HAVE_${2}} | ||
ismanual "${1}" "${_manual}" && return 0 | ismanual "${1}" "${2}" "${_manual}" && return 0 | ||
singletest "${1}" "${2}" "${3}" && return 0 | singletest "${1}" "${2}" "${3}" && return 0 | ||
echo "${1}: no" 1>&2 | echo "${1}${3}: no" 1>&2 | ||
eval HAVE_${2}=0 | eval HAVE_${2}=0 | ||
return 1 | return 1 | ||
} | } | ||
# Select a UTF-8 locale. | |||
get_locale() { | |||
[ -n "${HAVE_WCHAR}" ] && [ "${HAVE_WCHAR}" -eq 0 ] && return 0 | |||
ismanual UTF8_LOCALE 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 --- | # --- library functions --- | ||
runtest dirent-namlen DIRENT_NAMLEN || true | runtest dirent-namlen DIRENT_NAMLEN || true | ||
runtest be32toh ENDIAN || true | |||
runtest be32toh SYS_ENDIAN -DSYS_ENDIAN || true | |||
runtest EFTYPE EFTYPE || true | |||
runtest err ERR || true | runtest err ERR || true | ||
runtest fts FTS || true | |||
runtest getline GETLINE || true | runtest getline GETLINE || true | ||
runtest getsubopt GETSUBOPT || true | runtest getsubopt GETSUBOPT || true | ||
runtest isblank ISBLANK || true | runtest isblank ISBLANK || true | ||
runtest mkdtemp MKDTEMP || true | runtest mkdtemp MKDTEMP || true | ||
runtest ntohl NTOHL || true | |||
runtest PATH_MAX PATH_MAX || true | |||
runtest pledge PLEDGE || true | runtest pledge PLEDGE || true | ||
runtest sandbox_init SANDBOX_INIT || true | runtest sandbox_init SANDBOX_INIT || true | ||
runtest progname PROGNAME || true | runtest progname PROGNAME || true | ||
|
|
||
runtest strsep STRSEP || true | runtest strsep STRSEP || true | ||
runtest strtonum STRTONUM || true | runtest strtonum STRTONUM || true | ||
runtest vasprintf VASPRINTF || true | runtest vasprintf VASPRINTF || true | ||
runtest wchar WCHAR || true | |||
if [ ${HAVE_ENDIAN} -eq 0 -a \ | |||
${HAVE_SYS_ENDIAN} -eq 0 -a \ | |||
${HAVE_NTOHL} -eq 0 ]; then | |||
echo "FATAL: no endian conversion functions found" 1>&2 | |||
echo "FATAL: no endian conversion functions found" 1>&3 | |||
exit 1 | |||
fi | |||
if ismanual fts FTS ${HAVE_FTS}; then | |||
HAVE_FTS_COMPARE_CONST=0 | |||
elif runtest fts FTS_COMPARE_CONST -DFTS_COMPARE_CONST; then | |||
HAVE_FTS=1 | |||
else | |||
runtest fts FTS || true | |||
fi | |||
# --- 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 | |||
# --- 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 --- | # --- ohash --- | ||
if ismanual ohash "${HAVE_OHASH}"; then | if ismanual ohash OHASH "${HAVE_OHASH}"; then | ||
: | : | ||
elif [ -n "${LD_OHASH}" ]; then | elif [ -n "${LD_OHASH}" ]; then | ||
runtest ohash OHASH "${LD_OHASH}" || true | runtest ohash OHASH "${LD_OHASH}" || true | ||
|
|
||
fi | fi | ||
# --- LDADD --- | # --- LDADD --- | ||
LDADD="${LDADD} ${LD_OHASH} -lz" | LDADD="${LDADD} ${LD_NANOSLEEP} ${LD_OHASH} -lz" | ||
echo "LDADD=\"${LDADD}\"" 1>&2 | echo "LDADD=\"${LDADD}\"" 1>&2 | ||
echo "LDADD=\"${LDADD}\"" 1>&3 | echo "LDADD=\"${LDADD}\"" 1>&3 | ||
echo 1>&3 | echo 1>&3 | ||
# --- manpath --- | |||
if ismanual manpath "${HAVE_MANPATH}"; then | |||
: | |||
elif manpath 1>&3 2>&3; then | |||
echo "manpath: yes" 1>&2 | |||
echo "manpath: yes" 1>&3 | |||
echo 1>&3 | |||
HAVE_MANPATH=1 | |||
else | |||
echo "manpath: no" 1>&2 | |||
echo "manpath: no" 1>&3 | |||
echo 1>&3 | |||
HAVE_MANPATH=0 | |||
fi | |||
# --- write config.h --- | # --- write config.h --- | ||
exec > config.h | exec > config.h | ||
|
|
||
echo "#define MAN_CONF_FILE \"/etc/${MANM_MANCONF}\"" | echo "#define MAN_CONF_FILE \"/etc/${MANM_MANCONF}\"" | ||
echo "#define MANPATH_DEFAULT \"${MANPATH_DEFAULT}\"" | echo "#define MANPATH_DEFAULT \"${MANPATH_DEFAULT}\"" | ||
[ -n "${OSNAME}" ] && echo "#define OSNAME \"${OSNAME}\"" | [ -n "${OSNAME}" ] && echo "#define OSNAME \"${OSNAME}\"" | ||
[ -n "${UTF8_LOCALE}" ] && echo "#define UTF8_LOCALE \"${UTF8_LOCALE}\"" | |||
[ -n "${HOMEBREWDIR}" ] && echo "#define HOMEBREWDIR \"${HOMEBREWDIR}\"" | [ -n "${HOMEBREWDIR}" ] && echo "#define HOMEBREWDIR \"${HOMEBREWDIR}\"" | ||
[ ${HAVE_EFTYPE} -eq 0 ] && echo "#define EFTYPE EINVAL" | |||
[ ${HAVE_PATH_MAX} -eq 0 ] && echo "#define PATH_MAX 4096" | |||
if [ ${HAVE_ENDIAN} -eq 0 -a ${HAVE_SYS_ENDIAN} -eq 0 ]; then | |||
echo "#define be32toh ntohl" | |||
echo "#define htobe32 htonl" | |||
fi | |||
cat << __HEREDOC__ | cat << __HEREDOC__ | ||
#define HAVE_DIRENT_NAMLEN ${HAVE_DIRENT_NAMLEN} | #define HAVE_DIRENT_NAMLEN ${HAVE_DIRENT_NAMLEN} | ||
#define HAVE_ENDIAN ${HAVE_ENDIAN} | |||
#define HAVE_ERR ${HAVE_ERR} | #define HAVE_ERR ${HAVE_ERR} | ||
#define HAVE_FTS ${HAVE_FTS} | #define HAVE_FTS ${HAVE_FTS} | ||
#define HAVE_FTS_COMPARE_CONST ${HAVE_FTS_COMPARE_CONST} | |||
#define HAVE_GETLINE ${HAVE_GETLINE} | #define HAVE_GETLINE ${HAVE_GETLINE} | ||
#define HAVE_GETSUBOPT ${HAVE_GETSUBOPT} | #define HAVE_GETSUBOPT ${HAVE_GETSUBOPT} | ||
#define HAVE_ISBLANK ${HAVE_ISBLANK} | #define HAVE_ISBLANK ${HAVE_ISBLANK} | ||
#define HAVE_MKDTEMP ${HAVE_MKDTEMP} | #define HAVE_MKDTEMP ${HAVE_MKDTEMP} | ||
#define HAVE_NTOHL ${HAVE_NTOHL} | |||
#define HAVE_PLEDGE ${HAVE_PLEDGE} | #define HAVE_PLEDGE ${HAVE_PLEDGE} | ||
#define HAVE_PROGNAME ${HAVE_PROGNAME} | #define HAVE_PROGNAME ${HAVE_PROGNAME} | ||
#define HAVE_REALLOCARRAY ${HAVE_REALLOCARRAY} | #define HAVE_REALLOCARRAY ${HAVE_REALLOCARRAY} | ||
|
|
||
#define HAVE_STRPTIME ${HAVE_STRPTIME} | #define HAVE_STRPTIME ${HAVE_STRPTIME} | ||
#define HAVE_STRSEP ${HAVE_STRSEP} | #define HAVE_STRSEP ${HAVE_STRSEP} | ||
#define HAVE_STRTONUM ${HAVE_STRTONUM} | #define HAVE_STRTONUM ${HAVE_STRTONUM} | ||
#define HAVE_SYS_ENDIAN ${HAVE_SYS_ENDIAN} | |||
#define HAVE_VASPRINTF ${HAVE_VASPRINTF} | #define HAVE_VASPRINTF ${HAVE_VASPRINTF} | ||
#define HAVE_WCHAR ${HAVE_WCHAR} | #define HAVE_WCHAR ${HAVE_WCHAR} | ||
#define HAVE_OHASH ${HAVE_OHASH} | #define HAVE_OHASH ${HAVE_OHASH} | ||
#define HAVE_MANPATH ${HAVE_MANPATH} | |||
#define BINM_APROPOS "${BINM_APROPOS}" | #define BINM_APROPOS "${BINM_APROPOS}" | ||
#define BINM_MAKEWHATIS "${BINM_MAKEWHATIS}" | #define BINM_MAKEWHATIS "${BINM_MAKEWHATIS}" | ||
|
|
||
[ -z "${INSTALL_DATA}" ] && INSTALL_DATA="${INSTALL} -m 0444" | [ -z "${INSTALL_DATA}" ] && INSTALL_DATA="${INSTALL} -m 0444" | ||
BUILD_TARGETS= | BUILD_TARGETS= | ||
[ ${BUILD_CGI} -gt 0 ] && BUILD_TARGETS="cgi-build" | [ ${BUILD_CGI} -gt 0 ] && BUILD_TARGETS="man.cgi" | ||
[ ${BUILD_CATMAN} -gt 0 ] && \ | |||
BUILD_TARGETS="${BUILD_TARGETS} mandocd catman" | |||
INSTALL_TARGETS= | INSTALL_TARGETS= | ||
[ ${BUILD_CGI} -gt 0 ] && INSTALL_TARGETS="cgi-install" | [ ${INSTALL_LIBMANDOC} -gt 0 ] && INSTALL_TARGETS="lib-install" | ||
[ ${BUILD_CGI} -gt 0 ] && INSTALL_TARGETS="${INSTALL_TARGETS} cgi-install" | |||
[ ${BUILD_CATMAN} -gt 0 ] && \ | |||
INSTALL_TARGETS="${INSTALL_TARGETS} catman-install" | |||
cat << __HEREDOC__ | cat << __HEREDOC__ | ||
BUILD_TARGETS = ${BUILD_TARGETS} | BUILD_TARGETS = ${BUILD_TARGETS} |