improve detection of gethostname(), localtime_r() and strstr()

This commit is contained in:
Yang Tse 2008-09-17 08:14:28 +00:00
Родитель 638e3c070c
Коммит d7e406e020
3 изменённых файлов: 289 добавлений и 23 удалений

Просмотреть файл

@ -2601,26 +2601,6 @@ fi
]) ])
AC_DEFUN([CURL_CHECK_LOCALTIME_R],
[
dnl check for localtime_r
AC_CHECK_FUNCS(localtime_r,[
AC_MSG_CHECKING(whether localtime_r is declared)
AC_EGREP_CPP(localtime_r,[
#undef _REENTRANT
#include <time.h>],[
AC_MSG_RESULT(yes)],[
AC_MSG_RESULT(no)
AC_MSG_CHECKING(whether localtime_r with -D_REENTRANT is declared)
AC_EGREP_CPP(localtime_r,[
#undef _REENTRANT
#define _REENTRANT
#include <time.h>],[
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))])])
])
AC_DEFUN([CURL_CHECK_INET_NTOA_R], AC_DEFUN([CURL_CHECK_INET_NTOA_R],
[ [
dnl determine if function definition for inet_ntoa_r exists. dnl determine if function definition for inet_ntoa_r exists.

Просмотреть файл

@ -1853,7 +1853,7 @@ else
CURL_CHECK_INET_NTOA_R() CURL_CHECK_INET_NTOA_R()
dnl is there a localtime_r() dnl is there a localtime_r()
CURL_CHECK_LOCALTIME_R() dnl the old localtime_r check was done here
dnl is there a strerror_r() dnl is there a strerror_r()
dnl the old strerror_r check was done here dnl the old strerror_r check was done here
@ -1874,7 +1874,7 @@ if test "x$RECENTAIX" = "xyes"; then
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code]) AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
dnl is there a localtime_r() dnl is there a localtime_r()
CURL_CHECK_LOCALTIME_R() dnl the old localtime_r check was done here
dnl is there a strerror_r() dnl is there a strerror_r()
dnl the old strerror_r check was done here dnl the old strerror_r check was done here
@ -2038,7 +2038,9 @@ CURL_CHECK_MSG_NOSIGNAL
CURL_CHECK_FUNC_FDOPEN CURL_CHECK_FUNC_FDOPEN
CURL_CHECK_FUNC_FTRUNCATE CURL_CHECK_FUNC_FTRUNCATE
CURL_CHECK_FUNC_GETHOSTNAME
CURL_CHECK_FUNC_GMTIME_R CURL_CHECK_FUNC_GMTIME_R
CURL_CHECK_FUNC_LOCALTIME_R
CURL_CHECK_FUNC_SIGACTION CURL_CHECK_FUNC_SIGACTION
CURL_CHECK_FUNC_STRCASECMP CURL_CHECK_FUNC_STRCASECMP
CURL_CHECK_FUNC_STRCASESTR CURL_CHECK_FUNC_STRCASESTR
@ -2050,6 +2052,7 @@ CURL_CHECK_FUNC_STRLCAT
CURL_CHECK_FUNC_STRNCASECMP CURL_CHECK_FUNC_STRNCASECMP
CURL_CHECK_FUNC_STRNCMPI CURL_CHECK_FUNC_STRNCMPI
CURL_CHECK_FUNC_STRNICMP CURL_CHECK_FUNC_STRNICMP
CURL_CHECK_FUNC_STRSTR
CURL_CHECK_FUNC_STRTOK_R CURL_CHECK_FUNC_STRTOK_R
CURL_CHECK_FUNC_STRTOLL CURL_CHECK_FUNC_STRTOLL
CURL_CHECK_FUNC_WRITEV CURL_CHECK_FUNC_WRITEV
@ -2090,7 +2093,6 @@ AC_CHECK_FUNCS([basename \
signal \ signal \
sigsetjmp \ sigsetjmp \
socket \ socket \
strstr \
uname \ uname \
utime utime
],[ ],[

Просмотреть файл

@ -353,6 +353,91 @@ AC_DEFUN([CURL_CHECK_FUNC_FTRUNCATE], [
]) ])
dnl CURL_CHECK_FUNC_GETHOSTNAME
dnl -------------------------------------------------
dnl Verify if gethostname is available, prototyped, and
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_gethostname, then
dnl HAVE_GETHOSTNAME will be defined.
AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
#
tst_links_gethostname="unknown"
tst_proto_gethostname="unknown"
tst_compi_gethostname="unknown"
tst_allow_gethostname="unknown"
#
AC_MSG_CHECKING([if gethostname can be linked])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([gethostname])
],[
AC_MSG_RESULT([yes])
tst_links_gethostname="yes"
],[
AC_MSG_RESULT([no])
tst_links_gethostname="no"
])
#
if test "$tst_links_gethostname" = "yes"; then
AC_MSG_CHECKING([if gethostname is prototyped])
AC_EGREP_CPP([gethostname],[
$curl_includes_unistd
],[
AC_MSG_RESULT([yes])
tst_proto_gethostname="yes"
],[
AC_MSG_RESULT([no])
tst_proto_gethostname="no"
])
fi
#
if test "$tst_proto_gethostname" = "yes"; then
AC_MSG_CHECKING([if gethostname is compilable])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_unistd
]],[[
if(0 != gethostname(0, 0))
return 1;
]])
],[
AC_MSG_RESULT([yes])
tst_compi_gethostname="yes"
],[
AC_MSG_RESULT([no])
tst_compi_gethostname="no"
])
fi
#
if test "$tst_compi_gethostname" = "yes"; then
AC_MSG_CHECKING([if gethostname usage allowed])
if test "x$curl_disallow_gethostname" != "xyes"; then
AC_MSG_RESULT([yes])
tst_allow_gethostname="yes"
else
AC_MSG_RESULT([no])
tst_allow_gethostname="no"
fi
fi
#
AC_MSG_CHECKING([if gethostname might be used])
if test "$tst_links_gethostname" = "yes" &&
test "$tst_proto_gethostname" = "yes" &&
test "$tst_compi_gethostname" = "yes" &&
test "$tst_allow_gethostname" = "yes"; then
AC_MSG_RESULT([yes])
AC_DEFINE_UNQUOTED(HAVE_GETHOSTNAME, 1,
[Define to 1 if you have the gethostname function.])
ac_cv_func_gethostname="yes"
else
AC_MSG_RESULT([no])
ac_cv_func_gethostname="no"
fi
])
dnl CURL_CHECK_FUNC_GMTIME_R dnl CURL_CHECK_FUNC_GMTIME_R
dnl ------------------------------------------------- dnl -------------------------------------------------
dnl Verify if gmtime_r is available, prototyped, can dnl Verify if gmtime_r is available, prototyped, can
@ -467,6 +552,120 @@ AC_DEFUN([CURL_CHECK_FUNC_GMTIME_R], [
]) ])
dnl CURL_CHECK_FUNC_LOCALTIME_R
dnl -------------------------------------------------
dnl Verify if localtime_r is available, prototyped, can
dnl be compiled and seems to work. If all of these are
dnl true, and usage has not been previously disallowed
dnl with shell variable curl_disallow_localtime_r, then
dnl HAVE_LOCALTIME_R will be defined.
AC_DEFUN([CURL_CHECK_FUNC_LOCALTIME_R], [
AC_REQUIRE([CURL_INCLUDES_TIME])dnl
#
tst_links_localtime_r="unknown"
tst_proto_localtime_r="unknown"
tst_compi_localtime_r="unknown"
tst_works_localtime_r="unknown"
tst_allow_localtime_r="unknown"
#
AC_MSG_CHECKING([if localtime_r can be linked])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([localtime_r])
],[
AC_MSG_RESULT([yes])
tst_links_localtime_r="yes"
],[
AC_MSG_RESULT([no])
tst_links_localtime_r="no"
])
#
if test "$tst_links_localtime_r" = "yes"; then
AC_MSG_CHECKING([if localtime_r is prototyped])
AC_EGREP_CPP([localtime_r],[
$curl_includes_time
],[
AC_MSG_RESULT([yes])
tst_proto_localtime_r="yes"
],[
AC_MSG_RESULT([no])
tst_proto_localtime_r="no"
])
fi
#
if test "$tst_proto_localtime_r" = "yes"; then
AC_MSG_CHECKING([if localtime_r is compilable])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_time
]],[[
if(0 != localtime_r(0, 0))
return 1;
]])
],[
AC_MSG_RESULT([yes])
tst_compi_localtime_r="yes"
],[
AC_MSG_RESULT([no])
tst_compi_localtime_r="no"
])
fi
#
dnl only do runtime verification when not cross-compiling
if test "x$cross_compiling" != "xyes" &&
test "$tst_compi_localtime_r" = "yes"; then
AC_MSG_CHECKING([if localtime_r seems to work])
AC_RUN_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_time
]],[[
time_t clock = 1170352587;
struct tm *tmp = 0;
struct tm result;
tmp = localtime_r(&clock, &result);
if(tmp)
exit(0);
else
exit(1);
]])
],[
AC_MSG_RESULT([yes])
tst_works_localtime_r="yes"
],[
AC_MSG_RESULT([no])
tst_works_localtime_r="no"
])
fi
#
if test "$tst_compi_localtime_r" = "yes" &&
test "$tst_works_localtime_r" != "no"; then
AC_MSG_CHECKING([if localtime_r usage allowed])
if test "x$curl_disallow_localtime_r" != "xyes"; then
AC_MSG_RESULT([yes])
tst_allow_localtime_r="yes"
else
AC_MSG_RESULT([no])
tst_allow_localtime_r="no"
fi
fi
#
AC_MSG_CHECKING([if localtime_r might be used])
if test "$tst_links_localtime_r" = "yes" &&
test "$tst_proto_localtime_r" = "yes" &&
test "$tst_compi_localtime_r" = "yes" &&
test "$tst_allow_localtime_r" = "yes" &&
test "$tst_works_localtime_r" != "no"; then
AC_MSG_RESULT([yes])
AC_DEFINE_UNQUOTED(HAVE_LOCALTIME_R, 1,
[Define to 1 if you have a working localtime_r function.])
ac_cv_func_localtime_r="yes"
else
AC_MSG_RESULT([no])
ac_cv_func_localtime_r="no"
fi
])
dnl CURL_CHECK_FUNC_SIGACTION dnl CURL_CHECK_FUNC_SIGACTION
dnl ------------------------------------------------- dnl -------------------------------------------------
dnl Verify if sigaction is available, prototyped, and dnl Verify if sigaction is available, prototyped, and
@ -1573,6 +1772,91 @@ AC_DEFUN([CURL_CHECK_FUNC_STRNICMP], [
]) ])
dnl CURL_CHECK_FUNC_STRSTR
dnl -------------------------------------------------
dnl Verify if strstr is available, prototyped, and
dnl can be compiled. If all of these are true, and
dnl usage has not been previously disallowed with
dnl shell variable curl_disallow_strstr, then
dnl HAVE_STRSTR will be defined.
AC_DEFUN([CURL_CHECK_FUNC_STRSTR], [
AC_REQUIRE([CURL_INCLUDES_STRING])dnl
#
tst_links_strstr="unknown"
tst_proto_strstr="unknown"
tst_compi_strstr="unknown"
tst_allow_strstr="unknown"
#
AC_MSG_CHECKING([if strstr can be linked])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([strstr])
],[
AC_MSG_RESULT([yes])
tst_links_strstr="yes"
],[
AC_MSG_RESULT([no])
tst_links_strstr="no"
])
#
if test "$tst_links_strstr" = "yes"; then
AC_MSG_CHECKING([if strstr is prototyped])
AC_EGREP_CPP([strstr],[
$curl_includes_string
],[
AC_MSG_RESULT([yes])
tst_proto_strstr="yes"
],[
AC_MSG_RESULT([no])
tst_proto_strstr="no"
])
fi
#
if test "$tst_proto_strstr" = "yes"; then
AC_MSG_CHECKING([if strstr is compilable])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_string
]],[[
if(0 != strstr(0, 0))
return 1;
]])
],[
AC_MSG_RESULT([yes])
tst_compi_strstr="yes"
],[
AC_MSG_RESULT([no])
tst_compi_strstr="no"
])
fi
#
if test "$tst_compi_strstr" = "yes"; then
AC_MSG_CHECKING([if strstr usage allowed])
if test "x$curl_disallow_strstr" != "xyes"; then
AC_MSG_RESULT([yes])
tst_allow_strstr="yes"
else
AC_MSG_RESULT([no])
tst_allow_strstr="no"
fi
fi
#
AC_MSG_CHECKING([if strstr might be used])
if test "$tst_links_strstr" = "yes" &&
test "$tst_proto_strstr" = "yes" &&
test "$tst_compi_strstr" = "yes" &&
test "$tst_allow_strstr" = "yes"; then
AC_MSG_RESULT([yes])
AC_DEFINE_UNQUOTED(HAVE_STRSTR, 1,
[Define to 1 if you have the strstr function.])
ac_cv_func_strstr="yes"
else
AC_MSG_RESULT([no])
ac_cv_func_strstr="no"
fi
])
dnl CURL_CHECK_FUNC_STRTOK_R dnl CURL_CHECK_FUNC_STRTOK_R
dnl ------------------------------------------------- dnl -------------------------------------------------
dnl Verify if strtok_r is available, prototyped, and dnl Verify if strtok_r is available, prototyped, and