From 32ac4edeedb44cb1c95c522e8366665147d463d5 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Fri, 13 Oct 2006 01:35:14 +0000 Subject: [PATCH] Check for struct timeval at configuration time --- acinclude.m4 | 59 +++++++++++++++++++++++++++++++++++++++++++++++ ares/acinclude.m4 | 59 +++++++++++++++++++++++++++++++++++++++++++++++ ares/configure.ac | 1 + configure.ac | 1 + lib/timeval.h | 7 ++++++ 5 files changed, 127 insertions(+) diff --git a/acinclude.m4 b/acinclude.m4 index f12a761dd..7317974bd 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -976,6 +976,65 @@ AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [ ]) # AC_DEFUN +dnl CURL_CHECK_STRUCT_TIMEVAL +dnl ------------------------------------------------- +dnl Check for timeval struct + +AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [ + AC_REQUIRE([AC_HEADER_TIME])dnl + AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl + AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl + AC_CHECK_HEADERS(sys/types.h sys/time.h time.h) + AC_CACHE_CHECK([for struct timeval], [ac_cv_struct_timeval], [ + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ +#undef inline +#ifdef HAVE_WINDOWS_H +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#ifdef HAVE_WINSOCK2_H +#include +#else +#ifdef HAVE_WINSOCK_H +#include +#endif +#endif +#endif +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_SYS_TIME_H +#include +#ifdef TIME_WITH_SYS_TIME +#include +#endif +#else +#ifdef HAVE_TIME_H +#include +#endif +#endif + ],[ + struct timeval ts; + ts.tv_sec = 0; + ts.tv_usec = 0; + ]) + ],[ + ac_cv_struct_timeval="yes" + ],[ + ac_cv_struct_timeval="no" + ]) + ]) + case "$ac_cv_struct_timeval" in + yes) + AC_DEFINE_UNQUOTED(HAVE_STRUCT_TIMEVAL, 1, + [Define to 1 if you have the timeval struct.]) + ;; + esac +]) # AC_DEFUN + + dnl CURL_CHECK_NONBLOCKING_SOCKET dnl ------------------------------------------------- dnl Check for how to set a socket to non-blocking state. There seems to exist diff --git a/ares/acinclude.m4 b/ares/acinclude.m4 index 267d28dc6..9a2840401 100644 --- a/ares/acinclude.m4 +++ b/ares/acinclude.m4 @@ -954,6 +954,65 @@ AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [ ]) # AC_DEFUN +dnl CURL_CHECK_STRUCT_TIMEVAL +dnl ------------------------------------------------- +dnl Check for timeval struct + +AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [ + AC_REQUIRE([AC_HEADER_TIME])dnl + AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl + AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl + AC_CHECK_HEADERS(sys/types.h sys/time.h time.h) + AC_CACHE_CHECK([for struct timeval], [ac_cv_struct_timeval], [ + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ +#undef inline +#ifdef HAVE_WINDOWS_H +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#ifdef HAVE_WINSOCK2_H +#include +#else +#ifdef HAVE_WINSOCK_H +#include +#endif +#endif +#endif +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_SYS_TIME_H +#include +#ifdef TIME_WITH_SYS_TIME +#include +#endif +#else +#ifdef HAVE_TIME_H +#include +#endif +#endif + ],[ + struct timeval ts; + ts.tv_sec = 0; + ts.tv_usec = 0; + ]) + ],[ + ac_cv_struct_timeval="yes" + ],[ + ac_cv_struct_timeval="no" + ]) + ]) + case "$ac_cv_struct_timeval" in + yes) + AC_DEFINE_UNQUOTED(HAVE_STRUCT_TIMEVAL, 1, + [Define to 1 if you have the timeval struct.]) + ;; + esac +]) # AC_DEFUN + + dnl CURL_CHECK_NONBLOCKING_SOCKET dnl ------------------------------------------------- dnl Check for how to set a socket to non-blocking state. There seems to exist diff --git a/ares/configure.ac b/ares/configure.ac index 5f46549df..79292cebc 100644 --- a/ares/configure.ac +++ b/ares/configure.ac @@ -265,6 +265,7 @@ dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_SIZE_T AC_HEADER_TIME +CURL_CHECK_STRUCT_TIMEVAL AC_CHECK_SIZEOF(size_t) AC_CHECK_SIZEOF(long) diff --git a/configure.ac b/configure.ac index 52d281834..31c00a384 100644 --- a/configure.ac +++ b/configure.ac @@ -1527,6 +1527,7 @@ dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_SIZE_T AC_HEADER_TIME +CURL_CHECK_STRUCT_TIMEVAL AC_CHECK_SIZEOF(curl_off_t, ,[ #include diff --git a/lib/timeval.h b/lib/timeval.h index 5decc892b..0792064a7 100644 --- a/lib/timeval.h +++ b/lib/timeval.h @@ -41,6 +41,12 @@ #endif #endif +#ifndef HAVE_STRUCT_TIMEVAL + +/* TODO: define HAVE_STRUCT_TIMEVAL as appropriate in our config files for + platforms that lack autotools support. Afterwards remove or simplify + the following logic which will become redundant */ + #ifndef HAVE_GETTIMEOFDAY #if !defined(_WINSOCKAPI_) && !defined(__MINGW32__) && !defined(_AMIGASF) && \ !defined(__LCC__) && !defined(__WATCOMC__) && !defined(__POCC__) && \ @@ -51,6 +57,7 @@ struct timeval { }; #endif #endif +#endif struct timeval curlx_tvnow(void);