CMake: remove "res_ninit" feature and collapse to just "libresolv"

Testing for "res_ninit" when WrapResolv.cmake has already checked for
far more complex functions was pointless. Instead, just accept the
library that was found by find_package() as good enough and rename the
feature as "libresolv".

Amends 4a46ba1209907796f4a14f6feb35ed4d70155d7d and
68b625901f9eb7c34e3d7aa302e1c0a454d3190b.

Change-Id: Ib5ce7a497e034ebabb2cfffd1762c0afa2fac6e0
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
Thiago Macieira 2023-05-26 10:11:11 -07:00
parent 369952fbd7
commit 26dd7fe4ed
5 changed files with 13 additions and 32 deletions

View File

@ -213,7 +213,7 @@ qt_internal_extend_target(Network CONDITION APPLE
${FWCFNetwork}
)
qt_internal_extend_target(Network CONDITION QT_FEATURE_dnslookup AND TEST_res_ninit
qt_internal_extend_target(Network CONDITION QT_FEATURE_dnslookup AND QT_FEATURE_libresolv
SOURCES
kernel/qdnslookup_unix.cpp
LIBRARIES
@ -225,7 +225,7 @@ qt_internal_extend_target(Network CONDITION QT_FEATURE_dnslookup AND WIN32
kernel/qdnslookup_win.cpp
)
qt_internal_extend_target(Network CONDITION QT_FEATURE_dnslookup AND NOT TEST_res_ninit AND NOT WIN32
qt_internal_extend_target(Network CONDITION QT_FEATURE_dnslookup AND NOT QT_FEATURE_libresolv AND NOT WIN32
SOURCES
kernel/qdnslookup_dummy.cpp
)

View File

@ -100,25 +100,6 @@ ci.ifa_prefered = ci.ifa_valid = 0;
}
")
# res_ninit
qt_config_compile_test(res_ninit
LABEL "res_ninit()"
LIBRARIES
WrapResolv::WrapResolv
CODE
"#include <sys/types.h>
#include <netinet/in.h>
#include <resolv.h>
int main()
{
res_state state;
res_ninit(state);
res_nclose(state);
return 0;
}
"
)
# res_setserver
qt_config_compile_test(res_setservers
LABEL "res_setservers()"
@ -240,6 +221,11 @@ qt_feature("ipv6ifname" PUBLIC
CONDITION TEST_ipv6ifname
)
qt_feature_definition("ipv6ifname" "QT_NO_IPV6IFNAME" NEGATE VALUE "1")
qt_feature("libresolv" PRIVATE
LABEL "libresolv"
CONDITION WrapResolv_FOUND
AUTODETECT UNIX
)
qt_feature("libproxy" PRIVATE
LABEL "libproxy"
AUTODETECT OFF
@ -249,14 +235,9 @@ qt_feature("linux-netlink" PRIVATE
LABEL "Linux AF_NETLINK"
CONDITION LINUX AND NOT ANDROID AND TEST_linux_netlink
)
qt_feature("res_ninit" PRIVATE
LABEL "res_ninit()"
CONDITION TEST_res_ninit
AUTODETECT UNIX
)
qt_feature("res_setservers" PRIVATE
LABEL "res_setservers()"
CONDITION QT_FEATURE_res_ninit AND TEST_res_setservers
CONDITION QT_FEATURE_libresolv AND TEST_res_setservers
)
qt_feature("securetransport" PUBLIC
LABEL "SecureTransport"

View File

@ -11,7 +11,7 @@
#include <private/qnativesocketengine_p.h> // for setSockAddr
#include <private/qtnetwork-config_p.h>
QT_REQUIRE_CONFIG(res_ninit);
QT_REQUIRE_CONFIG(libresolv);
#include <sys/types.h>
#include <netinet/in.h>

View File

@ -49,7 +49,7 @@ static void maybeRefreshResolver()
return;
#endif
#if QT_CONFIG(res_ninit)
#if QT_CONFIG(libresolv)
// OSes known or thought to reach here: AIX, NetBSD, Solaris,
// Linux with MUSL (though res_init() does nothing and is unnecessary)
@ -92,7 +92,7 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName)
QString QHostInfo::localDomainName()
{
#if QT_CONFIG(res_ninit)
#if QT_CONFIG(libresolv)
auto domainNameFromRes = [](res_state r) {
QString domainName;
if (r->defdname[0])
@ -111,7 +111,7 @@ QString QHostInfo::localDomainName()
// using thread-unsafe version
maybeRefreshResolver();
return domainNameFromRes(&_res);
#endif // !QT_CONFIG(res_ninit)
#endif // !QT_CONFIG(libresolv)
// nothing worked, try doing it by ourselves:
QFile resolvconf;

View File

@ -1,7 +1,7 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
if(WIN32 OR TEST_res_ninit)
if(QT_FEATURE_qdnslookup)
add_subdirectory(qdnslookup)
add_subdirectory(qdnslookup_appless)
endif()