mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-03 03:20:57 +00:00
BuildSystem: Fix misdetection of gethostbyname_r() on NetBSD
Fix the configure script not to detect the presence of gethostbyname_r() on NetBSD incorrectly. NetBSD includes it as an internal libc symbol that is not exposed in system headers and that is incompatible with other implementations. In order to avoid misdetecting it, perform the symbol check only if the declaration is found in the public header first. ASTERISK-29817 Change-Id: Iafa359b09908251bcd299ff54be003ea129b9eda
This commit is contained in:
committed by
Joshua Colp
parent
eef29d24e1
commit
7b1e5fa34a
50
configure.ac
50
configure.ac
@@ -952,28 +952,38 @@ AC_LINK_IFELSE(
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
|
||||
# some systems already have gethostbyname_r so we don't need to build ours in main/utils.c
|
||||
AC_SEARCH_LIBS(gethostbyname_r, [socket nsl])
|
||||
|
||||
AC_MSG_CHECKING(for gethostbyname_r with 6 arguments)
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM([#include <stdlib.h>
|
||||
#include <netdb.h>],
|
||||
[struct hostent *he = gethostbyname_r((const char *)NULL, (struct hostent *)NULL, (char *)NULL, (int)0, (struct hostent **)NULL, (int *)NULL);])],
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R_6], 1, [Define to 1 if your system has gethostbyname_r with 6 arguments.]),
|
||||
AC_MSG_RESULT(no)
|
||||
# NetBSD libc ships with an internal-only incompatible symbol gethostbyname_r
|
||||
AC_CHECK_DECLS([gethostbyname_r],
|
||||
[have_gethostbyname_r_public_declaration=yes],
|
||||
[have_gethostbyname_r_public_declaration=no],
|
||||
[#include <stdlib.h>
|
||||
#include <netdb.h>]
|
||||
)
|
||||
|
||||
AC_MSG_CHECKING(for gethostbyname_r with 5 arguments)
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM([#include <stdlib.h>
|
||||
#include <netdb.h>],
|
||||
[struct hostent *he = gethostbyname_r((const char *)NULL, (struct hostent *)NULL, (char *)NULL, (int)0, (int *)NULL);])],
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R_5], 1, [Define to 1 if your system has gethostbyname_r with 5 arguments.]),
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
if test "x$have_gethostbyname_r_public_declaration" = "xyes"; then
|
||||
# some systems already have gethostbyname_r so we don't need to build ours in main/utils.c
|
||||
AC_SEARCH_LIBS(gethostbyname_r, [socket nsl])
|
||||
|
||||
AC_MSG_CHECKING(for gethostbyname_r with 6 arguments)
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM([#include <stdlib.h>
|
||||
#include <netdb.h>],
|
||||
[struct hostent *he = gethostbyname_r((const char *)NULL, (struct hostent *)NULL, (char *)NULL, (int)0, (struct hostent **)NULL, (int *)NULL);])],
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R_6], 1, [Define to 1 if your system has gethostbyname_r with 6 arguments.]),
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
|
||||
AC_MSG_CHECKING(for gethostbyname_r with 5 arguments)
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM([#include <stdlib.h>
|
||||
#include <netdb.h>],
|
||||
[struct hostent *he = gethostbyname_r((const char *)NULL, (struct hostent *)NULL, (char *)NULL, (int)0, (int *)NULL);])],
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE([HAVE_GETHOSTBYNAME_R_5], 1, [Define to 1 if your system has gethostbyname_r with 5 arguments.]),
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
fi
|
||||
|
||||
AC_CHECK_HEADER([byteswap.h], [AC_DEFINE_UNQUOTED([HAVE_BYTESWAP_H], 1, [Define to 1 if byteswap.h macros are available.])])
|
||||
|
||||
|
Reference in New Issue
Block a user