Added CVS id, Detabified, applied c-ares coding-style.
[platform/upstream/c-ares.git] / acinclude.m4
index f4f317e..214c005 100644 (file)
-dnl Check for how to set a socket to non-blocking state. There seems to exist\r
-dnl four known different ways, with the one used almost everywhere being POSIX\r
-dnl and XPG3, while the other different ways for different systems (old BSD,\r
-dnl Windows and Amiga).\r
-dnl\r
-dnl There are two known platforms (AIX 3.x and SunOS 4.1.x) where the\r
-dnl O_NONBLOCK define is found but does not work. This condition is attempted\r
-dnl to get caught in this script by using an excessive number of #ifdefs...\r
-dnl\r
-AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET],\r
-[\r
-  AC_MSG_CHECKING([non-blocking sockets style])\r
-\r
-  AC_TRY_COMPILE([\r
-/* headers for O_NONBLOCK test */\r
-#include <sys/types.h>\r
-#include <unistd.h>\r
-#include <fcntl.h>\r
-],[\r
-/* try to compile O_NONBLOCK */\r
-\r
-#if defined(sun) || defined(__sun__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)\r
-# if defined(__SVR4) || defined(__srv4__)\r
-#  define PLATFORM_SOLARIS\r
-# else\r
-#  define PLATFORM_SUNOS4\r
-# endif\r
-#endif\r
-#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX4)\r
-# define PLATFORM_AIX_V3\r
-#endif\r
-\r
-#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) || defined(__BEOS__)\r
-#error "O_NONBLOCK does not work on this platform"\r
-#endif\r
-  int socket;\r
-  int flags = fcntl(socket, F_SETFL, flags | O_NONBLOCK);\r
-],[\r
-dnl the O_NONBLOCK test was fine\r
-nonblock="O_NONBLOCK"\r
-AC_DEFINE(HAVE_O_NONBLOCK, 1, [use O_NONBLOCK for non-blocking sockets])\r
-],[\r
-dnl the code was bad, try a different program now, test 2\r
-\r
-  AC_TRY_COMPILE([\r
-/* headers for FIONBIO test */\r
-#include <unistd.h>\r
-#include <stropts.h>\r
-],[\r
-/* FIONBIO source test (old-style unix) */\r
- int socket;\r
- int flags = ioctl(socket, FIONBIO, &flags);\r
-],[\r
-dnl FIONBIO test was good\r
-nonblock="FIONBIO"\r
-AC_DEFINE(HAVE_FIONBIO, 1, [use FIONBIO for non-blocking sockets])\r
-],[\r
-dnl FIONBIO test was also bad\r
-dnl the code was bad, try a different program now, test 3\r
-\r
-  AC_TRY_COMPILE([\r
-/* headers for ioctlsocket test (cygwin?) */\r
-#include <windows.h>\r
-],[\r
-/* ioctlsocket source code */\r
- int socket;\r
- unsigned long flags = ioctlsocket(socket, FIONBIO, &flags);\r
-],[\r
-dnl ioctlsocket test was good\r
-nonblock="ioctlsocket"\r
-AC_DEFINE(HAVE_IOCTLSOCKET, 1, [use ioctlsocket() for non-blocking sockets])\r
-],[\r
-dnl ioctlsocket didnt compile!, go to test 4\r
-\r
-  AC_TRY_LINK([\r
-/* headers for IoctlSocket test (Amiga?) */\r
-#include <sys/ioctl.h>\r
-],[\r
-/* IoctlSocket source code */\r
- int socket;\r
- int flags = IoctlSocket(socket, FIONBIO, (long)1);\r
-],[\r
-dnl ioctlsocket test was good\r
-nonblock="IoctlSocket"\r
-AC_DEFINE(HAVE_IOCTLSOCKET_CASE, 1, [use Ioctlsocket() for non-blocking sockets])\r
-],[\r
-dnl Ioctlsocket didnt compile, do test 5!\r
-  AC_TRY_COMPILE([\r
-/* headers for SO_NONBLOCK test (BeOS) */\r
-#include <socket.h>\r
-],[\r
-/* SO_NONBLOCK source code */\r
- long b = 1;\r
- int socket;\r
- int flags = setsockopt(socket, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));\r
-],[\r
-dnl the SO_NONBLOCK test was good\r
-nonblock="SO_NONBLOCK"\r
-AC_DEFINE(HAVE_SO_NONBLOCK, 1, [use SO_NONBLOCK for non-blocking sockets])\r
-],[\r
-dnl test 5 didnt compile!\r
-nonblock="nada"\r
-AC_DEFINE(HAVE_DISABLED_NONBLOCKING, 1, [disabled non-blocking sockets])\r
-])\r
-dnl end of fifth test\r
-\r
-])\r
-dnl end of forth test\r
-\r
-])\r
-dnl end of third test\r
-\r
-])\r
-dnl end of second test\r
-\r
-])\r
-dnl end of non-blocking try-compile test\r
-  AC_MSG_RESULT($nonblock)\r
-\r
-  if test "$nonblock" = "nada"; then\r
-    AC_MSG_WARN([non-block sockets disabled])\r
-  fi\r
-])\r
-\r
-dnl We create a function for detecting which compiler we use and then set as\r
-dnl pendantic compiler options as possible for that particular compiler. The\r
-dnl options are only used for debug-builds.\r
-\r
-dnl This is a copy of the original found in curl's configure script. Don't\r
-dnl modify this one, edit the one in curl and copy it back here when that one\r
-dnl is changed.\r
-\r
-AC_DEFUN([CURL_CC_DEBUG_OPTS],\r
-[\r
-    if test "$GCC" = "yes"; then\r
-\r
-       dnl figure out gcc version!\r
-       AC_MSG_CHECKING([gcc version])\r
-       gccver=`$CC -dumpversion`\r
-       num1=`echo $gccver | cut -d . -f1`\r
-       num2=`echo $gccver | cut -d . -f2`\r
-       gccnum=`(expr $num1 "*" 100 + $num2) 2>/dev/null`\r
-       AC_MSG_RESULT($gccver)\r
-\r
-       AC_MSG_CHECKING([if this is icc in disguise])\r
-       AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],\r
-         dnl action if the text is found, this it has not been replaced by the\r
-         dnl cpp\r
-         ICC="no"\r
-         AC_MSG_RESULT([no]),\r
-         dnl the text was not found, it was replaced by the cpp\r
-         ICC="yes"\r
-         AC_MSG_RESULT([yes])\r
-       )\r
-\r
-       if test "$ICC" = "yes"; then\r
-         dnl this is icc, not gcc.\r
-\r
-         dnl ICC warnings we ignore:\r
-         dnl * 279 warns on static conditions in while expressions\r
-         dnl * 269 warns on our "%Od" printf formatters for curl_off_t output:\r
-         dnl   "invalid format string conversion"\r
-\r
-         WARN="-wd279,269"\r
-\r
-         if test "$gccnum" -gt "600"; then\r
-            dnl icc 6.0 and older doesn't have the -Wall flag\r
-            WARN="-Wall $WARN"\r
-         fi\r
-       else dnl $ICC = yes\r
-         dnl \r
-         WARN="-W -Wall -Wwrite-strings -pedantic -Wno-long-long -Wundef -Wpointer-arith -Wnested-externs -Winline -Wmissing-declarations -Wmissing-prototypes -Wsign-compare"\r
-\r
-         dnl -Wcast-align is a bit too annoying ;-)\r
-\r
-         if test "$gccnum" -ge "296"; then\r
-           dnl gcc 2.96 or later\r
-           WARN="$WARN -Wfloat-equal"\r
-\r
-           if test "$gccnum" -gt "296"; then\r
-             dnl this option does not exist in 2.96\r
-             WARN="$WARN -Wno-format-nonliteral"\r
-           fi\r
-\r
-           dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on\r
-           dnl on i686-Linux as it gives us heaps with false positives\r
-           if test "$gccnum" -ge "303"; then\r
-             dnl gcc 3.3 and later\r
-             WARN="$WARN -Wendif-labels -Wstrict-prototypes"\r
-           fi\r
-         fi\r
-\r
-         for flag in $CPPFLAGS; do\r
-           case "$flag" in\r
-            -I*)\r
-              dnl include path\r
-              add=`echo $flag | sed 's/^-I/-isystem /g'`\r
-              WARN="$WARN $add"\r
-              ;;\r
-           esac\r
-         done\r
-\r
-       fi dnl $ICC = no\r
-\r
-       CFLAGS="$CFLAGS $WARN"\r
-\r
-    fi dnl $GCC = yes\r
-\r
-    dnl strip off optimizer flags\r
-    NEWFLAGS=""\r
-    for flag in $CFLAGS; do\r
-      case "$flag" in\r
-      -O*)\r
-        dnl echo "cut off $flag"\r
-        ;;\r
-      *)\r
-        NEWFLAGS="$NEWFLAGS $flag"\r
-        ;;\r
-      esac\r
-    done\r
-    CFLAGS=$NEWFLAGS\r
-\r
-]) dnl end of AC_DEFUN()\r
-\r
-\r
-dnl This macro determines if the specified struct exists in the specified file\r
-dnl Syntax:\r
-dnl CARES_CHECK_STRUCT(headers, struct name, if found, [if not found])\r
-\r
-AC_DEFUN([CARES_CHECK_STRUCT], [\r
-  AC_MSG_CHECKING([for struct $2])\r
-  AC_TRY_COMPILE([$1], \r
-    [\r
-      struct $2 struct_instance;\r
-    ], ac_struct="yes", ac_found="no")\r
-  if test "$ac_struct" = "yes" ; then\r
-    AC_MSG_RESULT(yes)\r
-    $3\r
-  else\r
-    AC_MSG_RESULT(no)\r
-    $4\r
-  fi\r
-])\r
-\r
-dnl This macro determines if the specified constant exists in the specified file\r
-dnl Syntax:\r
-dnl CARES_CHECK_CONSTANT(headers, constant name, if found, [if not found])\r
-\r
-AC_DEFUN([CARES_CHECK_CONSTANT], [\r
-  AC_MSG_CHECKING([for $2])\r
-  AC_EGREP_CPP(VARIABLEWASDEFINED,\r
-   [\r
-      $1\r
-\r
-      #ifdef $2\r
-        VARIABLEWASDEFINED\r
-      #else\r
-        NJET\r
-      #endif\r
-    ], ac_constant="yes", ac_constant="no"\r
-  )\r
-  if test "$ac_constant" = "yes" ; then\r
-    AC_MSG_RESULT(yes)\r
-    $3\r
-  else\r
-    AC_MSG_RESULT(no)\r
-    $4\r
-  fi\r
-])\r
-\r
-\r
+dnl Check for how to set a socket to non-blocking state. There seems to exist
+dnl four known different ways, with the one used almost everywhere being POSIX
+dnl and XPG3, while the other different ways for different systems (old BSD,
+dnl Windows and Amiga).
+dnl
+dnl There are two known platforms (AIX 3.x and SunOS 4.1.x) where the
+dnl O_NONBLOCK define is found but does not work. This condition is attempted
+dnl to get caught in this script by using an excessive number of #ifdefs...
+dnl
+AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET],
+[
+  AC_MSG_CHECKING([non-blocking sockets style])
+
+  AC_TRY_COMPILE([
+/* headers for O_NONBLOCK test */
+#include <sys/types.h>
+#include <unistd.h>
+#include <fcntl.h>
+],[
+/* try to compile O_NONBLOCK */
+
+#if defined(sun) || defined(__sun__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+# if defined(__SVR4) || defined(__srv4__)
+#  define PLATFORM_SOLARIS
+# else
+#  define PLATFORM_SUNOS4
+# endif
+#endif
+#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX4)
+# define PLATFORM_AIX_V3
+#endif
+
+#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) || defined(__BEOS__)
+#error "O_NONBLOCK does not work on this platform"
+#endif
+  int socket;
+  int flags = fcntl(socket, F_SETFL, flags | O_NONBLOCK);
+],[
+dnl the O_NONBLOCK test was fine
+nonblock="O_NONBLOCK"
+AC_DEFINE(HAVE_O_NONBLOCK, 1, [use O_NONBLOCK for non-blocking sockets])
+],[
+dnl the code was bad, try a different program now, test 2
+
+  AC_TRY_COMPILE([
+/* headers for FIONBIO test */
+#include <unistd.h>
+#include <stropts.h>
+],[
+/* FIONBIO source test (old-style unix) */
+ int socket;
+ int flags = ioctl(socket, FIONBIO, &flags);
+],[
+dnl FIONBIO test was good
+nonblock="FIONBIO"
+AC_DEFINE(HAVE_FIONBIO, 1, [use FIONBIO for non-blocking sockets])
+],[
+dnl FIONBIO test was also bad
+dnl the code was bad, try a different program now, test 3
+
+  AC_TRY_COMPILE([
+/* headers for ioctlsocket test (cygwin?) */
+#include <windows.h>
+],[
+/* ioctlsocket source code */
+ int socket;
+ unsigned long flags = ioctlsocket(socket, FIONBIO, &flags);
+],[
+dnl ioctlsocket test was good
+nonblock="ioctlsocket"
+AC_DEFINE(HAVE_IOCTLSOCKET, 1, [use ioctlsocket() for non-blocking sockets])
+],[
+dnl ioctlsocket didnt compile!, go to test 4
+
+  AC_TRY_LINK([
+/* headers for IoctlSocket test (Amiga?) */
+#include <sys/ioctl.h>
+],[
+/* IoctlSocket source code */
+ int socket;
+ int flags = IoctlSocket(socket, FIONBIO, (long)1);
+],[
+dnl ioctlsocket test was good
+nonblock="IoctlSocket"
+AC_DEFINE(HAVE_IOCTLSOCKET_CASE, 1, [use Ioctlsocket() for non-blocking sockets])
+],[
+dnl Ioctlsocket didnt compile, do test 5!
+  AC_TRY_COMPILE([
+/* headers for SO_NONBLOCK test (BeOS) */
+#include <socket.h>
+],[
+/* SO_NONBLOCK source code */
+ long b = 1;
+ int socket;
+ int flags = setsockopt(socket, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
+],[
+dnl the SO_NONBLOCK test was good
+nonblock="SO_NONBLOCK"
+AC_DEFINE(HAVE_SO_NONBLOCK, 1, [use SO_NONBLOCK for non-blocking sockets])
+],[
+dnl test 5 didnt compile!
+nonblock="nada"
+AC_DEFINE(HAVE_DISABLED_NONBLOCKING, 1, [disabled non-blocking sockets])
+])
+dnl end of fifth test
+
+])
+dnl end of forth test
+
+])
+dnl end of third test
+
+])
+dnl end of second test
+
+])
+dnl end of non-blocking try-compile test
+  AC_MSG_RESULT($nonblock)
+
+  if test "$nonblock" = "nada"; then
+    AC_MSG_WARN([non-block sockets disabled])
+  fi
+])
+
+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([^__INTEL_COMPILER], [__INTEL_COMPILER],
+         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 ICC warnings we ignore:
+         dnl * 279 warns on static conditions in while expressions
+         dnl * 269 warns on our "%Od" printf formatters for curl_off_t output:
+         dnl   "invalid format string conversion"
+
+         WARN="-wd279,269"
+
+         if test "$gccnum" -gt "600"; then
+            dnl icc 6.0 and older doesn't have the -Wall flag
+            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()
+
+
+dnl This macro determines if the specified struct exists in the specified file
+dnl Syntax:
+dnl CARES_CHECK_STRUCT(headers, struct name, if found, [if not found])
+
+AC_DEFUN([CARES_CHECK_STRUCT], [
+  AC_MSG_CHECKING([for struct $2])
+  AC_TRY_COMPILE([$1], 
+    [
+      struct $2 struct_instance;
+    ], ac_struct="yes", ac_found="no")
+  if test "$ac_struct" = "yes" ; then
+    AC_MSG_RESULT(yes)
+    $3
+  else
+    AC_MSG_RESULT(no)
+    $4
+  fi
+])
+
+dnl This macro determines if the specified constant exists in the specified file
+dnl Syntax:
+dnl CARES_CHECK_CONSTANT(headers, constant name, if found, [if not found])
+
+AC_DEFUN([CARES_CHECK_CONSTANT], [
+  AC_MSG_CHECKING([for $2])
+  AC_EGREP_CPP(VARIABLEWASDEFINED,
+   [
+      $1
+
+      #ifdef $2
+        VARIABLEWASDEFINED
+      #else
+        NJET
+      #endif
+    ], ac_constant="yes", ac_constant="no"
+  )
+  if test "$ac_constant" = "yes" ; then
+    AC_MSG_RESULT(yes)
+    $3
+  else
+    AC_MSG_RESULT(no)
+    $4
+  fi
+])
+
+
+dnl This macro determines how many parameters getservbyport_r takes
+AC_DEFUN([CARES_CHECK_GETSERVBYPORT_R], [
+  AC_MSG_CHECKING([how many arguments getservbyport_r takes])
+  AC_TRY_COMPILE(
+    [#include <netdb.h>],
+    [
+      int p1, p5;
+      char *p2, p4[4096];
+      struct servent *p3, *p6;
+      getservbyport_r(p1, p2, p3, p4, p5, &p6);
+    ], ac_func_getservbyport_r=6,
+    [AC_TRY_COMPILE(
+      [#include <netdb.h>],
+      [
+        int p1, p5;
+        char *p2, p4[4096];
+        struct servent *p3;
+        getservbyport_r(p1, p2, p3, p4, p5);
+      ], ac_func_getservbyport_r=5,
+      [AC_TRY_COMPILE(
+        [#include <netdb.h>],
+        [
+          int p1;
+          char *p2;
+          struct servent *p3;
+          struct servent_data p4;
+          getservbyport_r(p1, p2, p3, &p4);
+        ], ac_func_getservbyport_r=4, ac_func_getservbyport_r=0
+      )]
+    )]
+  )
+if test $ac_func_getservbyport_r != "0" ; then
+  AC_MSG_RESULT($ac_func_getservbyport_r)
+  AC_DEFINE(HAVE_GETSERVBYPORT_R, 1, [Specifies whether getservbyport_r is present])
+  AC_DEFINE_UNQUOTED(GETSERVBYPORT_R_ARGS, $ac_func_getservbyport_r, [Specifies the number of arguments to 
+getservbyport_r])
+  if test $ac_func_getservbyport_r = "4" ; then
+   AC_DEFINE(GETSERVBYPORT_R_BUFSIZE, sizeof(struct servent_data), [Specifies the size of the buffer to pass to 
+getservbyport_r])
+  else
+   AC_DEFINE(GETSERVBYPORT_R_BUFSIZE, 4096, [Specifies the size of the buffer to pass to getservbyport_r])
+  fi
+else
+  AC_MSG_RESULT([not found])
+fi
+])
+