dnl $Id: configure.in,v 1.34 2001-11-05 15:25:39 rjkaes Exp $ dnl Devlopers, please strive to achieve this order: dnl dnl 0. Initialization and options processing dnl 1. Programs dnl 2. Libraries dnl 3. Header files dnl 4. Types dnl 5. Structures dnl 6. Compiler characteristics dnl 7. Functions, global variables dnl 8. System services dnl dnl Read the Autoconf manual for details. AC_INIT() AC_CANONICAL_SYSTEM AC_DEFINE_UNQUOTED(TARGET_SYSTEM, "$target") AM_INIT_AUTOMAKE(tinyproxy,1.4.3pre7) AM_CONFIG_HEADER(config.h) dnl dnl Command line options dnl dnl Set the URL name for find the statistics of tinyproxy 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 Add compiler-specific optimization flags AC_ARG_ENABLE(debug, [ --enable-debug Disable aggressive optimizations [default=no]], debug_enabled=yes, debug_enabled=no) dnl Include SOCKS support AC_ARG_ENABLE(socks, [ --enable-socks Enable SOCKS support [default=no]], socks_enabled=yes, socks_enabled=no) 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="filter.o $LIBOBJS" AC_DEFINE(FILTER_ENABLE) fi dnl Include support for 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 Include support for upstream proxies? AC_ARG_ENABLE(upstream, [ --enable-upstream Enable support for upstream proxies [default=yes]], upstream_enabled=yes, upstream_enabled=yes) if test "$upstream_enabled" = "yes"; then AC_DEFINE(UPSTREAM_SUPPORT) fi dnl Include support for a statically compiled tinyproxy AC_ARG_ENABLE(static, [ --enable-static Statically link tinyproxy [default=no]], [ LDFLAGS="-static $LDFLAGS" ]) dnl dnl Checks for programs dnl dnl Save $CFLAGS since AC_PROG_CC likes to insert "-g -O2" dnl if $CFLAGS is blank cflags_save="$CFLAGS" AC_PROG_AWK AC_PROG_MAKE_SET AC_PROG_CC AC_PROG_INSTALL AC_PROG_LN_S AM_PROG_LEX AC_PROG_YACC CFLAGS="$cflags_save" dnl Make sure YACC is actually bison 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 dnl dnl Checks for libraries dnl 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_CHECK_LIB(c_r, pthread_create) if test "$ac_cv_lib_c_r_pthread_create" = "yes"; then CFLAGS="-pthread -D_REENTRANT $CFLAGS" else AC_MSG_ERROR(You must have a POSIX compliant threading library installed) fi fi fi AC_CHECK_LIB(socket, socket, , 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, , AC_CHECK_LIB(nsl, gethostbyaddr)) fi AC_CHECK_LIB(resolv, inet_aton) AC_CHECK_LIB(socks, main, socks_library=yes, socks_library=no) dnl dnl Checks for headers dnl 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 \ memory.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 \ sysexits.h \ syslog.h \ time.h \ unistd.h \ wchar.h \ wctype.h \ ) AC_HEADER_TIME AC_CHECK_HEADER(socks.h, socks_header=yes, socks_header=no) dnl dnl Checks for types dnl AM_C_PROTOTYPES AC_C_CONST AC_C_INLINE 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) AC_TYPE_PID_T AC_TYPE_SIGNAL dnl dnl Checks for functions dnl AC_FUNC_ALLOCA AC_FUNC_STRFTIME AC_FUNC_VPRINTF AC_CHECK_FUNCS(\ ftruncate \ regexec \ select \ setrlimit \ socket \ strdup \ strerror \ strtol \ vsnprintf \ vsyslog \ ) AC_CHECK_FUNCS(strlcpy strlcat) if test "$ac_cv_func_vprintf" != "yes"; then AC_CHECK_FUNC(_doprnt, AC_DEFINE(HAVE_DOPRNT)) fi dnl dnl Compiler characteristics dnl dnl Enable the debugging flags (by checking for the GCC compiler) CFLAGS="-O2 $CFLAGS" if test "$enable_debug" = "yes" ; then dnl Add the warnings if we have the GCC compiler if test "$ac_cv_prog_gcc" = "yes" ; then CFLAGS="-pg -fprofile-arcs $CFLAGS" 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="-Wall -g -DYYDEBUG $CFLAGS" YFLAGS="-v -d" else dnl No debugging information, include the optimizations CFLAGS="-DNDEBUG $CFLAGS" YFLAGS="-d" fi dnl dnl Make sure we can actually handle the "--with-*" and "--enable-*" stuff. dnl dnl Handle the SOCKS support if test "$socks_enabled" = "yes"; then 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 include the SOCKS library or header]) fi fi dnl Handle the REGEX library if test "$ac_cv_func_regexec" != "yes"; then dnl We don't have a functioning REGEX so include our copy tinyproxy_use_our_regex=yes else AC_MSG_CHECKING([whether the system's regex library is 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_use_our_regex=yes fi fi if test "$tinyproxy_use_our_regex" = "yes" ; then AC_DEFINE(USE_GNU_REGEX) LIBOBJS="gnuregex.o $LIBOBJS" fi dnl dnl Substitute the variables into the various Makefiles dnl AC_SUBST(CFLAGS) AC_SUBST(LDFLAGS) AC_SUBST(YFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LIBS) AC_SUBST(LIBOBJS) AC_OUTPUT(Makefile src/Makefile doc/Makefile)