diff options
Diffstat (limited to 'src/network/configure.cmake')
-rw-r--r-- | src/network/configure.cmake | 243 |
1 files changed, 92 insertions, 151 deletions
diff --git a/src/network/configure.cmake b/src/network/configure.cmake index fcdf46f955..cda444b873 100644 --- a/src/network/configure.cmake +++ b/src/network/configure.cmake @@ -1,4 +1,5 @@ - +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause #### Inputs @@ -6,59 +7,12 @@ #### Libraries +qt_find_package(WrapBrotli PROVIDED_TARGETS WrapBrotli::WrapBrotliDec MODULE_NAME network QMAKE_LIB brotli) qt_find_package(Libproxy PROVIDED_TARGETS PkgConfig::Libproxy MODULE_NAME network QMAKE_LIB libproxy) -qt_find_package(WrapOpenSSLHeaders PROVIDED_TARGETS WrapOpenSSLHeaders::WrapOpenSSLHeaders MODULE_NAME network QMAKE_LIB openssl_headers) -# openssl_headers -qt_config_compile_test(openssl_headers - LIBRARIES - WrapOpenSSLHeaders::WrapOpenSSLHeaders - CODE -" -#include <openssl/ssl.h> -#include <openssl/opensslv.h> -#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10101000L -# error OpenSSL >= 1.1.1 is required -#endif -#if !defined(OPENSSL_NO_EC) && !defined(SSL_CTRL_SET_CURVES) -# error OpenSSL was reported as >= 1.1.1 but is missing required features, possibly it is libressl which is unsupported -#endif -int main(int argc, char **argv) -{ - (void)argc; (void)argv; - /* BEGIN TEST: */ - - /* END TEST: */ - return 0; -} -") - -qt_find_package(WrapOpenSSL PROVIDED_TARGETS WrapOpenSSL::WrapOpenSSL MODULE_NAME network QMAKE_LIB openssl) -# openssl -qt_config_compile_test(openssl - LIBRARIES - WrapOpenSSL::WrapOpenSSL - CODE -" -#include <openssl/ssl.h> -#include <openssl/opensslv.h> -#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10101000L -# error OpenSSL >= 1.1.1 is required -#endif -#if !defined(OPENSSL_NO_EC) && !defined(SSL_CTRL_SET_CURVES) -# error OpenSSL was reported as >= 1.1.1 but is missing required features, possibly it is libressl which is unsupported -#endif -int main(int argc, char **argv) -{ - (void)argc; (void)argv; - /* BEGIN TEST: */ -SSL_free(SSL_new(0)); - /* END TEST: */ - return 0; -} -") - qt_find_package(GSSAPI PROVIDED_TARGETS GSSAPI::GSSAPI MODULE_NAME network QMAKE_LIB gssapi) - +qt_find_package(GLIB2 OPTIONAL_COMPONENTS GOBJECT PROVIDED_TARGETS GLIB2::GOBJECT MODULE_NAME core QMAKE_LIB gobject) +qt_find_package(GLIB2 OPTIONAL_COMPONENTS GIO PROVIDED_TARGETS GLIB2::GIO MODULE_NAME core QMAKE_LIB gio) +qt_find_package(WrapResolv PROVIDED_TARGETS WrapResolv::WrapResolv MODULE_NAME network QMAKE_LIB libresolv) #### Tests @@ -66,15 +20,13 @@ qt_find_package(GSSAPI PROVIDED_TARGETS GSSAPI::GSSAPI MODULE_NAME network QMAKE qt_config_compile_test(getifaddrs LABEL "getifaddrs()" CODE -" -#include <sys/types.h> +"#include <sys/types.h> #include <sys/socket.h> #include <net/if.h> #include <ifaddrs.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ ifaddrs *list; getifaddrs(&list); @@ -89,14 +41,12 @@ freeifaddrs(list); qt_config_compile_test(ipv6ifname LABEL "IPv6 ifname" CODE -" -#include <sys/types.h> +"#include <sys/types.h> #include <sys/socket.h> #include <net/if.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ char buf[IFNAMSIZ]; if_nametoindex(\"eth0\"); @@ -112,15 +62,13 @@ if_freenameindex(if_nameindex()); qt_config_compile_test(linux_netlink LABEL "Linux AF_NETLINK sockets" CODE -" -#include <asm/types.h> +"#include <asm/types.h> #include <linux/netlink.h> #include <linux/rtnetlink.h> #include <sys/socket.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ struct rtattr rta = { }; struct ifinfomsg ifi = {}; @@ -136,19 +84,36 @@ ci.ifa_prefered = ci.ifa_valid = 0; } ") +# res_setserver +qt_config_compile_test(res_setservers + LABEL "res_setservers()" + LIBRARIES + WrapResolv::WrapResolv + CODE +"#include <sys/types.h> +#include <netinet/in.h> +#include <resolv.h> +int main() +{ + union res_sockaddr_union sa; + res_state s = nullptr; + res_setservers(s, &sa, 1); + return 0; +} +" +) + # sctp qt_config_compile_test(sctp LABEL "SCTP support" CODE -" -#include <sys/types.h> +"#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/sctp.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ sctp_initmsg sctpInitMsg; socklen_t sctpInitMsgSize = sizeof(sctpInitMsg); @@ -166,16 +131,14 @@ qt_config_compile_test(dtls LIBRARIES WrapOpenSSLHeaders::WrapOpenSSLHeaders CODE -" -#include <openssl/ssl.h> +"#include <openssl/ssl.h> #if defined(OPENSSL_NO_DTLS) || !defined(DTLS1_2_VERSION) # error OpenSSL without DTLS support #endif -int main(int argc, char **argv) + +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ - /* END TEST: */ return 0; } @@ -187,33 +150,30 @@ qt_config_compile_test(ocsp LIBRARIES WrapOpenSSLHeaders::WrapOpenSSLHeaders CODE -" -#include <openssl/ssl.h> +"#include <openssl/ssl.h> #include <openssl/ocsp.h> #if defined(OPENSSL_NO_OCSP) || defined(OPENSSL_NO_TLSEXT) # error OpenSSL without OCSP stapling #endif -int main(int argc, char **argv) + +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ - /* END TEST: */ return 0; } ") -# netlistmgr -qt_config_compile_test(netlistmgr +# networklistmanager +qt_config_compile_test(networklistmanager LABEL "Network List Manager" CODE -" -#include <netlistmgr.h> +"#include <netlistmgr.h> +#include <ocidl.h> #include <wrl/client.h> -int main(int argc, char **argv) +int main(void) { - (void)argc; (void)argv; /* BEGIN TEST: */ using namespace Microsoft::WRL; ComPtr<INetworkListManager> networkListManager; @@ -231,22 +191,21 @@ connectionPointContainer->FindConnectionPoint(IID_INetworkConnectionEvents, &con #### Features -qt_feature("corewlan" PUBLIC PRIVATE - LABEL "CoreWLan" - CONDITION libs.corewlan OR FIXME - EMIT_IF APPLE -) -qt_feature_definition("corewlan" "QT_NO_COREWLAN" NEGATE VALUE "1") qt_feature("getifaddrs" PUBLIC LABEL "getifaddrs()" - CONDITION TEST_getifaddrs + CONDITION VXWORKS OR UNIX AND NOT QT_FEATURE_linux_netlink AND TEST_getifaddrs ) qt_feature_definition("getifaddrs" "QT_NO_GETIFADDRS" NEGATE VALUE "1") qt_feature("ipv6ifname" PUBLIC LABEL "IPv6 ifname" - CONDITION TEST_ipv6ifname + CONDITION VXWORKS OR UNIX AND NOT QT_FEATURE_linux_netlink AND 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 @@ -254,38 +213,22 @@ qt_feature("libproxy" PRIVATE ) qt_feature("linux-netlink" PRIVATE LABEL "Linux AF_NETLINK" - CONDITION LINUX AND TEST_linux_netlink + CONDITION LINUX AND NOT ANDROID AND TEST_linux_netlink ) -qt_feature("openssl" PRIVATE - LABEL "OpenSSL" - CONDITION QT_FEATURE_openssl_runtime OR QT_FEATURE_openssl_linked - ENABLE false -) -qt_feature_definition("openssl" "QT_NO_OPENSSL" NEGATE) -qt_feature_config("openssl" QMAKE_PUBLIC_QT_CONFIG) -qt_feature("openssl-runtime" - AUTODETECT NOT WASM - CONDITION NOT QT_FEATURE_securetransport AND NOT QT_FEATURE_schannel AND TEST_openssl_headers - ENABLE INPUT_openssl STREQUAL 'yes' OR INPUT_openssl STREQUAL 'runtime' - DISABLE INPUT_openssl STREQUAL 'no' OR INPUT_openssl STREQUAL 'linked' OR INPUT_ssl STREQUAL 'no' -) -qt_feature("openssl-linked" PRIVATE - LABEL " Qt directly linked to OpenSSL" - AUTODETECT OFF - CONDITION NOT QT_FEATURE_securetransport AND NOT QT_FEATURE_schannel AND TEST_openssl - ENABLE INPUT_openssl STREQUAL 'linked' +qt_feature("res_setservers" PRIVATE + LABEL "res_setservers()" + CONDITION QT_FEATURE_libresolv AND TEST_res_setservers ) -qt_feature_definition("openssl-linked" "QT_LINKED_OPENSSL") qt_feature("securetransport" PUBLIC LABEL "SecureTransport" - CONDITION APPLE AND ( INPUT_openssl STREQUAL '' OR INPUT_openssl STREQUAL 'no' ) - DISABLE INPUT_securetransport STREQUAL 'no' OR INPUT_ssl STREQUAL 'no' + CONDITION APPLE + DISABLE INPUT_ssl STREQUAL 'no' ) qt_feature_definition("securetransport" "QT_SECURETRANSPORT") qt_feature("schannel" PUBLIC LABEL "Schannel" - CONDITION INPUT_schannel STREQUAL 'yes' AND WIN32 AND ( INPUT_openssl STREQUAL '' OR INPUT_openssl STREQUAL 'no' ) - DISABLE INPUT_schannel STREQUAL 'no' OR INPUT_ssl STREQUAL 'no' + CONDITION WIN32 + DISABLE INPUT_ssl STREQUAL 'no' ) qt_feature_definition("schannel" "QT_SCHANNEL") qt_feature("ssl" PUBLIC @@ -303,11 +246,7 @@ qt_feature("ocsp" PUBLIC SECTION "Networking" LABEL "OCSP-stapling" PURPOSE "Provides OCSP stapling support" - CONDITION QT_FEATURE_opensslv11 AND TEST_ocsp -) -qt_feature("opensslv11" PUBLIC - LABEL "OpenSSL 1.1" - CONDITION QT_FEATURE_openssl + CONDITION QT_FEATURE_openssl AND TEST_ocsp ) qt_feature("sctp" PUBLIC LABEL "SCTP" @@ -318,14 +257,6 @@ qt_feature_definition("sctp" "QT_NO_SCTP" NEGATE VALUE "1") qt_feature("system-proxies" PRIVATE LABEL "Use system proxies" ) -qt_feature("ftp" PUBLIC - SECTION "Networking" - LABEL "FTP" - PURPOSE "Provides support for the File Transfer Protocol in QNetworkAccessManager." - AUTODETECT OFF - CONDITION QT_FEATURE_textdate AND QT_FEATURE_regularexpression -) -qt_feature_definition("ftp" "QT_NO_FTP" NEGATE VALUE "1") qt_feature("http" PUBLIC SECTION "Networking" LABEL "HTTP" @@ -366,6 +297,13 @@ qt_feature("networkdiskcache" PUBLIC CONDITION QT_FEATURE_temporaryfile ) qt_feature_definition("networkdiskcache" "QT_NO_NETWORKDISKCACHE" NEGATE VALUE "1") +qt_feature("brotli" PUBLIC + SECTION "Networking" + LABEL "Brotli Decompression Support" + PURPOSE "Support for downloading and decompressing resources compressed with Brotli through QNetworkAccessManager." + CONDITION WrapBrotli_FOUND +) +qt_feature_definition("brotli" "QT_NO_BROTLI" NEGATE VALUE "1") qt_feature("localserver" PUBLIC SECTION "Networking" LABEL "QLocalServer" @@ -377,6 +315,7 @@ qt_feature("dnslookup" PUBLIC SECTION "Networking" LABEL "QDnsLookup" PURPOSE "Provides API for DNS lookups." + CONDITION QT_FEATURE_thread AND NOT INTEGRITY ) qt_feature("gssapi" PUBLIC SECTION "Networking" @@ -392,22 +331,34 @@ qt_feature("sspi" PUBLIC CONDITION WIN32 ) qt_feature_definition("sspi" "QT_NO_SSPI" NEGATE VALUE "1") -qt_feature("netlistmgr" PRIVATE +qt_feature("networklistmanager" PRIVATE SECTION "Networking" LABEL "Network List Manager" PURPOSE "Use Network List Manager to keep track of network connectivity" - CONDITION WIN32 AND TEST_netlistmgr + CONDITION WIN32 AND TEST_networklistmanager ) qt_feature("topleveldomain" PUBLIC SECTION "Networking" - LABEL "qTopLevelDomain()" - PURPOSE "Provides support for extracting the top level domain from URLs. If enabled, a binary dump of the Public Suffix List (http://www.publicsuffix.org, Mozilla License) is included. The data is then also used in QNetworkCookieJar::validateCookie." + LABEL "qIsEffectiveTLD()" + PURPOSE "Provides support for checking if a domain is a top level domain. If enabled, a binary dump of the Public Suffix List (http://www.publicsuffix.org, Mozilla License) is included. The data is used in QNetworkCookieJar." + AUTODETECT NOT WASM + DISABLE INPUT_publicsuffix STREQUAL "no" ) -qt_configure_add_summary_section(NAME "Qt Network") -qt_configure_add_summary_entry( - ARGS "corewlan" - CONDITION APPLE +qt_feature("publicsuffix-qt" PRIVATE + LABEL " Built-in publicsuffix database" + CONDITION QT_FEATURE_topleveldomain + ENABLE INPUT_publicsuffix STREQUAL "qt" OR INPUT_publicsuffix STREQUAL "all" + DISABLE INPUT_publicsuffix STREQUAL "system" +) +qt_feature("publicsuffix-system" PRIVATE + LABEL " System publicsuffix database" + CONDITION QT_FEATURE_topleveldomain + AUTODETECT LINUX + ENABLE INPUT_publicsuffix STREQUAL "system" OR INPUT_publicsuffix STREQUAL "all" + DISABLE INPUT_publicsuffix STREQUAL "qt" ) + +qt_configure_add_summary_section(NAME "Qt Network") qt_configure_add_summary_entry(ARGS "getifaddrs") qt_configure_add_summary_entry(ARGS "ipv6ifname") qt_configure_add_summary_entry(ARGS "libproxy") @@ -423,23 +374,13 @@ qt_configure_add_summary_entry( ARGS "schannel" CONDITION WIN32 ) -qt_configure_add_summary_entry(ARGS "openssl") -qt_configure_add_summary_entry(ARGS "openssl-linked") -qt_configure_add_summary_entry(ARGS "opensslv11") qt_configure_add_summary_entry(ARGS "dtls") qt_configure_add_summary_entry(ARGS "ocsp") -qt_configure_add_summary_entry(ARGS "ftp") qt_configure_add_summary_entry(ARGS "sctp") qt_configure_add_summary_entry(ARGS "system-proxies") qt_configure_add_summary_entry(ARGS "gssapi") +qt_configure_add_summary_entry(ARGS "brotli") +qt_configure_add_summary_entry(ARGS "topleveldomain") +qt_configure_add_summary_entry(ARGS "publicsuffix-qt") +qt_configure_add_summary_entry(ARGS "publicsuffix-system") qt_configure_end_summary_section() # end of "Qt Network" section -qt_configure_add_report_entry( - TYPE NOTE - MESSAGE "When linking against OpenSSL, you can override the default library names through OPENSSL_LIBS. For example: OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto' ./configure -openssl-linked" - CONDITION NOT ANDROID AND QT_FEATURE_openssl_linked AND TEST_openssl.source NOT = 0 AND INPUT_openssl.prefix STREQUAL '' AND INPUT_openssl.libs STREQUAL '' AND INPUT_openssl.libs.debug STREQUAL '' OR FIXME -) -qt_configure_add_report_entry( - TYPE WARNING - MESSAGE "Some of libproxy's plugins may use incompatible Qt versions. Some platforms and distributions ship libproxy with plugins, such as config_kde4.so, that are linked against old versions of Qt, and libproxy loads these plugins automatically when initialized. If Qt is not in a namespace, that loading causes a crash. Even if the systems on which you build and test have no such plugins, your users' systems may have them. We therefore recommend that you combine -libproxy with -qtnamespace when configuring Qt." - CONDITION QT_FEATURE_libproxy AND INPUT_qt_namespace STREQUAL '' -) |