# Configuration for ht://Dig 3.x
#
# Part of the ht://Dig package
# Copyright (c) 1999-2004 The ht://Dig Group
# For copyright details, see the file COPYING in your distribution
# or the GNU Library General Public License (LGPL) version 2 or later
#
AC_PREREQ(2.57)
AC_INIT
#
# ht://Dig's version
#
VERSION=`cat ${srcdir}/.version`
HTDIG_MAJOR_VERSION=[`expr $VERSION : '\([0-9][0-9]*\)'`]
AC_SUBST(HTDIG_MAJOR_VERSION)
HTDIG_MINOR_VERSION=[`expr $VERSION : '[0-9][0-9]*\.\([0-9][0-9]*\)'`]
AC_SUBST(HTDIG_MINOR_VERSION)
HTDIG_MICRO_VERSION=[`expr $VERSION : '[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\)'`]
AC_SUBST(HTDIG_MICRO_VERSION)
AM_INIT_AUTOMAKE([htdig], $VERSION)
AC_CONFIG_SRCDIR([htdig/htdig.cc])
AM_CONFIG_HEADER([include/config.h])
AC_CONFIG_LIBOBJ_DIR([htlib])
AC_PREFIX_DEFAULT([/opt/www])
# Initialize maintainer mode
AM_MAINTAINER_MODE
AC_ARG_WITH(config-dir, [AC_HELP_STRING([--with-config-dir=DIR],
[where your config directory is @<:@PREFIX/conf@:>@])],
CONFIG_DIR="$withval", CONFIG_DIR='${prefix}/conf')
AC_SUBST(CONFIG_DIR)
# In the below, the strings @<:@ and @:>@ expand to [ and ]
AC_ARG_WITH(default-config-file,
[AC_HELP_STRING([--with-default-config-file=FILE],
[where the various programs will look for a configuration file
@<:@PREFIX/conf/htdig.conf@:>@])],
DEFAULT_CONFIG_FILE="$withval", DEFAULT_CONFIG_FILE='${CONFIG_DIR}/htdig.conf')
AC_SUBST(DEFAULT_CONFIG_FILE)
AC_ARG_WITH(common-dir, [AC_HELP_STRING([--with-common-dir=DIR],
[where your .html templates are stored
@<:@PREFIX/share/htdig@:>@])],
COMMON_DIR="$withval", COMMON_DIR='${datadir}/htdig')
AC_SUBST(COMMON_DIR)
AC_ARG_WITH(database-dir, [AC_HELP_STRING([--with-database-dir=DIR],
[where your database directory is
@<:@PREFIX/var/htdig@:>@])],
DATABASE_DIR="$withval", DATABASE_DIR='${localstatedir}/htdig')
AC_SUBST(DATABASE_DIR)
AC_ARG_WITH(cgi-bin-dir, [AC_HELP_STRING([--with-cgi-bin-dir=DIR],
[where your web server cgi-bin directory is
@<:@PREFIX/cgi-bin@:>@])],
CGIBIN_DIR="$withval", CGIBIN_DIR='${prefix}/cgi-bin')
AC_SUBST(CGIBIN_DIR)
AC_ARG_WITH(search-dir, [AC_HELP_STRING([--with-search-dir=DIR],
[where the sample search form should be installed
@<:@PREFIX/htdocs/htdig@:>@])],
SEARCH_DIR="$withval", SEARCH_DIR='${prefix}/htdocs/htdig')
AC_SUBST(SEARCH_DIR)
AC_ARG_WITH(search-form, [AC_HELP_STRING([--with-search-form=FILE],
[the name for the sample search form @<:@search.html@:>@])],
SEARCH_FORM="$withval", SEARCH_FORM='search.html')
AC_SUBST(SEARCH_FORM)
AC_ARG_WITH(image-dir, [AC_HELP_STRING([--with-image-dir=DIR],
[where the ht://Dig images are installed
@<:@PREFIX/htdocs/htdig@:>@])],
IMAGE_DIR="$withval", IMAGE_DIR='${prefix}/htdocs/htdig')
AC_SUBST(IMAGE_DIR)
AC_ARG_WITH(image-url-prefix,
[AC_HELP_STRING([--with-image-url-prefix=LOCATION],
[the URL path to the installed images @<:@/htdig@:>@])],
IMAGE_URL_PREFIX="$withval", IMAGE_URL_PREFIX='/htdig')
AC_SUBST(IMAGE_URL_PREFIX)
AC_ARG_WITH(rx, [AC_HELP_STRING([--with-rx],
[with system rx instead of regex @<:@no@:>@])],
WITH_RX="$withval", WITH_RX='no')
# If the user doesn't want tests
AC_ARG_ENABLE(tests,
[AC_HELP_STRING([--enable-tests],
[do build a version with run-time tests.])],
[htdig_cv_tests="$enable_tests"], [htdig_cv_tests="no"])
AM_CONDITIONAL(TESTS, test x$htdig_cv_tests = xyes)
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_PROG_CPP
AC_AIX
AM_PROG_LEX
AC_PROG_YACC
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
AC_COMPILE_WARNINGS
NO_RTTI
NO_EXCEPTIONS
AC_PATH_PROG(AR, ar, ar)
AC_PATH_PROG(SHELL, sh, /bin/sh)
AC_PATH_PROG(SED, sed, /bin/sed)
AC_PATH_PROG(PERL, perl, /usr/bin/perl)
AC_PATH_PROG(FIND, find, /bin/find)
AC_PATH_PROG(GUNZIP, gunzip, /bin/gunzip)
AC_CHECK_PROGS(RRDTOOL, rrdtool)
AC_CHECK_PROGS(TAR, tar gtar gnutar, tar)
AC_PATH_PROG(MV, mv, /bin/mv)
AC_PATH_PROG(SENDMAIL, sendmail, /usr/lib/sendmail,
$PATH:/usr/libexec:/usr/sbin:/usr/lib:/usr/etc:etc)
AM_PROG_TIME
# Checks for libraries.
#AC_CHECK_LIB([z], [main])
AC_CHECK_LIB(socket, socket)
AC_CHECK_LIB(nsl, t_accept)
CHECK_SSL
CHECK_ZLIB
AC_SUBST(CXXFLAGS)
AC_SUBST(LDFLAGS)
# Checks for header files.
AC_HEADER_STDBOOL
AC_HEADER_TIME
AC_FUNC_ALLOCA
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h langinfo.h libintl.h limits.h locale.h malloc.h netdb.h netinet/in.h stddef.h stdlib.h string.h strings.h sys/file.h sys/ioctl.h sys/socket.h sys/time.h sys/timeb.h syslog.h unistd.h wchar.h wctype.h])
#AC_CHECK_HEADERS([zlib.h sys/wait.h wait.h alloca.h])
AC_CHECK_HEADERS([sys/wait.h wait.h alloca.h])
#AC_CHECK_HEADERS(ssl.h)
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STAT
AC_HEADER_STDBOOL
AC_C_CONST
AC_C_INLINE
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_CHECK_MEMBERS([struct stat.st_blksize])
AC_HEADER_TIME
AC_STRUCT_TM
AC_CHECK_SIZEOF(unsigned long long int, 8)
AC_CHECK_SIZEOF(unsigned long int, 4)
AC_CHECK_SIZEOF(unsigned int, 4)
AC_CHECK_SIZEOF(unsigned short int, 2)
AC_CHECK_SIZEOF(unsigned char, 1)
# Checks for library functions.
AC_FUNC_CLOSEDIR_VOID
#AC_FUNC_ERROR_AT_LINE
#AC_FUNC_LSTAT
#AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
AC_FUNC_MALLOC
AC_FUNC_MBRTOWC
AC_FUNC_MEMCMP
AC_FUNC_MMAP
AC_FUNC_REALLOC
AC_FUNC_SELECT_ARGTYPES
AC_TYPE_SIGNAL
#AC_FUNC_STAT
AC_FUNC_STRFTIME
AC_FUNC_STRPTIME
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([alarm btowc bzero ftime getcwd gettimeofday localtime_r memcmp memcpy memmove memset mkstemp munmap pstat_getdynamic raise re_comp regcomp select setlocale strchr strcspn strdup strerror strrchr strstr strtol strtoul timegm])
AC_REPLACE_FUNCS(snprintf vsnprintf)
# More header checks--here use C++
AC_LANG([C++])
AC_CXX_HAVE_STD
AC_MSG_CHECKING(whether we need gethostname() prototype?)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
extern "C" int gethostname(char *, int);
]],[[
gethostname("sdsu.edu", (int) 8);
]])],[AC_MSG_RESULT(yes);AC_DEFINE([NEED_PROTO_GETHOSTNAME],,[Define if you need a prototype for gethostname()])],[AC_MSG_RESULT(no)])
# We're still using the C++ compiler for this test
AC_MSG_CHECKING(how to call getpeername?)
for sock_t in 'struct sockaddr' 'void'; do
for getpeername_length_t in 'size_t' 'int' 'unsigned int' 'long unsigned int' 'socklen_t'
do
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
#include
extern "C" int getpeername(int, $sock_t *, $getpeername_length_t *);
$sock_t s; $getpeername_length_t l; ]], [[ getpeername(0, &s, &l); ]])],[ac_found=yes ; break 2],[ac_found=no])
done
done
if test "$ac_found" = no
then
AC_MSG_WARN([can't determine, using size_t])
getpeername_length_t="size_t"
else
AC_MSG_RESULT($getpeername_length_t)
fi
AC_DEFINE_UNQUOTED([GETPEERNAME_LENGTH_T],[$getpeername_length_t],[Define this to the type of the third argument of getpeername()])
AC_MSG_CHECKING(how to call select?)
for fd_set_t in 'fd_set' 'int'
do
for timeval_t in 'struct timeval' 'const struct timeval'
do
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
#include
#include
extern "C" int select(int, $fd_set_t *, $fd_set_t *, $fd_set_t *, $timeval_t *);
$fd_set_t fd; ]], [[ select(0, &fd, 0, 0, 0); ]])],[ac_found=yes ; break 2],[ac_found=no])
done
done
if test "$ac_found" = no
then
AC_MSG_WARN([can't determine argument type using int])
fd_set_t="int"
else
AC_MSG_RESULT($fd_set_t)
fi
AC_DEFINE_UNQUOTED([FD_SET_T],[$fd_set_t],[Define this to the type of the second argument of select()])
# Replacements for the library functions (i.e. regex)
# Regex is compiled by the C compiler so we need to do it before we switch
if test $WITH_RX = yes; then
AC_CHECK_HEADER(rxposix.h, AC_DEFINE(USE_RX,,[Use posix regexp]), WITH_RX='no')
fi
if test $WITH_RX = no; then
AC_MSG_CHECKING(if we should use the included regex?)
OLD_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -I${srcdir}/htlib"
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include "${srcdir}/htlib/regex.c"
int main() {
regex_t re;
return regcomp(&re, "ht.*Dig", REG_ICASE);
}
]])],
[AC_MSG_RESULT(yes);AC_LIBOBJ([regex])],
[AC_MSG_RESULT(no);AC_DEFINE(HAVE_BROKEN_REGEX,,[Broken regexp])],
[AC_MSG_RESULT(unknown);AC_DEFINE(HAVE_BROKEN_REGEX,,[Unknown regexp])])
CFLAGS=$OLD_CFLAGS
fi
# Enable big files?
AC_MSG_CHECKING(if --enable-bigfile option specified)
AC_ARG_ENABLE(bigfile,
[AC_HELP_STRING([--enable-bigfile], [enable Linux, AIX, HP/UX, Solaris big files.])],
[db_cv_bigfile="$enable_bigfile"], [db_cv_bigfile="yes"])
AC_MSG_RESULT($db_cv_bigfile)
# Vendors are doing 64-bit lseek in different ways.
# Linux, AIX, HP/UX and Solaris all use _FILE_OFFSET_BITS to specify a "big-file"
# environment.
if test "$db_cv_bigfile" = yes; then
case "$host_os" in
bsdi*|aix*|hpux*|solaris*) AC_DEFINE(HAVE_FILE_OFFSET_BITS,,['big-file' environment]);;
linux*) AC_DEFINE(HAVE_FILE_OFFSET_BITS,,['big-file' environment])
AC_DEFINE(HAVE_LARGEFILE_SOURCE,,[large file sources])
;;
esac
fi
# Add the -mimpure-text option on Solaris with GCC and libstc++ that is not shared
if test "$GXX" = "yes"
then
case "$host" in
*-sun-solaris* ) extra_ldflags="-mimpure-text";;
esac
fi
AC_SUBST(extra_ldflags)
# Define to the syslog level for htsearch logging
AC_DEFINE([LOG_LEVEL],[LOG_INFO],[Define to the syslog level for htsearch logging])
# Define to the syslog facility for htsearch logging
AC_DEFINE([LOG_FACILITY],[LOG_LOCAL5],[Define to the syslog facility for htsearch logging])
# Any remaining tests probably want the C compiler
AC_LANG_C
if test ! -d "./db"; then
mkdir db
fi
if test x$htdig_cv_tests = xyes
then
CHECK_USER
AC_PROG_APACHE(1.3.1)
fi
echo configuring ht://Dig version $VERSION
AC_CONFIG_SUBDIRS(db)
### HACK: copied from autoconf output, to ensure the expansion below works
test "x$prefix" = xNONE && prefix=$ac_default_prefix
# Let make expand exec_prefix.
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
# expand variables which appear in attrs.html and the man pages
while echo $bindir | grep '\$' >/dev/null ; do
eval "bindir=$bindir"
done
while echo $COMMON_DIR | grep '\$' >/dev/null ; do
eval "COMMON_DIR=$COMMON_DIR"
done
while echo $CONFIG_DIR | grep '\$' >/dev/null ; do
eval "CONFIG_DIR=$CONFIG_DIR"
done
while echo $DEFAULT_CONFIG_FILE | grep '\$' >/dev/null ; do
eval "DEFAULT_CONFIG_FILE=$DEFAULT_CONFIG_FILE"
done
while echo $DATABASE_DIR | grep '\$' >/dev/null ; do
eval "DATABASE_DIR=$DATABASE_DIR"
done
while echo $IMAGE_URL_PREFIX | grep '\$' >/dev/null ; do
eval "IMAGE_URL_PREFIX=$IMAGE_URL_PREFIX"
done
while echo $VERSION | grep '\$' >/dev/null ; do
eval "VERSION=$VERSION"
done
AC_CONFIG_FILES([Makefile
htcommon/Makefile
htdb/Makefile
htdig/Makefile
htdoc/Makefile
htdoc/attrs.html
installdir/htdig.1
installdir/htdig-pdfparser.1
installdir/htfuzzy.1
installdir/htmerge.1
installdir/htpurge.1
installdir/htstat.1
installdir/htdigconfig.8
installdir/htdump.1
installdir/htload.1
installdir/htnotify.1
installdir/htsearch.1
installdir/rundig.1
htfuzzy/Makefile
htlib/Makefile
htnet/Makefile
htsearch/Makefile
httools/Makefile
htword/Makefile
include/Makefile installdir/Makefile
test/Makefile
test/test_functions])
AC_OUTPUT
echo ""
echo ""
echo "Now you must run 'make' followed by 'make install'"
echo ""