dnl $Id: configure.in,v 1.12 2001-06-05 03:56:52 rjkaes Exp $ AC_INIT() AM_INIT_AUTOMAKE(tinyproxy,1.4.0pre6) AM_CONFIG_HEADER(config.h) AC_CANONICAL_HOST AC_CANONICAL_TARGET dnl Checks for programs. AC_PROG_AWK AC_PROG_MAKE_SET AC_PROG_CC AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_YACC if test "$YACC" != "bison -y"; then AC_MSG_WARN(You will need bison if you want to regenerate the parser.) else AC_MSG_CHECKING(bison version) oldIFS=$IFS; IFS=. set `bison -V | sed -e 's/^GNU Bison version //'` IFS=$oldIFS if test "$1" = "1" -a "$2" -lt "25"; then AC_MSG_WARN(Bison 1.25 or newer needed to regenerate parsers (found $1.$2).) fi AC_MSG_RESULT($1.$2 (ok)) fi AM_PROG_LEX AM_C_PROTOTYPES dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(\ sys/types.h \ sys/ioctl.h \ sys/resource.h \ sys/select.h \ sys/socket.h \ sys/stat.h \ sys/sysctl.h \ sys/time.h \ sys/uio.h \ sys/un.h \ sys/wait.h \ arpa/inet.h \ netinet/in.h \ alloca.h \ assert.h \ ctype.h \ errno.h \ fcntl.h \ grp.h \ io.h \ libintl.h \ malloc.h \ netdb.h \ pthread.h \ pwd.h \ regex.h \ signal.h \ stdarg.h \ stddef.h \ stdint.h \ stdio.h \ stdlib.h \ string.h \ strings.h \ sysexists.h \ syslog.h \ time.h \ unistd.h \ wchar.h \ wctype.h \ ) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_HEADER_TIME AC_UNP_CHECK_TYPE(uint8_t, unsigned char) AC_UNP_CHECK_TYPE(int16_t, short) AC_UNP_CHECK_TYPE(uint16_t, unsigned short) AC_UNP_CHECK_TYPE(int32_t, int) AC_UNP_CHECK_TYPE(uint32_t, unsigned int) AC_UNP_CHECK_TYPE(size_t, unsigned int) AC_UNP_CHECK_TYPE(ssize_t, int) AC_UNP_CHECK_TYPE(socklen_t, unsigned int) AC_UNP_CHECK_TYPE(in_addr_t, uint32_t) dnl Checks for libraries AC_CHECK_LIB(pthread, pthread_create) if test "$ac_cv_lib_pthread_pthread_create" = "yes"; then CFLAGS="-D_REENTRANT $CFLAGS" else AC_CHECK_LIB(pthreads, pthread_create) if test "$ac_cv_lib_pthreads_pthread_create" = "yes"; then CFLAGS="-D_REENTRANT $CFLAGS" else AC_MSG_ERROR(You must have a POSIX compliant threading library installed) fi fi AC_CHECK_LIB(socket, socket, LIBS="-lsocket $LIBS", AC_CHECK_LIB(socket, htonl)) dnl Some systems (OpenServer 5) dislike -lsocket -lnsl, so we try to dnl avoid -lnsl checks, if we already have the functions which are dnl usually in libnsl unset ac_cv_func_yp_get_default_domain AC_CHECK_FUNC(yp_get_default_domain, [ tinyproxy_no_nsl_checks=yes ], [ ]) unset ac_cv_func_yp_get_default_domain if test "$tinyproxy_no_nsl_checks" != "yes"; then AC_CHECK_LIB(nsl, gethostname, LIBS="-lnsl $LIBS", AC_CHECK_LIB(nsl, gethostbyaddr)) fi AC_CHECK_LIB(resolv, inet_aton) dnl Checks for library functions. AC_FUNC_ALLOCA dnl AC_FUNC_MEMCMP AC_TYPE_SIGNAL AC_FUNC_STRFTIME AC_FUNC_VPRINTF AC_CHECK_FUNCS(\ ftruncate \ select \ setrlimit \ socket \ strdup \ strerror \ strtol \ vsnprintf \ vsyslog \ ) AC_CHECK_FUNCS(strlcpy strlcat) AC_ARG_WITH(stathost, [ --with-stathost=HOST Default status host], AC_DEFINE_UNQUOTED(DEFAULT_STATHOST, "$withval")) dnl Set the default configuration file location AC_ARG_WITH(config, [ --with-config=FILE Set the default location of the config file], AC_DEFINE_UNQUOTED(DEFAULT_CONF_FILE, "$withval")) dnl Check for the regex library AC_ARG_WITH(regex, [ --with-regex Use the GNU regex libary], tinyproxy_cv_regex=yes, AC_CHECK_FUNCS(regcomp, tinyproxy_cv_regex=no, tinyproxy_cv_regex=yes)) if test "$tinyproxy_cv_regex" != "yes" ; then AC_MSG_CHECKING(whether your system's regexp library is completely broken) AC_CACHE_VAL(tinyproxy_cv_regex_broken, AC_TRY_RUN([ # include # include int main(void) { regex_t blah; return regcomp(&blah, "foo.*bar", REG_NOSUB) || regexec(&blah, "foobar", 0, NULL, 0); } ], tinyproxy_cv_regex_broken=no, tinyproxy_cv_regex_broken=yes, tinyproxy_cv_regex_broken=yes)) AC_MSG_RESULT($tinyproxy_cv_regex_broken) if test "$tinyproxy_cv_regex_broken" = "yes" ; then echo "Using the included GNU regex instead." >&AC_FD_MSG tinyproxy_cv_regex=yes fi fi if test "$tinyproxy_cv_regex" = "yes" ; then AC_DEFINE(USE_GNU_REGEX) LIBOBJS="gnuregex.o $LIBOBJS" fi dnl Add compiler-specific optimization flags AC_ARG_ENABLE(debug, [ --enable-debug Disable aggressive optimizations [default=no]], debug_enabled=yes) CFLAGS="-Wall $CFLAGS" if test "$enable_debug" = "yes" ; then dnl Add the warnings if we have the GCC compiler if test x$ac_cv_prog_gcc = xyes ; then CFLAGS="-Wshadow -Wcast-qual -Wcast-align -Wstrict-prototypes $CFLAGS" CFLAGS="-Wmissing-prototypes -Wmissing-declarations $CFLAGS" CFLAGS="-Wpointer-arith -Waggregate-return -Wnested-externs $CFLAGS" fi CFLAGS="-DYYDEBUG $CFLAGS" YFLAGS="-v -d" else dnl No debugging information, include the optimizations YFLAGS="-d" fi dnl Check for SOCKS support AC_ARG_ENABLE(socks, [ --enable-socks Enable SOCKS support [default=no]], socks_enabled=yes, socks_enabled=no) if test "$socks_enabled" = "yes"; then AC_CHECK_HEADER(socks.h, socks_header=yes, socks_header=no) AC_CHECK_LIB(socks, main, socks_library=yes, socks_library=no) if test "$socks_header" = "yes" -a "$socks_library" = "yes"; then CFLAGS="-I/usr/include/sock.h -DSOCKS $CFLAGS" LIBS="-lsocks $LIBS" else AC_MSG_ERROR(could not find the SOCKS library or header) fi fi dnl Check to see if the XTinyproxy header is to be included AC_ARG_ENABLE(xtinyproxy, [ --enable-xtinyproxy Include X-Tinyproxy header [default=yes]], xtinyproxy_enabled=yes, xtinyproxy_enabled=yes) if test "$xtinyproxy_enabled" = "yes"; then AC_DEFINE(XTINYPROXY_ENABLE) fi dnl Include filtering for domain/URLs AC_ARG_ENABLE(filter, [ --enable-filter Enable filtering of domains/URLs [default=yes]], filter_enabled=yes, filter_enabled=yes) if test "$filter_enabled" = "yes"; then LIBOBJS="$LIBOBJS filter.o" AC_DEFINE(FILTER_ENABLE) fi dnl Include support for upstream proxies? (TCP tunneling) AC_ARG_ENABLE(tunnel, [ --enable-tunnel Enable support for TCP tunneling [default=yes]], tunnel_enabled=yes, tunnel_enabled=yes) if test "$tunnel_enabled" = "yes" ; then AC_DEFINE(TUNNEL_SUPPORT) fi dnl Substitute the variables into the various Makefiles AC_SUBST(CFLAGS) AC_SUBST(YFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LIBS) AC_SUBST(LIBOBJS) AC_OUTPUT(Makefile src/Makefile doc/Makefile)