# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.57) AC_INIT(pcat, 1.7.0, dns-team@nlnetlabs.nl,pcat) AC_CONFIG_SRCDIR([pcat.c]) OURCPPFLAGS='' CPPFLAGS=${CPPFLAGS:-${OURCPPFLAGS}} OURCFLAGS='-g' CFLAGS=${CFLAGS:-${OURCFLAGS}} AC_AIX # Checks for programs. AC_PROG_CC AC_PROG_MAKE_SET dnl routine to help check for compiler flags. AC_DEFUN([CHECK_COMPILER_FLAG], [ AC_REQUIRE([AC_PROG_CC]) AC_MSG_CHECKING(whether $CC supports -$1) cache=`echo $1 | sed 'y%.=/+-%___p_%'` AC_CACHE_VAL(cv_prog_cc_flag_$cache, [ echo 'void f(){}' >conftest.c if test -z "`$CC -$1 -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_$cache=yes" else eval "cv_prog_cc_flag_$cache=no" fi rm -f conftest* ]) if eval "test \"`echo '$cv_prog_cc_flag_'$cache`\" = yes"; then AC_MSG_RESULT(yes) : $2 else AC_MSG_RESULT(no) : $3 fi ]) dnl routine to help check for needed compiler flags. # if the given code compiles without the flag, execute argument 4 # if the given code only compiles with the flag, execute argument 3 # otherwise fail, execute argument 5. AC_DEFUN([CHECK_COMPILER_FLAG_NEEDED], [ AC_REQUIRE([AC_PROG_CC]) AC_MSG_CHECKING(whether we need $1 as a flag for $CC) cache=`echo $1 | sed 'y%.=/+- %___p__%'` AC_CACHE_VAL(cv_prog_cc_flag_needed_$cache, [ echo '$2' > conftest.c echo 'void f(){}' >>conftest.c if test -z "`$CC -Werror -Wall $CFLAGS -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else [ if test -z "`$CC $1 -Werror -Wall $CFLAGS -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=yes" else eval "cv_prog_cc_flag_needed_$cache=fail" #echo 'Test with flag fails too!' #cat conftest.c #echo "$CC $1 -Werror -Wall $CFLAGS -c conftest.c 2>&1" #echo `$CC $1 -Werror -Wall $CFLAGS -c conftest.c` #exit 1 fi ] fi rm -f conftest ]) if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then AC_MSG_RESULT(yes) : $3 else if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then AC_MSG_RESULT(no) : $4 else AC_MSG_RESULT(failed) : #cat conftest.c #echo "$CC -Werror -Wall $CFLAGS -c conftest.c" #echo `$CC -Werror -Wall $CFLAGS -c conftest.c` #echo "$CC $1 -Werror -Wall $CFLAGS -c conftest.c" #echo `$CC $1 -Werror -Wall $CFLAGS -c conftest.c` $5 fi fi ]) CHECK_COMPILER_FLAG(O2, [CFLAGS="$CFLAGS -O2"]) CHECK_COMPILER_FLAG(std=c99, [C99FLAG="-std=c99"]) CHECK_COMPILER_FLAG(xc99, [C99FLAG="-xc99"]) CHECK_COMPILER_FLAG_NEEDED($C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600, [ #include "confdefs.h" #include #include #include #ifdef HAVE_TIME_H #include #endif #include #ifdef HAVE_GETOPT_H #include #endif int test() { int a; char **opts = NULL; struct timeval tv; char *t; time_t time = 0; char *buf = NULL; t = ctime_r(&time, buf); tv.tv_usec = 10; srandom(32); a = getopt(2, opts, "a"); a = isascii(32); return a; } ], [CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600"]) CHECK_COMPILER_FLAG_NEEDED($C99FLAG, [ #include #include int test() { int a = 0; a = isblank(12); return a; } ], [CFLAGS="$CFLAGS $C99FLAG"]) CHECK_COMPILER_FLAG_NEEDED(-D_BSD_SOURCE, [ #include int test() { int a; a = isascii(32); return a; } ], [CFLAGS="$CFLAGS -D_BSD_SOURCE"]) CHECK_COMPILER_FLAG_NEEDED(-D_POSIX_C_SOURCE=200112, [ #include int test() { int a = 0; char *t; time_t time = 0; char *buf = NULL; t = ctime_r(&time, buf); return a; } ], [CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=200112"]) CHECK_COMPILER_FLAG_NEEDED(-D__EXTENSIONS__, [ #include #include #include #ifdef HAVE_TIME_H #include #endif #include #ifdef HAVE_GETOPT_H #include #endif int test() { int a; char **opts = NULL; struct timeval tv; tv.tv_usec = 10; srandom(32); #ifdef HAVE_GETOPT_H a = getopt(2, opts, "a"); #else opts = opts; #endif a = isascii(32); return a; } ], [CFLAGS="$CFLAGS -D__EXTENSIONS__"]) AC_CHECK_HEADERS([sys/types.h getopt.h stdlib.h stdio.h assert.h netinet/in.h ctype.h time.h pcap.h arpa/inet.h sys/time.h sys/socket.h],,, [AC_INCLUDES_DEFAULT]) AC_CHECK_HEADERS([netinet/in_systm.h net/if.h netinet/ip.h netinet/udp.h netinet/if_ether.h],,, [ AC_INCLUDES_DEFAULT #ifdef HAVE_NETINET_IN_SYSTM_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NET_IF_H #include #endif]) AC_CHECK_HEADERS([sys/param.h sys/mount.h],,, [AC_INCLUDES_DEFAULT] [ [ #if HAVE_SYS_PARAM_H # include #endif ] ]) # check for ldns AC_ARG_WITH(ldns, AC_HELP_STRING([--with-ldns=PATH specify prefix of path of ldns library to use]) , [ specialldnsdir="$withval" CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" ] ) # check for ldns development source tree AC_MSG_CHECKING([for ldns devel source]) ldns_dev_dir=.. if test -f $ldns_dev_dir/ldns/util.h && \ grep LDNS_VERSION $ldns_dev_dir/ldns/util.h >/dev/null; then ldns_version=`grep LDNS_VERSION $ldns_dev_dir/ldns/util.h | sed -e 's/^.*"\(.*\)".*$/\1/'` AC_MSG_RESULT([using $ldns_dev_dir with $ldns_version]) CPPFLAGS="$CPPFLAGS -I$ldns_dev_dir/include" LDFLAGS="$LDFLAGS -L$ldns_dev_dir/lib" LIBS="$LIBS -lldns" AC_DEFINE(HAVE_LIBLDNS, 1, [If the ldns library is available.]) LDNSDIR="$ldns_dev_dir" else AC_MSG_RESULT([no]) AC_CHECK_LIB(ldns, ldns_rr_new,, [ AC_MSG_ERROR([Can't find ldns library]) ] ) fi AC_SUBST(LDNSDIR) AC_CHECK_HEADER(ldns/ldns.h,, [ AC_MSG_ERROR([Can't find ldns headers]) ], [AC_INCLUDES_DEFAULT] ) AC_CHECK_LIB(pcap, pcap_open_offline,, [ AC_MSG_ERROR([Can't find pcap library.]) ] ) AC_CHECK_FUNCS(getdelim) AC_CHECK_FUNCS(isblank) AC_CHECK_FUNCS(strndup) AH_BOTTOM([ #include #include #include #include #if STDC_HEADERS #include #include #endif #ifdef HAVE_STDINT_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_ARPA_INET_H #include #endif #ifdef HAVE_NETINET_UDP_H #include #endif #ifdef HAVE_TIME_H #include #endif #ifdef HAVE_PCAP_H #include #endif #ifdef HAVE_NETINET_IN_SYSTM_H #include #endif #ifdef HAVE_NETINET_IP_H #include #endif #ifdef HAVE_NET_IF_H #include #endif #ifdef HAVE_NETINET_IF_ETHER_H #include #endif ]) AC_CONFIG_FILES([Makefile]) AC_CONFIG_HEADER([config.h]) AC_OUTPUT