From: Tom Lane Date: Wed, 8 Nov 2017 22:47:14 +0000 (-0500) Subject: Allow --with-bonjour to work with non-macOS implementations of Bonjour. X-Git-Tag: REL9_6_7~87 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=08d440b5cb223f76723a955594b7b8fa555edfe3;p=postgresql Allow --with-bonjour to work with non-macOS implementations of Bonjour. On macOS the relevant functions require no special library, but elsewhere we need to pull in libdns_sd. Back-patch to supported branches. No docs change since the docs do not suggest that this is a Mac-only feature. Luke Lonergan Discussion: https://postgr.es/m/2D8331C5-D64F-44C1-8717-63EDC6EAF7EB@brightforge.com --- diff --git a/configure b/configure index f10dee827f..38953a55ae 100755 --- a/configure +++ b/configure @@ -10736,6 +10736,64 @@ else fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing DNSServiceRefSockFD" >&5 +$as_echo_n "checking for library containing DNSServiceRefSockFD... " >&6; } +if ${ac_cv_search_DNSServiceRefSockFD+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char DNSServiceRefSockFD (); +int +main () +{ +return DNSServiceRefSockFD (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dns_sd; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_DNSServiceRefSockFD=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_DNSServiceRefSockFD+:} false; then : + break +fi +done +if ${ac_cv_search_DNSServiceRefSockFD+:} false; then : + +else + ac_cv_search_DNSServiceRefSockFD=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_DNSServiceRefSockFD" >&5 +$as_echo "$ac_cv_search_DNSServiceRefSockFD" >&6; } +ac_res=$ac_cv_search_DNSServiceRefSockFD +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + as_fn_error $? "could not find function 'DNSServiceRefSockFD' required for Bonjour" "$LINENO" 5 +fi + fi # for contrib/uuid-ossp diff --git a/configure.in b/configure.in index 0e08b97dd4..c43648283a 100644 --- a/configure.in +++ b/configure.in @@ -1115,8 +1115,8 @@ if test "$with_openssl" = yes ; then AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])]) AC_CHECK_LIB(ssl, SSL_new, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])]) else - AC_SEARCH_LIBS(CRYPTO_new_ex_data, eay32 crypto, [], [AC_MSG_ERROR([library 'eay32' or 'crypto' is required for OpenSSL])]) - AC_SEARCH_LIBS(SSL_new, ssleay32 ssl, [], [AC_MSG_ERROR([library 'ssleay32' or 'ssl' is required for OpenSSL])]) + AC_SEARCH_LIBS(CRYPTO_new_ex_data, [eay32 crypto], [], [AC_MSG_ERROR([library 'eay32' or 'crypto' is required for OpenSSL])]) + AC_SEARCH_LIBS(SSL_new, [ssleay32 ssl], [], [AC_MSG_ERROR([library 'ssleay32' or 'ssl' is required for OpenSSL])]) fi AC_CHECK_FUNCS([SSL_get_current_compression]) # Functions introduced in OpenSSL 1.1.0. We used to check for @@ -1322,6 +1322,8 @@ fi if test "$with_bonjour" = yes ; then AC_CHECK_HEADER(dns_sd.h, [], [AC_MSG_ERROR([header file is required for Bonjour])]) + AC_SEARCH_LIBS(DNSServiceRefSockFD, dns_sd, [], + [AC_MSG_ERROR([could not find function 'DNSServiceRefSockFD' required for Bonjour])]) fi # for contrib/uuid-ossp