tor-android/jni/pdnsd/configure.in

549 lines
14 KiB
Plaintext

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
])