123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549 |
- dnl Process this file with autoconf to produce a configure script.
- AC_INIT(src)
- package="pdnsd"
- version=`cut -d - -f 1 "$srcdir"/version`
- fullversion=`cat "$srcdir"/version`
- packagerelease=`cut -d - -f 2- "$srcdir"/version`
- distribution="Generic"
- target="autodetect"
- cachedir="/var/cache/$package"
- ipv4_default=1
- have_ipv4="yes"
- #newrrs="yes"
- query_m="udponly"
- have_tcp_server="yes"
- adisc="default"
- slock="no";
- def_id="nobody"
- #have_rcsids="no"
- udp_queries="yes"
- tcp_queries="yes"
- tempdir="/tmp"
- randomdev=default
- freebsd_pthread="4"
- specbuild=no
- threadlib=default
- AM_INIT_AUTOMAKE($package, $version, [no-define])
- AM_CONFIG_HEADER(config.h)
- AC_GNU_SOURCE
- AC_DEFINE_UNQUOTED(VERSION,"$fullversion")
- AC_SUBST(fullversion)
- AC_SUBST(packagerelease)
- AC_ARG_WITH(distribution,
- [ --with-distribution=distro Specify target distribution (default=Generic;
- others: RedHat, SuSE, Debian, ArchLinux)],
- distribution=$withval)
- AC_SUBST(distribution)
- AC_ARG_WITH(target,
- [ --with-target=platform Change compilation target platform (default:
- autodetect; others: Linux, BSD, Cygwin)],
- target=$withval)
- case $target in
- Linux|linux)
- AC_DEFINE(TARGET, TARGET_LINUX)
- target="Linux"
- ;;
- BSD| bsd)
- AC_DEFINE(TARGET, TARGET_BSD)
- target="BSD"
- ;;
- Cygwin|CYGWIN|cygwin)
- AC_DEFINE(TARGET, TARGET_CYGWIN)
- target="cygwin"
- ;;
- autodetect)
- ;;
- *)
- AC_MSG_ERROR([--with-target must have Linux, BSD or Cygwin as parameter.])
- ;;
- esac
- AC_ARG_WITH(cachedir,
- [ --with-cachedir=dir Default directory for pdnsd cache
- (default=/var/cache/pdnsd)],
- cachedir=$withval)
- AC_DEFINE_UNQUOTED(CACHEDIR, "$cachedir")
- AC_SUBST(cachedir)
- AC_ARG_ENABLE(isdn,
- [ --enable-isdn Enable ISDN support (may cause problems on
- some systems; only for Linux)],
- test $enableval = "yes" && AC_DEFINE(ISDN_SUPPORT))
- AC_ARG_ENABLE(ipv4,
- [ --disable-ipv4 Disable IPv4 networking support
- (default=enabled)],
- have_ipv4=$enableval)
- test $have_ipv4 = "yes" && AC_DEFINE(ENABLE_IPV4)
- AC_ARG_ENABLE(ipv6,
- [ --enable-ipv6 Enable IPv6 networking support],
- [ if test $enableval = "yes" ; then
- AC_DEFINE(ENABLE_IPV6)
- if test $have_ipv4 != "yes" ; then
- ipv4_default=0
- fi
- fi])
- AC_ARG_ENABLE(ipv4-startup,
- [ --disable-ipv4-startup Disable IPv4 on pdnsd startup by default
- (default=enabled)],
- [ if test $enableval = "yes" ; then
- ipv4_default=1
- else
- ipv4_default=0
- fi])
- AC_ARG_ENABLE(ipv6-startup,
- [ --enable-ipv6-startup Enable IPV6 on pdnsd startup by default
- (default=IPv4)],
- [ if test $enableval = "yes" ; then
- ipv4_default=0
- else
- ipv4_default=1
- fi])
- AC_DEFINE_UNQUOTED(DEFAULT_IPV4, $ipv4_default)
- AC_ARG_ENABLE(udp-queries,
- [ --disable-udp-queries Disable udp as query method.],
- udp_queries=$enableval)
- AC_ARG_ENABLE(tcp-queries,
- [ --disable-tcp-queries Disable tcp as query method.],
- tcp_queries=$enableval)
- AC_ARG_WITH(query-method,
- [ --with-query-method=qm Specify the query method (default=udponly;
- others: tcponly, tcpudp, udptcp)],
- query_m=$withval)
- case $query_m in
- udponly|UDPonly)
- AC_DEFINE(M_PRESET, UDP_ONLY)
- udp_queries=yes;
- ;;
- tcponly|TCPonly)
- AC_DEFINE(M_PRESET, TCP_ONLY)
- tcp_queries=yes;
- ;;
- tcpudp|TCPUDP)
- AC_DEFINE(M_PRESET, TCP_UDP)
- udp_queries=yes;
- tcp_queries=yes;
- ;;
- udptcp|UDPTCP)
- AC_DEFINE(M_PRESET, UDP_TCP)
- udp_queries=yes;
- tcp_queries=yes;
- ;;
- *)
- AC_MSG_ERROR([--with-query-method must have udponly, tcponly, tcpudp or udptcp as parameter.])
- ;;
- esac
- test $udp_queries != "yes" && AC_DEFINE(NO_UDP_QUERIES)
- test $tcp_queries != "yes" && AC_DEFINE(NO_TCP_QUERIES)
- AC_ARG_ENABLE(tcp-server,
- [ --disable-tcp-server Disable the TCP serving ability of pdnsd],
- have_tcp_server=$enableval)
- test $have_tcp_server != "yes" && AC_DEFINE(NO_TCP_SERVER)
- AC_ARG_ENABLE(src-addr-disc,
- [ --disable-src-addr-disc Disable the UDP source address discovery],
- adisc=$enableval)
- AC_ARG_ENABLE(socket-locking,
- [ --enable-socket-locking Enable the UDP socket locking],
- slock=$enableval)
- test $slock = "yes" && AC_DEFINE(SOCKET_LOCKING)
- AC_ARG_ENABLE(poll,
- [ --disable-poll Disable poll(2) and use select(2)
- (default=enabled)],
- test $enableval != "yes" && AC_DEFINE(NO_POLL))
- AC_ARG_ENABLE(new-rrs,
- [ --disable-new-rrs Disable new DNS RR types (obsolete, currently ignored)],
- newrrs=$enableval)
- AC_ARG_ENABLE(strict-rfc2181,
- [ --enable-strict-rfc2181 Enforce strict RFC 2181 compliance],
- test $enableval = "yes" && AC_DEFINE(RFC2181_ME_HARDER))
- AC_ARG_WITH(random-device,
- [ --with-random-device=device Specify random device other than
- /dev/random; default: C Library random() PRNG;
- special value arc4random for BSD C Library
- arc4random function (default on FreeBSD)],
- randomdev=$withval)
- if test "$randomdev" = arc4random ; then
- AC_DEFINE(R_ARC4RANDOM)
- elif test "$randomdev" = random ; then
- AC_DEFINE(R_RANDOM)
- elif test "$randomdev" = default ; then
- AC_DEFINE(R_DEFAULT)
- else
- AC_DEFINE_UNQUOTED(RANDOM_DEVICE, "$randomdev")
- fi
- AC_ARG_ENABLE(underscores,
- [ --enable-underscores Allow _ in domain names (obsolete, currently ignored)],
- underscores=$enableval)
- AC_ARG_WITH(default-id,
- [ --with-default-id=id Specify default uid/gid for pdnsd
- (default=nobody)],
- def_id=$withval)
- AC_SUBST(def_id)
- AC_ARG_WITH(debug,
- [ --with-debug=level Specify debugging level (0 means no debug support)],
- AC_DEFINE_UNQUOTED(DEBUG, $withval))
- AC_ARG_WITH(verbosity,
- [ --with-verbosity=level Specify default message verbosity],
- AC_DEFINE_UNQUOTED(VERBOSITY, $withval))
- AC_ARG_WITH(hash-buckets,
- [ --with-hash-buckets=num Number of hash buckets to use (default=1024).
- The number actually used is the smallest power of two
- greater or equal to the number specified here.],
- powof2=1
- hashsz=0
- while test $powof2 -lt "$withval"
- do
- powof2=`expr 2 '*' $powof2`
- hashsz=`expr $hashsz '+' 1`
- done
- AC_DEFINE_UNQUOTED(HASH_SZ, $hashsz)
- )
- AC_ARG_ENABLE(hash-debug,
- [ --enable-hash-debug Debug hash tables (warning: massive output)],
- test $enableval = "yes" && AC_DEFINE(DEBUG_HASH))
- AC_ARG_ENABLE(rcsids,
- [ --enable-rcsids Enable RCS IDs in executables (obsolete, currently ignored)],
- have_rcsids=$enableval)
- AC_ARG_WITH(tcp-qtimeout,
- [ --with-tcp-qtimeout=secs Specify default tcp query timeout (default=30)],
- AC_DEFINE_UNQUOTED(TCP_TIMEOUT, $withval))
- AC_ARG_ENABLE(tcp-subseq,
- [ --enable-tcp-subseq Enable multiple dns querys using one
- tcp connection],
- test $enableval = "yes" && AC_DEFINE(TCP_SUBSEQ))
- AC_ARG_WITH(par-queries,
- [ --with-par-queries=num Specify default parallel query number (default=2)],
- AC_DEFINE_UNQUOTED(PAR_QUERIES, $withval))
- AC_ARG_WITH(max-nameserver-ips,
- [ --with-max-nameserver-ips=num Specify maximum number of IP addresses used per nameserver obtained from NS records (default=3)],
- AC_DEFINE_UNQUOTED(MAXNAMESERVIPS, $withval))
- AC_ARG_ENABLE(specbuild,
- [ --enable-specbuild Only used when building pdnsd from spec files],
- specbuild=$enableval)
- AC_SUBST(specbuild)
- AC_ARG_WITH(thread-lib,
- [ --with-thread-lib=lib Specify thread library, overriding automatic detection (for Linux only).
- Possible values: LinuxThreads,
- LinuxThreads2 (implements a fix for newer glibcs)
- or NPTL (Native POSIX Thread Library)],
- threadlib=$withval)
- AC_SUBST(threadlib)
- dnl Checks for programs.
- AC_PROG_CC
- AM_PROG_CC_STDC
- AM_PROG_CC_C_O
- AC_PROG_INSTALL
- dnl For dbm subsystem libraries
- AC_PROG_RANLIB
- if test "$target" = "autodetect" ; then
- AC_MSG_CHECKING([for autodetect build target])
- uname_sys=`uname`
- if test $? -ne 0 ; then
- AC_MSG_RESULT([failed])
- AC_MSG_ERROR([uname failed or was not found in path])
- else
- case "${uname_sys}" in
- Linux)
- AC_MSG_RESULT(Linux)
- AC_DEFINE(TARGET, TARGET_LINUX)
- target="Linux"
- ;;
- FreeBSD|NetBSD|OpenBSD|Darwin)
- AC_MSG_RESULT("${uname_sys}")
- AC_DEFINE(TARGET, TARGET_BSD)
- target="BSD"
- ;;
- CYGWIN*)
- AC_MSG_RESULT("${uname_sys}")
- AC_DEFINE(TARGET, TARGET_CYGWIN)
- target="cygwin"
- ;;
- *)
- AC_MSG_RESULT([failed])
- AC_MSG_ERROR(
- [Your system type could not be identified. Try setting it manually using
- --with-target])
- ;;
- esac
- fi
- fi
- #if test "$target" = BSD ; then
- # uname_sys=`uname`
- # if test "$uname_sys" = FreeBSD ; then
- # AC_MSG_CHECKING([for FreeBSD version])
- # osrel=`sysctl -n kern.osreldate`
- # if test $osrel -ge 500016 ; then
- # AC_MSG_RESULT([5.0 (>= 500016)])
- # freebsd_pthread="5"
- # else
- # AC_MSG_RESULT([<=5.0 (< 500016)])
- # freebsd_pthread="4"
- # fi
- # fi
- #fi
- if test "$adisc" = "default"; then
- if test "$target" = "cygwin" ; then
- # Don't do UDP source address discovery on Cygwin platform by default.
- adisc="no"
- else
- adisc="yes"
- fi
- fi
- test "$adisc" = "yes" && AC_DEFINE(SRC_ADDR_DISC)
- dnl Checks for libraries.
- if test "$target" = "Linux"; then
- AC_MSG_CHECKING([if we can compile and link with -pthread])
- old_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -pthread"
- AC_LINK_IFELSE([
- #include <pthread.h>
- void *thread_func(void *data)
- {
- *((int *)data)=1;
- return data;
- }
- int main()
- {
- pthread_t thread;
- void *retval;
- int val;
- if(pthread_create(&thread, NULL, thread_func, &val))
- return 1;
- if(pthread_join(thread,&retval))
- return 1;
- return (*((int *)retval)!=1);
- }
- ],
- gcc_pthread_flag="yes", gcc_pthread_flag="no")
- CFLAGS="$old_CFLAGS"
- AC_MSG_RESULT([$gcc_pthread_flag])
- if test "$gcc_pthread_flag" = yes ; then
- thread_CFLAGS="-pthread"
- AC_SUBST(thread_CFLAGS)
- else
- AC_CHECK_LIB(pthread, pthread_create)
- fi
- fi
- if test "$target" = "BSD" -a `uname` != Darwin ; then
- # if test $freebsd_pthread = 4 ; then
- thread_CFLAGS="-pthread"
- AC_SUBST(thread_CFLAGS)
- # else
- # AC_CHECK_LIB(c_r, pthread_create, ,
- # AC_MSG_ERROR([You must have libc_r installed to build/run pdnsd!]))
- # fi;
- fi
- if test "$target" = "Linux" -a "$threadlib" = default; then
- AC_MSG_CHECKING([if this is an NPTL-based system])
- old_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $thread_CFLAGS"
- AC_RUN_IFELSE([
- #include <stdio.h>
- #include <errno.h>
- #include <string.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include <pthread.h>
- /* All this function does is return its PID (in a roundabout way). */
- void *thread_func(void *data)
- {
- *((int *)data)=getpid();
- return data;
- }
- int main()
- {
- pthread_t thread;
- void *retval;
- int err,mainpid,thrdpid;
- err=pthread_create(&thread, NULL, thread_func, &thrdpid);
- if(err) {
- fprintf(stderr,"pthread_create failed: %s\n",strerror(err));
- return 1;
- }
- err=pthread_join(thread,&retval);
- if(err) {
- fprintf(stderr,"pthread_join failed: %s\n",strerror(err));
- return 1;
- }
- mainpid=getpid();
- /* In LinuxThreads implementations, the pids of the threads will usually differ
- in a non Posix-compliant way. */
- fprintf(stderr,"main pid=%d, thread pid=%d\n",mainpid,*((int *)retval));
- return (*((int *)retval)!=mainpid);
- }
- ],
- [
- AC_MSG_RESULT([yes])
- threadlib=nptl
- ],
- [
- AC_MSG_RESULT([no])
- threadlib=linuxthreads
- ],
- [
- AC_MSG_RESULT([couldn't run test program])
- threadlib=linuxthreads
- ])
- CFLAGS="$old_CFLAGS"
- fi
- if test "$threadlib" = nptl -o "$threadlib" = NPTL; then
- AC_DEFINE(THREADLIB_NPTL)
- elif test "$threadlib" = linuxthreads2 -o "$threadlib" = LinuxThreads2 -o "$threadlib" = lt2; then
- AC_DEFINE(THREADLIB_LINUXTHREADS2)
- fi
- dnl Checks for header files.
- AC_HEADER_STDC
- AC_HEADER_SYS_WAIT
- AC_CHECK_HEADERS(fcntl.h malloc.h sys/ioctl.h sys/time.h syslog.h unistd.h)
- AC_CHECK_HEADERS(sys/types.h sys/socket.h net/if.h netinet/in.h sys/poll.h,,,
- [#include <stdio.h>
- #if STDC_HEADERS
- # include <stdlib.h>
- # include <stddef.h>
- #else
- # if HAVE_STDLIB_H
- # include <stdlib.h>
- # endif
- #endif
- #if HAVE_SYS_SOCKET_H
- # include <sys/socket.h>
- #endif
- ])
- dnl Checks for typedefs, structures, and compiler characteristics.
- AC_C_CONST
- AC_TYPE_PID_T
- AC_TYPE_SIZE_T
- AC_HEADER_TIME
- AC_STRUCT_TM
- AC_CHECK_TYPES(socklen_t,, AC_DEFINE(socklen_t,int),[#include <sys/types.h>
- #include <sys/socket.h>
- #include <net/if.h>
- #include <netinet/in.h>])
- AC_CHECK_TYPES([struct in6_addr, struct in_pktinfo, struct ifreq],,,[#include <sys/types.h>
- #include <sys/socket.h>
- #include <net/if.h>
- #include <netinet/in.h>])
- AC_MSG_CHECKING([for CPP C99 Variadic macro support])
- AC_COMPILE_IFELSE([
- #define a(...) junk(0,__VA_ARGS__)
- extern void junk(int i,...);
- int main()
- {
- a(0);
- a("a");
- a(0, "a", 1);
- return 0;
- }
- ],
- cpp_c99_variadic="yes", cpp_c99_variadic="no")
- AC_MSG_RESULT([$cpp_c99_variadic])
- if test $cpp_c99_variadic = yes; then
- AC_DEFINE(CPP_C99_VARIADIC_MACROS)
- else
- if test "$GCC" != yes; then
- AC_MSG_ERROR([Compiler must support C99 or gcc variadic macros])
- fi;
- fi
- dnl Checks for library functions.
- AC_FUNC_ALLOCA
- AC_PROG_GCC_TRADITIONAL
- AC_FUNC_MEMCMP
- AC_TYPE_SIGNAL
- AC_FUNC_VPRINTF
- AC_SEARCH_LIBS(nanosleep, rt)
- AC_SEARCH_LIBS(socket, socket,,,-lnsl)
- AC_SEARCH_LIBS(inet_aton, resolv)
- AC_CHECK_FUNCS(nanosleep gettimeofday mkfifo select socket strerror uname snprintf vsnprintf, true,
- AC_MSG_ERROR([One of the functions required for pdnsd were not found.]))
- AC_CHECK_FUNCS(poll, true, AC_DEFINE(NO_POLL))
- AC_CHECK_FUNCS(strdup strndup stpcpy stpncpy strlcpy mempcpy getline asprintf vasprintf getpwnam_r inet_ntop inet_pton)
- AC_OUTPUT([
- pdnsd.spec
- Makefile
- file-list.base
- contrib/Makefile
- doc/Makefile
- doc/pdnsd.8
- doc/pdnsd.conf.5
- doc/pdnsd.conf
- src/Makefile
- src/pdnsd-ctl/Makefile
- src/rc/Makefile
- src/rc/RedHat/Makefile
- src/rc/RedHat/pdnsd
- src/rc/SuSE/Makefile
- src/rc/SuSE/pdnsd
- src/rc/Debian/Makefile
- src/rc/Debian/pdnsd
- src/rc/Slackware/Makefile
- src/rc/Slackware/rc.pdnsd
- src/rc/ArchLinux/Makefile
- src/rc/ArchLinux/pdnsd
- src/test/Makefile
- PKGBUILD
- ])
|