From 03737583596c81eb0e54993cc68f34ff5a86800d Mon Sep 17 00:00:00 2001 From: Daniel Stenberg 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 be99f6867..332369f47 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 72413ea6a..502fd02e2 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 000000000..76ff0deef --- /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 + 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 96fcd435b..b3a3bbb08 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 1bb474bfb..6d8208107 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)