# configure.in - input to autoconf
#
-# This file is part of adns, which is Copyright (C) 1997-1999 Ian Jackson
-#
+# This file is part of adns, which is
+# Copyright (C) 1997-2000,2003,2006,2014-2016,2020 Ian Jackson
+# Copyright (C) 2014 Mark Wooding
+# Copyright (C) 1999-2000,2003,2006 Tony Finch
+# Copyright (C) 1991 Massachusetts Institute of Technology
+# (See the file INSTALL for full details.)
+#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
+# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# along with this program; if not, write to the Free Software Foundation.
AC_INIT(src/adns.h)
AC_CONFIG_HEADER(src/config.h)
+
+dnl DPKG_CACHED_TRY_COMPILE(<description>,<cachevar>,<include>,<program>,<ifyes>,<ifno>)
+define([DPKG_CACHED_TRY_COMPILE],[
+ AC_MSG_CHECKING($1)
+ AC_CACHE_VAL($2,[
+ AC_TRY_COMPILE([$3],[$4],[$2=yes],[$2=no])
+ ])
+ if test "x$$2" = xyes; then
+ true
+ $5
+ else
+ true
+ $6
+ fi
+])
+
+AC_MSG_CHECKING(whether you requested dynamic linking)
+AC_SUBST(ENABLE_DYNAMIC)
+AC_ARG_ENABLE(dynamic,
+[ --disable-dynamic use static linking
+ --enable-dynamic[=elf] create and use ELF dynamic library (default)],
+[ case "$enableval" in
+ elf|yes)
+ ENABLE_DYNAMIC=elf
+ AC_MSG_RESULT([yes (ELF)])
+ ;;
+ no) ENABLE_DYNAMIC=no
+ AC_MSG_RESULT(no)
+ ;;
+ *) AC_MSG_ERROR(
+["invalid value $enableval for --enable-dynamic, try yes or elf"])
+ ;;
+ esac
+],[
+ ENABLE_DYNAMIC=elf
+ AC_MSG_RESULT([yes, by default])
+])
+
AC_PROG_CC
-ADNS_C_GCCATTRIB
+AC_PROG_CPP
+AC_PROG_RANLIB
+AC_PROG_INSTALL
+
+AC_CHECK_FUNCS(poll)
+ADNS_C_GETFUNC(socket,socket)
+ADNS_C_GETFUNC(inet_ntoa,nsl)
+
+PROGS_IF_TSEARCH=adnsresfilter
+AC_SUBST(PROGS_HAVE_TSEARCH)
+AC_CHECK_FUNC(tsearch,[
+ PROGS_HAVE_TSEARCH=$PROGS_IF_TSEARCH
+],[
+ PROGS_HAVE_TSEARCH='';
+ AC_MSG_WARN([tsearch missing - not building client program(s) $PROGS_IF_TSEARCH])
+])
+
+AC_MSG_CHECKING(for INADDR_LOOPBACK)
+AC_CACHE_VAL(adns_cv_decl_inaddrloopback,[
+ AC_TRY_COMPILE([
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+ ],[
+ INADDR_LOOPBACK;
+ ],
+ adns_cv_decl_inaddrloopback=yes,
+ adns_cv_decl_inaddrloopback=no)])
+if test "$adns_cv_decl_inaddrloopback" = yes; then
+ AC_MSG_RESULT(found)
+else
+ AC_MSG_RESULT([not in standard headers, urgh...])
+ AC_CHECK_HEADER(rpc/types.h,[
+ AC_DEFINE(HAVEUSE_RPCTYPES_H)
+ ],[
+ AC_MSG_ERROR([cannot find INADDR_LOOPBACK or rpc/types.h])
+ ])
+fi
+
+ADNS_C_GETFUNC(inet_aton,resolv,[
+ LIBS="-lresolv $LIBS";
+ AC_MSG_WARN([inet_aton is in libresolv, urgh. Must use -lresolv.])
+])
+
+DPKG_CACHED_TRY_COMPILE(inlines,dpkg_cv_c_inline,,
+ [} inline int foo (int x) {],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_INLINE),
+ AC_MSG_RESULT(no))
AC_SUBST(WARNS)
if test "${GCC-no}" = yes; then
WARNS="-Wall -Wmissing-prototypes -Wwrite-strings -Wstrict-prototypes -Wcast-qual -Wpointer-arith"
+ saved_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -Wno-pointer-sign"
+ DPKG_CACHED_TRY_COMPILE(-Wno-pointer-sign,adns_cv_c_wnoptrsign,,
+ [],
+ AC_MSG_RESULT(yes)
+ WARNS="$WARNS -Wno-pointer-sign",
+ AC_MSG_RESULT(no))
+ CFLAGS="$saved_cflags"
else
WARNS=
fi
+ADNS_C_GCCATTRIB
+
AC_SUBST(SHLIBCC)
AC_SUBST(MKSHLIB_1)
AC_SUBST(MKSHLIB_2)
AC_SUBST(MKSHLIB_3)
+
+AC_SUBST(SHLIBFORLINK)
AC_SUBST(SHLIBFILE)
AC_SUBST(SHLIBSONAME)
+SHLIBFORLINK='libadns.so'
+SHLIBSONAME='$(SHLIBFORLINK).$(MAJOR)'
+SHLIBFILE='$(SHLIBSONAME).$(MINOR)'
+
SHLIBCC='$(CC) $(CFLAGS) -fpic'
-MKSHLIB_1='$(CC) $(LDFLAGS) -shared -Wxl,soname=$(SONAME) -o'
+MKSHLIB_1='$(CC) $(LDFLAGS) -shared -Wl,-soname=$(SHLIBSONAME) -o'
MKSHLIB_2=''
MKSHLIB_3='-lc'
-SHLIBFILE='libadns.so.$(MAJOR).$(MINOR)'
-SHLIBSONAME='libadns.so.$(MAJOR)'
-AC_OUTPUT(settings.make)
+AC_OUTPUT(
+ common.make settings.make Makefile
+ src/Makefile client/Makefile dynamic/Makefile regress/Makefile
+)