With glibc 2.24 all res_* symbols moved from libresolv to libc. This means
that socket_wrapper is not able to do the traffic to the DNS server. This
leaves us only with DNS faking.
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
find_library(RESOLV_LIRBRARY resolv)
if (RESOLV_LIRBRARY)
find_library(RESOLV_LIRBRARY resolv)
if (RESOLV_LIRBRARY)
- set(HAVE_LIBRESOLV TRUE)
+ check_function_exists(res_nquery HAVE_LIBC_RES_INIT)
+ check_function_exists(__res_query HAVE_LIBC__RES_INIT)
+
+ if (NOT HAVE_LIBC_RES_INIT AND NOT HAVE_LIBC__RES_INIT)
+ set(CMAKE_REQUIRED_LIBRARIES ${RESOLV_LIRBRARY})
+ check_function_exists(res_query HAVE_RES_QUERY)
+ check_function_exists(__res_query HAVE___RES_QUERY)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+
+ if (HAVE_RES_QUERY OR HAVE___RES_QUERY)
+ set(HAVE_LIBRESOLV 1)
+
+ endif()
+ endif()
# If we have a libresolv, we need to check functions linking the library
list(APPEND _REQUIRED_LIBRARIES ${RESOLV_LIRBRARY})
# If we have a libresolv, we need to check functions linking the library
list(APPEND _REQUIRED_LIBRARIES ${RESOLV_LIRBRARY})
-else()
- message(STATUS "libresolv not found on ${CMAKE_SYSTEM_NAME}: Only dns faking will be available")
endif()
set(CMAKE_REQUIRED_LIBRARIES ${RESOLV_LIRBRARY})
endif()
set(CMAKE_REQUIRED_LIBRARIES ${RESOLV_LIRBRARY})
# ENDIAN
test_big_endian(WORDS_BIGENDIAN)
# ENDIAN
test_big_endian(WORDS_BIGENDIAN)
+if (NOT HAVE_LIBRESOLV)
+ message(STATUS "Limited features: Only dns faking will be available")
+endif()
+
set(RWRAP_REQUIRED_LIBRARIES ${_REQUIRED_LIBRARIES} CACHE INTERNAL "resolv_wrapper required system libraries")
set(RWRAP_REQUIRED_LIBRARIES ${_REQUIRED_LIBRARIES} CACHE INTERNAL "resolv_wrapper required system libraries")