From 03737583596c81eb0e54993cc68f34ff5a86800d Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Wed, 25 Feb 2004 14:32:39 +0000
Subject: [PATCH] added the better debug option logic from curl by adding
 acinclude.m4 to the configure stuff

---
 ares/CHANGES      |   3 +
 ares/FILES        |   1 +
 ares/acinclude.m4 | 100 +++++++++++++
 ares/aclocal.m4   | 366 ++--------------------------------------------
 ares/configure.ac |  35 ++---
 5 files changed, 126 insertions(+), 379 deletions(-)
 create mode 100644 ares/acinclude.m4

diff --git a/ares/CHANGES b/ares/CHANGES
index be99f6867e..332369f47d 100644
--- a/ares/CHANGES
+++ b/ares/CHANGES
@@ -1,6 +1,9 @@
 * February 25, 2004
 - Dan Fandrich found a flaw in the Feb 22 fix.
 
+- Added better configure --enable-debug logic (taken from the curl configure
+  script). Added acinclude.m4 to the tarball.
+
 * February 23, 2004
 - Removed ares_free_errmem(), the function, the file and the man page. It was
   not used and it did nothing.
diff --git a/ares/FILES b/ares/FILES
index 72413ea6a7..502fd02e2b 100644
--- a/ares/FILES
+++ b/ares/FILES
@@ -8,6 +8,7 @@ CHANGES
 FILES
 maketgz
 aclocal.m4
+acinclude.m4
 Makefile.in
 install-sh
 mkinstalldirs
diff --git a/ares/acinclude.m4 b/ares/acinclude.m4
new file mode 100644
index 0000000000..76ff0deef6
--- /dev/null
+++ b/ares/acinclude.m4
@@ -0,0 +1,100 @@
+
+dnl We create a function for detecting which compiler we use and then set as
+dnl pendantic compiler options as possible for that particular compiler. The
+dnl options are only used for debug-builds.
+
+dnl This is a copy of the original found in curl's configure script. Don't
+dnl modify this one, edit the one in curl and copy it back here when that one
+dnl is changed.
+
+AC_DEFUN([CURL_CC_DEBUG_OPTS],
+[
+    if test "$GCC" = "yes"; then
+
+       dnl figure out gcc version!
+       AC_MSG_CHECKING([gcc version])
+       gccver=`$CC -dumpversion`
+       num1=`echo $gccver | cut -d . -f1`
+       num2=`echo $gccver | cut -d . -f2`
+       gccnum=`(expr $num1 "*" 100 + $num2) 2>/dev/null`
+       AC_MSG_RESULT($gccver)
+
+       AC_MSG_CHECKING([if this is icc in disguise])
+       AC_EGREP_CPP([^__ICC], [__ICC],
+         dnl action if the text is found, this it has not been replaced by the
+         dnl cpp
+         [ICC="no"]
+         AC_MSG_RESULT([no]),
+         dnl the text was not found, it was replaced by the cpp
+         [ICC="yes"]
+         AC_MSG_RESULT([yes])
+       )
+
+       if test "$ICC" = "yes"; then
+         dnl this is icc, not gcc.
+
+         dnl Warning 279 warns on static conditions in while expressions,
+         dnl ignore that.
+
+         WARN="-wd279"
+
+         if test "$gccnum" -gt "600"; then
+            dnl icc 6.0 and older doesn't have the -Wall flag, although it does
+            dnl have -wd<n>
+            WARN="-Wall $WARN"
+         fi
+       else dnl $ICC = yes
+         dnl 
+         WARN="-W -Wall -Wwrite-strings -pedantic -Wno-long-long -Wundef -Wpointer-arith -Wnested-externs -Winline -Wmissing-declarations -Wmissing-prototypes -Wsign-compare"
+
+         dnl -Wcast-align is a bit too annoying ;-)
+
+         if test "$gccnum" -ge "296"; then
+           dnl gcc 2.96 or later
+           WARN="$WARN -Wfloat-equal"
+
+           if test "$gccnum" -gt "296"; then
+             dnl this option does not exist in 2.96
+             WARN="$WARN -Wno-format-nonliteral"
+           fi
+
+           dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on
+           dnl on i686-Linux as it gives us heaps with false positives
+           if test "$gccnum" -ge "303"; then
+             dnl gcc 3.3 and later
+             WARN="$WARN -Wendif-labels -Wstrict-prototypes"
+           fi
+         fi
+
+         for flag in $CPPFLAGS; do
+           case "$flag" in
+            -I*)
+              dnl include path
+              add=`echo $flag | sed 's/^-I/-isystem /g'`
+              WARN="$WARN $add"
+              ;;
+           esac
+         done
+
+       fi dnl $ICC = no
+
+       CFLAGS="$CFLAGS $WARN"
+
+    fi dnl $GCC = yes
+
+    dnl strip off optimizer flags
+    NEWFLAGS=""
+    for flag in $CFLAGS; do
+      case "$flag" in
+      -O*)
+        dnl echo "cut off $flag"
+        ;;
+      *)
+        NEWFLAGS="$NEWFLAGS $flag"
+        ;;
+      esac
+    done
+    CFLAGS=$NEWFLAGS
+
+]) dnl end of AC_DEFUN()
+
diff --git a/ares/aclocal.m4 b/ares/aclocal.m4
index 96fcd435b4..b3a3bbb081 100644
--- a/ares/aclocal.m4
+++ b/ares/aclocal.m4
@@ -1,358 +1,14 @@
-dnl $Id$
+# generated automatically by aclocal 1.8.2 -*- Autoconf -*-
 
-dnl Copyright 1996 by the Massachusetts Institute of Technology.
-dnl
-dnl Permission to use, copy, modify, and distribute this
-dnl software and its documentation for any purpose and without
-dnl fee is hereby granted, provided that the above copyright
-dnl notice appear in all copies and that both that copyright
-dnl notice and this permission notice appear in supporting
-dnl documentation, and that the name of M.I.T. not be used in
-dnl advertising or publicity pertaining to distribution of the
-dnl software without specific, written prior permission.
-dnl M.I.T. makes no representations about the suitability of
-dnl this software for any purpose.  It is provided "as is"
-dnl without express or implied warranty.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-dnl This file provides local macros for packages which use specific
-dnl external libraries.  The public macros are:
-dnl
-dnl	ATHENA_UTIL_COM_ERR
-dnl		Generates error if com_err not found.
-dnl	ATHENA_UTIL_SS
-dnl		Generates error if ss not found.
-dnl	ATHENA_REGEXP
-dnl		Sets REGEX_LIBS if rx library used; ensures POSIX
-dnl		regexp support.
-dnl	ATHENA_MOTIF
-dnl		Sets MOTIF_LIBS and defines HAVE_MOTIF if Motif used.
-dnl	ATHENA_MOTIF_REQUIRED
-dnl		Generates error if Motif not found.
-dnl	ATHENA_AFS
-dnl		Sets AFS_LIBS and defines HAVE_AFS if AFS used.  Pass
-dnl		in an argument giving the desired AFS libraries;
-dnl		AFS_LIBS will be set to that value if AFS is found.
-dnl		AFS_DIR will be set to the prefix given.
-dnl	ATHENA_AFS_REQUIRED
-dnl		Generates error if AFS libraries not found.  AFS_DIR
-dnl		will be set to the prefix given.
-dnl	ATHENA_KRB4
-dnl		Sets KRB4_LIBS and defines HAVE_KRB4 if krb4 used.
-dnl	ATHENA_KRB4_REQUIRED
-dnl		Generates error if krb4 not found.  Sets KRB4_LIBS
-dnl		otherwise.  (Special behavior because krb4 libraries
-dnl		may be different if using krb4 compatibility libraries
-dnl		from krb5.)
-dnl	ATHENA_KRB5
-dnl		Sets KRB5_LIBS and defines HAVE_KRB5 if krb5 used.
-dnl	ATHENA_KRB5_REQUIRED
-dnl		Generates error if krb5 not found.
-dnl	ATHENA_HESIOD
-dnl		Sets HESIOD_LIBS and defines HAVE_HESIOD if Hesiod
-dnl		used.
-dnl	ATHENA_HESIOD_REQUIRED
-dnl		Generates error if Hesiod not found.
-dnl	ATHENA_ARES
-dnl		Sets ARES_LIBS and defines HAVE_ARES if libares
-dnl		used.
-dnl	ATHENA_ARES_REQUIRED
-dnl		Generates error if libares not found.
-dnl	ATHENA_ZEPHYR
-dnl		Sets ZEPHYR_LIBS and defines HAVE_ZEPHYR if zephyr
-dnl		used.
-dnl	ATHENA_ZEPHYR_REQUIRED
-dnl		Generates error if zephyr not found.
-dnl
-dnl All of the macros may extend CPPFLAGS and LDFLAGS to let the
-dnl compiler find the requested libraries.  Put ATHENA_UTIL_COM_ERR
-dnl and ATHENA_UTIL_SS before ATHENA_AFS or ATHENA_AFS_REQUIRED; there
-dnl is a com_err library in the AFS libraries which requires -lutil.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
 
-dnl ----- com_err -----
-
-AC_DEFUN(ATHENA_UTIL_COM_ERR,
-[AC_ARG_WITH(com_err,
-	[  --with-com_err=PREFIX   Specify location of com_err],
-	[com_err="$withval"], [com_err=yes])
-if test "$com_err" != no; then
-	if test "$com_err" != yes; then
-		CPPFLAGS="$CPPFLAGS -I$com_err/include"
-		LDFLAGS="$LDFLAGS -L$com_err/lib"
-	fi
-	AC_CHECK_LIB(com_err, com_err, :,
-		     [AC_MSG_ERROR(com_err library not found)])
-else
-	AC_MSG_ERROR(This package requires com_err.)
-fi])
-
-dnl ----- ss -----
-
-AC_DEFUN(ATHENA_UTIL_SS,
-[AC_ARG_WITH(ss,
-	[  --with-ss=PREFIX        Specify location of ss (requires com_err)],
-	[ss="$withval"], [ss=yes])
-if test "$ss" != no; then
-	if test "$ss" != yes; then
-		CPPFLAGS="$CPPFLAGS -I$ss/include"
-		LDFLAGS="$LDFLAGS -L$ss/lib"
-	fi
-	AC_CHECK_LIB(ss, ss_perror, :,
-		     [AC_MSG_ERROR(ss library not found)], -lcom_err)
-else
-	AC_MSG_ERROR(This package requires ss.)
-fi])
-
-dnl ----- Regular expressions -----
-
-AC_DEFUN(ATHENA_REGEXP,
-[AC_ARG_WITH(regex,
-	[  --with-regex=PREFIX     Use installed regex library],
-	[regex="$withval"], [regex=no])
-if test "$regex" != no; then
-	if test "$regex" != yes; then
-		CPPFLAGS="$CPPFLAGS -I$regex/include"
-		LDFLAGS="$LDFLAGS -L$regex/lib"
-	fi
-	AC_CHECK_LIB(regex, regcomp, REGEX_LIBS=-lregex,
-		     [AC_MSG_ERROR(regex library not found)])
-else
-	AC_CHECK_FUNC(regcomp, :,
-		      [AC_MSG_ERROR(can't find POSIX regexp support)])
-fi
-AC_SUBST(REGEX_LIBS)])
-
-dnl ----- Motif -----
-
-AC_DEFUN(ATHENA_MOTIF_CHECK,
-[if test "$motif" != yes; then
-	CPPFLAGS="$CPPFLAGS -I$motif/include"
-	LDFLAGS="$LDFLAGS -L$motif/lib"
-fi
-AC_CHECK_LIB(Xm, XmStringFree, :, [AC_MSG_ERROR(Motif library not found)])])
-
-AC_DEFUN(ATHENA_MOTIF,
-[AC_ARG_WITH(motif,
-	[  --with-motif=PREFIX     Use Motif],
-	[motif="$withval"], [motif=no])
-if test "$motif" != no; then
-	ATHENA_MOTIF_CHECK
-	MOTIF_LIBS=-lXm
-	AC_DEFINE(HAVE_MOTIF)
-fi
-AC_SUBST(MOTIF_LIBS)])
-
-AC_DEFUN(ATHENA_MOTIF_REQUIRED,
-[AC_ARG_WITH(motif,
-	[  --with-motif=PREFIX     Specify location of Motif],
-	[motif="$withval"], [motif=yes])
-if test "$motif" != no; then
-	ATHENA_MOTIF_CHECK
-else
-	AC_MSG_ERROR(This package requires Motif.)
-fi])
-
-dnl ----- AFS -----
-
-AC_DEFUN(ATHENA_AFS_CHECK,
-[AC_CHECK_FUNC(insque, :, AC_CHECK_LIB(compat, insque))
-AC_CHECK_FUNC(gethostbyname, :, AC_CHECK_LIB(nsl, gethostbyname))
-AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket))
-if test "$afs" != yes; then
-	CPPFLAGS="$CPPFLAGS -I$afs/include"
-	LDFLAGS="$LDFLAGS -L$afs/lib -L$afs/lib/afs"
-fi
-AC_CHECK_LIB(sys, pioctl, :, [AC_MSG_ERROR(AFS libraries not found)],
-	     -lrx -llwp -lsys)
-AFS_DIR=$afs
-AC_SUBST(AFS_DIR)])
-
-dnl Specify desired AFS libraries as a parameter.
-AC_DEFUN(ATHENA_AFS,
-[AC_ARG_WITH(afs,
-	[  --with-afs=PREFIX       Use AFS libraries],
-	[afs="$withval"], [afs=no])
-if test "$afs" != no; then
-	ATHENA_AFS_CHECK
-	AFS_LIBS=$1
-	AC_DEFINE(HAVE_AFS)
-fi
-AC_SUBST(AFS_LIBS)])
-
-AC_DEFUN(ATHENA_AFS_REQUIRED,
-[AC_ARG_WITH(afs,
-	[  --with-afs=PREFIX       Specify location of AFS libraries],
-	[afs="$withval"], [afs=/usr/afsws])
-if test "$afs" != no; then
-	ATHENA_AFS_CHECK
-else
-	AC_MSG_ERROR(This package requires AFS libraries.)
-fi])
-
-dnl ----- Kerberos 4 -----
-
-AC_DEFUN(ATHENA_KRB4_CHECK,
-[AC_CHECK_FUNC(gethostbyname, :, AC_CHECK_LIB(nsl, gethostbyname))
-AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket))
-AC_CHECK_LIB(gen, compile)
-if test "$krb4" != yes; then
-	CPPFLAGS="$CPPFLAGS -I$krb4/include"
-	if test -d "$krb4/include/kerberosIV"; then
-		CPPFLAGS="$CPPFLAGS -I$krb4/include/kerberosIV"
-	fi
-	LDFLAGS="$LDFLAGS -L$krb4/lib"
-fi
-AC_CHECK_LIB(krb4, krb_rd_req,
-	     [KRB4_LIBS="-lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"],
-	     [AC_CHECK_LIB(krb, krb_rd_req,
-			   [KRB4_LIBS="-lkrb -ldes"],
-			   [AC_MSG_ERROR(Kerberos 4 libraries not found)],
-			   -ldes)],
-	     -ldes425 -lkrb5 -lk5crypto -lcom_err)])
-
-AC_DEFUN(ATHENA_KRB4,
-[AC_ARG_WITH(krb4,
-	[  --with-krb4=PREFIX      Use Kerberos 4],
-	[krb4="$withval"], [krb4=no])
-if test "$krb4" != no; then
-	ATHENA_KRB4_CHECK
-	AC_DEFINE(HAVE_KRB4)
-fi
-AC_SUBST(KRB4_LIBS)])
-
-AC_DEFUN(ATHENA_KRB4_REQUIRED,
-[AC_ARG_WITH(krb4,
-	[  --with-krb4=PREFIX      Specify location of Kerberos 4],
-	[krb4="$withval"], [krb4=yes])
-if test "$krb4" != no; then
-	ATHENA_KRB4_CHECK
-	AC_SUBST(KRB4_LIBS)
-else
-	AC_MSG_ERROR(This package requires Kerberos 4.)
-fi])
-
-dnl ----- Kerberos 5 -----
-
-AC_DEFUN(ATHENA_KRB5_CHECK,
-[AC_SEARCH_LIBS(gethostbyname, nsl)
-AC_SEARCH_LIBS(socket, socket)
-AC_CHECK_LIB(gen, compile)
-if test "$krb5" != yes; then
-	CPPFLAGS="$CPPFLAGS -I$krb5/include"
-	LDFLAGS="$LDFLAGS -L$krb5/lib"
-fi
-AC_CHECK_LIB(krb5, krb5_init_context, :,
-	     [AC_MSG_ERROR(Kerberos 5 libraries not found)],
-	     -lk5crypto -lcom_err)])
-
-AC_DEFUN(ATHENA_KRB5,
-[AC_ARG_WITH(krb5,
-	[  --with-krb5=PREFIX      Use Kerberos 5],
-	[krb5="$withval"], [krb5=no])
-if test "$krb5" != no; then
-	ATHENA_KRB5_CHECK
-	KRB5_LIBS="-lkrb5 -lk5crypto -lcom_err"
-	AC_DEFINE(HAVE_KRB5)
-fi
-AC_SUBST(KRB5_LIBS)])
-
-AC_DEFUN(ATHENA_KRB5_REQUIRED,
-[AC_ARG_WITH(krb5,
-	[  --with-krb5=PREFIX      Specify location of Kerberos 5],
-	[krb5="$withval"], [krb5=yes])
-if test "$krb5" != no; then
-	ATHENA_KRB5_CHECK
-else
-	AC_MSG_ERROR(This package requires Kerberos 5.)
-fi])
-
-dnl ----- Hesiod -----
-
-AC_DEFUN(ATHENA_HESIOD_CHECK,
-[AC_CHECK_FUNC(res_send, :, AC_CHECK_LIB(resolv, res_send))
-if test "$hesiod" != yes; then
-	CPPFLAGS="$CPPFLAGS -I$hesiod/include"
-	LDFLAGS="$LDFLAGS -L$hesiod/lib"
-fi
-AC_CHECK_LIB(hesiod, hes_resolve, :,
-	     [AC_MSG_ERROR(Hesiod library not found)])])
-
-AC_DEFUN(ATHENA_HESIOD,
-[AC_ARG_WITH(hesiod,
-	[  --with-hesiod=PREFIX    Use Hesiod],
-	[hesiod="$withval"], [hesiod=no])
-if test "$hesiod" != no; then
-	ATHENA_HESIOD_CHECK
-	HESIOD_LIBS="-lhesiod"
-	AC_DEFINE(HAVE_HESIOD)
-fi
-AC_SUBST(HESIOD_LIBS)])
-
-AC_DEFUN(ATHENA_HESIOD_REQUIRED,
-[AC_ARG_WITH(hesiod,
-	[  --with-hesiod=PREFIX    Specify location of Hesiod],
-	[hesiod="$withval"], [hesiod=yes])
-if test "$hesiod" != no; then
-	ATHENA_HESIOD_CHECK
-else
-	AC_MSG_ERROR(This package requires Hesiod.)
-fi])
-
-dnl ----- libares -----
-
-AC_DEFUN(ATHENA_ARES_CHECK,
-[AC_CHECK_FUNC(res_send, :, AC_CHECK_LIB(resolv, res_send))
-if test "$ares" != yes; then
-	CPPFLAGS="$CPPFLAGS -I$ares/include"
-	LDFLAGS="$LDFLAGS -L$ares/lib"
-fi
-AC_CHECK_LIB(ares, ares_init, :, [AC_MSG_ERROR(libares not found)])])
-
-AC_DEFUN(ATHENA_ARES,
-[AC_ARG_WITH(ares,
-	[  --with-ares=PREFIX      Use libares],
-	[ares="$withval"], [ares=no])
-if test "$ares" != no; then
-	ATHENA_ARES_CHECK
-	ARES_LIBS="-lares"
-	AC_DEFINE(HAVE_ARES)
-fi
-AC_SUBST(ARES_LIBS)])
-
-AC_DEFUN(ATHENA_ARES_REQUIRED,
-[AC_ARG_WITH(ares,
-	[  --with-ares=PREFIX      Specify location of libares],
-	[ares="$withval"], [ares=yes])
-if test "$ares" != no; then
-	ATHENA_ARES_CHECK
-else
-	AC_MSG_ERROR(This package requires libares.)
-fi])
-dnl ----- zephyr -----
-
-AC_DEFUN(ATHENA_ZEPHYR_CHECK,
-[if test "$zephyr" != yes; then
-	CPPFLAGS="$CPPFLAGS -I$zephyr/include"
-	LDFLAGS="$LDFLAGS -L$zephyr/lib"
-fi
-AC_CHECK_LIB(zephyr, ZFreeNotice, :, [AC_MSG_ERROR(zephyr not found)])])
-
-AC_DEFUN(ATHENA_ZEPHYR,
-[AC_ARG_WITH(zephyr,
-	[  --with-zephyr=PREFIX      Use zephyr],
-	[zephyr="$withval"], [zephyr=no])
-if test "$zephyr" != no; then
-	ATHENA_ZEPHYR_CHECK
-	ZEPHYR_LIBS="-lzephyr"
-	AC_DEFINE(HAVE_ZEPHYR)
-fi
-AC_SUBST(ZEPHYR_LIBS)])
-
-AC_DEFUN(ATHENA_ZEPHYR_REQUIRED,
-[AC_ARG_WITH(zephyr,
-	[  --with-zephyr=PREFIX      Specify location of zephyr],
-	[zephyr="$withval"], [zephyr=yes])
-if test "$zephyr" != no; then
-	ATHENA_ZEPHYR_CHECK
-else
-	AC_MSG_ERROR(This package requires zephyr.)
-fi])
+m4_include([acinclude.m4])
diff --git a/ares/configure.ac b/ares/configure.ac
index 1bb474bfb4..6d82081074 100644
--- a/ares/configure.ac
+++ b/ares/configure.ac
@@ -35,35 +35,22 @@ AC_HELP_STRING([--disable-debug],[Disable debug options]),
 
     CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I../include"
     CFLAGS="$CFLAGS -g" 
-    if test "$GCC" = "yes"; then
-       dnl these work for gcc 2.95
-       CFLAGS="$CFLAGS -W -Wall -Wwrite-strings -pedantic -Wundef -Wpointer-arith -Wnested-externs -Wcast-align -Winline -Wstrict-prototypes -Wmissing-declarations -Wmissing-prototypes -Wshadow -Wsign-compare"
-       dnl 2.96 or higher: -Wfloat-equal -Wunreachable-code
-    fi
-    dnl strip off optimizer flags
-    NEWFLAGS=""
-    for flag in $CFLAGS; do
-      case "$flag" in
-      -O*)
-        dnl echo "cut off $flag"
-        ;;
-      *)
-        NEWFLAGS="$NEWFLAGS $flag"
-        ;;
-      esac
-    done
-    CFLAGS=$NEWFLAGS
+
+    dnl set compiler "debug" options to become more picky, and remove
+    dnl optimize options from CFLAGS
+    CURL_CC_DEBUG_OPTS
+
        ;;
   esac ],
        AC_MSG_RESULT(no)
 )
 
 dnl check for a few basic system headers we need
-AC_CHECK_HEADERS(
-        sys/types.h \
-        sys/time.h \
-        sys/select.h \
-        sys/socket.h \
-        )
+dnl AC_CHECK_HEADERS(
+dnl        sys/types.h \
+dnl        sys/time.h \
+dnl        sys/select.h \
+dnl        sys/socket.h \
+dnl        )
 
 AC_OUTPUT(Makefile)
-- 
GitLab