| { |
| "module": "network", |
| "depends": [ |
| "core" |
| ], |
| "testDir": "../../config.tests", |
| |
| "commandline": { |
| "assignments": { |
| "OPENSSL_PATH": "openssl.prefix" |
| }, |
| "options": { |
| "libproxy": "boolean", |
| "openssl": { "type": "optionalString", "values": [ "no", "yes", "linked", "runtime" ] }, |
| "openssl-linked": { "type": "void", "name": "openssl", "value": "linked" }, |
| "openssl-runtime": { "type": "void", "name": "openssl", "value": "runtime" }, |
| "dtls": "boolean", |
| "ocsp": "boolean", |
| "sctp": "boolean", |
| "securetransport": "boolean", |
| "schannel": "boolean", |
| "ssl": "boolean", |
| "system-proxies": "boolean" |
| } |
| }, |
| |
| "libraries": { |
| "corewlan": { |
| "label": "CoreWLan", |
| "export": "", |
| "test": { |
| "lang": "objc++", |
| "include": [ "CoreWLAN/CoreWLAN.h", "CoreWLAN/CWInterface.h" ], |
| "main": "[CWInterface interfaceWithName:@\"en2\"];" |
| }, |
| "sources": [ |
| "-framework CoreWLAN -framework Foundation" |
| ] |
| }, |
| "network": { |
| "sources": [ |
| { "type": "makeSpec", "spec": "NETWORK" } |
| ] |
| }, |
| "libproxy": { |
| "label": "libproxy", |
| "test": { |
| "main": [ |
| "pxProxyFactory *factory = px_proxy_factory_new();", |
| "px_proxy_factory_get_proxies(factory, \"http://qt-project.org\");", |
| "px_proxy_factory_free(factory);" |
| ] |
| }, |
| "headers": "proxy.h", |
| "sources": [ |
| "-lproxy" |
| ] |
| }, |
| "openssl_headers": { |
| "label": "OpenSSL Headers", |
| "export": "openssl", |
| "test": { |
| "tail": [ |
| "#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's libressl which is unsupported", |
| "#endif" |
| ] |
| }, |
| "headers": [ "openssl/ssl.h", "openssl/opensslv.h" ], |
| "sources": [ |
| { |
| "comment": "placeholder for OPENSSL_PATH", |
| "libs": "" |
| } |
| ] |
| }, |
| "openssl": { |
| "label": "OpenSSL", |
| "test": { |
| "inherit": "openssl_headers", |
| "main": "SSL_free(SSL_new(0));" |
| }, |
| "sources": [ |
| { "type": "openssl" }, |
| { |
| "libs": "-lssleay32 -llibeay32 -lUser32 -lWs2_32 -lAdvapi32 -lGdi32", |
| "condition": "config.win32" |
| }, |
| { |
| "libs": "-llibssl -llibcrypto -lUser32 -lWs2_32 -lAdvapi32 -lCrypt32", |
| "condition": "config.msvc" |
| }, |
| { |
| "libs": "-lssl_arm64-v8a -lcrypto_arm64-v8a", |
| "condition": "config.android" |
| }, |
| { |
| "libs": "-lssl -lcrypto", |
| "condition": "!config.msvc" |
| } |
| ] |
| }, |
| "gssapi": { |
| "label": "KRB5 GSSAPI Support", |
| "test": { |
| "head": [ |
| "#if defined(__APPLE__) && (defined(__GNUC__) || defined(__xlC__) || defined(__xlc__))", |
| "# include <TargetConditionals.h>", |
| "# if defined(TARGET_OS_MAC) && TARGET_OS_MAC", |
| "# include <GSS/GSS.h>", |
| "# endif", |
| "#else", |
| "# include <gssapi/gssapi.h>", |
| "#endif" |
| ], |
| "main": [ |
| "gss_ctx_id_t ctx;", |
| "gss_context_time(nullptr, ctx, nullptr);" |
| ] |
| }, |
| "sources": [ |
| { "libs": "-framework GSS", "condition": "config.darwin" }, |
| { "type": "pkgConfig", "args": "krb5-gssapi" }, |
| "-lgssapi_krb5" |
| ] |
| } |
| }, |
| |
| "tests": { |
| "getifaddrs": { |
| "label": "getifaddrs()", |
| "type": "compile", |
| "test": { |
| "include": [ "sys/types.h", "sys/socket.h", "net/if.h", "ifaddrs.h" ], |
| "main": [ |
| "ifaddrs *list;", |
| "getifaddrs(&list);", |
| "freeifaddrs(list);" |
| ] |
| }, |
| "use": "network" |
| }, |
| "ipv6ifname": { |
| "label": "IPv6 ifname", |
| "type": "compile", |
| "test": { |
| "include": [ "sys/types.h", "sys/socket.h", "net/if.h" ], |
| "main": [ |
| "char buf[IFNAMSIZ];", |
| "if_nametoindex(\"eth0\");", |
| "if_indextoname(1, buf);", |
| "if_freenameindex(if_nameindex());" |
| ] |
| }, |
| "use": "network" |
| }, |
| "linux-netlink": { |
| "label": "Linux AF_NETLINK sockets", |
| "type": "compile", |
| "test": { |
| "include": [ "asm/types.h", "linux/netlink.h", "linux/rtnetlink.h", "sys/socket.h" ], |
| "main": [ |
| "struct rtattr rta = { };", |
| "struct ifinfomsg ifi = {};", |
| "struct ifaddrmsg ifa = {};", |
| "struct ifa_cacheinfo ci;", |
| "ci.ifa_prefered = ci.ifa_valid = 0;", |
| "(void)RTM_NEWLINK; (void)RTM_NEWADDR;", |
| "(void)IFLA_ADDRESS; (void)IFLA_IFNAME;", |
| "(void)IFA_ADDRESS; (void)IFA_LABEL; (void)IFA_CACHEINFO;", |
| "(void)(IFA_F_SECONDARY | IFA_F_DEPRECATED | IFA_F_PERMANENT | IFA_F_MANAGETEMPADDR);" |
| ] |
| } |
| }, |
| "sctp": { |
| "label": "SCTP support", |
| "type": "compile", |
| "test": { |
| "include": [ "sys/types.h", "sys/socket.h", "netinet/in.h", "netinet/sctp.h" ], |
| "main": [ |
| "sctp_initmsg sctpInitMsg;", |
| "socklen_t sctpInitMsgSize = sizeof(sctpInitMsg);", |
| "(void) socket(PF_INET, SOCK_STREAM, IPPROTO_SCTP);", |
| "(void) getsockopt(-1, SOL_SCTP, SCTP_INITMSG, &sctpInitMsg, &sctpInitMsgSize);" |
| ] |
| }, |
| "use": "network" |
| }, |
| "dtls": { |
| "label": "DTLS support in OpenSSL", |
| "type": "compile", |
| "test": { |
| "include": "openssl/ssl.h", |
| "tail": [ |
| "#if defined(OPENSSL_NO_DTLS) || !defined(DTLS1_2_VERSION)", |
| "# error OpenSSL without DTLS support", |
| "#endif" |
| ] |
| }, |
| "use": "openssl" |
| }, |
| "ocsp": { |
| "label": "OCSP stapling support in OpenSSL", |
| "type": "compile", |
| "test": { |
| "include": ["openssl/ssl.h", "openssl/ocsp.h"], |
| "tail": [ |
| "#if defined(OPENSSL_NO_OCSP) || defined(OPENSSL_NO_TLSEXT)", |
| "# error OpenSSL without OCSP stapling", |
| "#endif" |
| ] |
| }, |
| "use": "openssl" |
| }, |
| "netlistmgr": { |
| "label": "Network List Manager", |
| "type": "compile", |
| "test": { |
| "include": [ "netlistmgr.h", "wrl/client.h" ], |
| "main": [ |
| "using namespace Microsoft::WRL;", |
| "ComPtr<INetworkListManager> networkListManager;", |
| "ComPtr<IConnectionPoint> connectionPoint;", |
| "ComPtr<IConnectionPointContainer> connectionPointContainer;", |
| "networkListManager.As(&connectionPointContainer);", |
| "connectionPointContainer->FindConnectionPoint(IID_INetworkConnectionEvents, &connectionPoint);" |
| ], |
| "qmake": "LIBS += -lOle32" |
| } |
| } |
| }, |
| |
| "features": { |
| "corewlan": { |
| "label": "CoreWLan", |
| "condition": "libs.corewlan", |
| "emitIf": "config.darwin", |
| "output": [ "feature", "privateFeature" ] |
| }, |
| "getifaddrs": { |
| "label": "getifaddrs()", |
| "condition": "tests.getifaddrs", |
| "output": [ "feature" ] |
| }, |
| "ipv6ifname": { |
| "label": "IPv6 ifname", |
| "condition": "tests.ipv6ifname", |
| "output": [ "feature" ] |
| }, |
| "libproxy": { |
| "label": "libproxy", |
| "autoDetect": false, |
| "condition": "libs.libproxy", |
| "output": [ "privateFeature" ] |
| }, |
| "linux-netlink": { |
| "label": "Linux AF_NETLINK", |
| "condition": "config.linux && tests.linux-netlink", |
| "output": [ "privateFeature" ] |
| }, |
| "openssl": { |
| "label": "OpenSSL", |
| "enable": "false", |
| "condition": "features.openssl-runtime || features.openssl-linked", |
| "output": [ |
| "privateFeature", |
| { "type": "publicQtConfig", "condition": "!features.openssl-linked" }, |
| { "type": "define", "negative": true, "name": "QT_NO_OPENSSL" } |
| ] |
| }, |
| "openssl-runtime": { |
| "autoDetect": "!config.winrt && !config.wasm", |
| "enable": "input.openssl == 'yes' || input.openssl == 'runtime'", |
| "disable": "input.openssl == 'no' || input.openssl == 'linked' || input.ssl == 'no'", |
| "condition": "!features.securetransport && !features.schannel && libs.openssl_headers" |
| }, |
| "openssl-linked": { |
| "label": " Qt directly linked to OpenSSL", |
| "autoDetect": false, |
| "enable": "input.openssl == 'linked'", |
| "condition": "!features.securetransport && !features.schannel && libs.openssl", |
| "output": [ |
| "privateFeature", |
| { "type": "define", "name": "QT_LINKED_OPENSSL" } |
| ] |
| }, |
| "securetransport": { |
| "label": "SecureTransport", |
| "disable": "input.securetransport == 'no' || input.ssl == 'no'", |
| "condition": "config.darwin && (input.openssl == '' || input.openssl == 'no')", |
| "output": [ |
| "publicFeature", |
| { "type": "define", "name": "QT_SECURETRANSPORT" } |
| ] |
| }, |
| "schannel": { |
| "label": "Schannel", |
| "disable": "input.schannel == 'no' || input.ssl == 'no'", |
| "condition": "input.schannel == 'yes' && config.win32 && !config.winrt && (input.openssl == '' || input.openssl == 'no')", |
| "output": [ |
| "publicFeature", |
| { "type": "define", "name": "QT_SCHANNEL" } |
| ] |
| }, |
| "ssl": { |
| "label": "SSL", |
| "condition": "config.winrt || features.securetransport || features.openssl || features.schannel", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "dtls": { |
| "label": "DTLS", |
| "purpose": "Provides a DTLS implementation", |
| "section": "Networking", |
| "condition": "features.openssl && features.udpsocket && tests.dtls", |
| "output": [ "publicFeature" ] |
| }, |
| "ocsp": { |
| "label": "OCSP-stapling", |
| "purpose": "Provides OCSP stapling support", |
| "section": "Networking", |
| "condition": "features.opensslv11 && tests.ocsp", |
| "output": [ "publicFeature" ] |
| }, |
| "opensslv11": { |
| "label": "OpenSSL 1.1", |
| "condition": "features.openssl", |
| "output": [ "publicFeature" ] |
| }, |
| "sctp": { |
| "label": "SCTP", |
| "autoDetect": false, |
| "condition": "tests.sctp", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "system-proxies": { |
| "label": "Use system proxies", |
| "output": [ "privateFeature" ] |
| }, |
| "ftp": { |
| "label": "FTP", |
| "purpose": "Provides support for the File Transfer Protocol in QNetworkAccessManager.", |
| "section": "Networking", |
| "condition": "features.textdate", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "http": { |
| "label": "HTTP", |
| "purpose": "Provides support for the Hypertext Transfer Protocol in QNetworkAccessManager.", |
| "section": "Networking", |
| "condition": "features.thread", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "udpsocket": { |
| "label": "QUdpSocket", |
| "purpose": "Provides access to UDP sockets.", |
| "section": "Networking", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "networkproxy": { |
| "label": "QNetworkProxy", |
| "purpose": "Provides network proxy support.", |
| "section": "Networking", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "socks5": { |
| "label": "SOCKS5", |
| "purpose": "Provides SOCKS5 support in QNetworkProxy.", |
| "section": "Networking", |
| "condition": "features.networkproxy", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "networkinterface": { |
| "label": "QNetworkInterface", |
| "purpose": "Supports enumerating a host's IP addresses and network interfaces.", |
| "condition": "!config.wasm", |
| "section": "Networking", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "networkdiskcache": { |
| "label": "QNetworkDiskCache", |
| "purpose": "Provides a disk cache for network resources.", |
| "section": "Networking", |
| "condition": "features.temporaryfile", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "bearermanagement": { |
| "label": "Bearer management (deprecated)", |
| "purpose": "Provides bearer management for the network stack.", |
| "section": "Networking", |
| "condition": "features.thread && features.library && features.networkinterface && features.properties", |
| "output": [ |
| "publicFeature", |
| "feature", |
| { "type": "define", "negative": true, "name": "QT_NO_BEARERMANAGEMENT" } |
| ] |
| }, |
| "localserver": { |
| "label": "QLocalServer", |
| "purpose": "Provides a local socket based server.", |
| "section": "Networking", |
| "condition": "features.temporaryfile", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "dnslookup": { |
| "label": "QDnsLookup", |
| "purpose": "Provides API for DNS lookups.", |
| "section": "Networking", |
| "output": [ "publicFeature" ] |
| }, |
| "gssapi": { |
| "label": "GSSAPI", |
| "purpose": "Enable SPNEGO authentication through GSSAPI", |
| "section": "Networking", |
| "condition": "!config.win32 && libs.gssapi", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "sspi": { |
| "label": "SSPI", |
| "purpose": "Enable NTLM/SPNEGO authentication through SSPI", |
| "section": "Networking", |
| "condition": "config.win32 && !config.winrt", |
| "output": [ "publicFeature", "feature" ] |
| }, |
| "netlistmgr": { |
| "label": "Network List Manager", |
| "purpose": "Use Network List Manager to keep track of network connectivity", |
| "section": "Networking", |
| "condition": "config.win32 && tests.netlistmgr", |
| "output": [ "privateFeature" ] |
| } |
| }, |
| |
| "report": [ |
| { |
| "type": "note", |
| "condition": "!config.android && features.openssl-linked && libs.openssl.source != 0 |
| && input.openssl.prefix == '' && input.openssl.libs == '' && input.openssl.libs.debug == ''", |
| "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" |
| }, |
| { |
| "type": "warning", |
| "condition": "features.libproxy && input.qt_namespace == ''", |
| "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." |
| } |
| ], |
| |
| "summary": [ |
| { |
| "section": "Qt Network", |
| "entries": [ |
| { |
| "type": "feature", |
| "args": "corewlan", |
| "condition": "config.darwin" |
| }, |
| "getifaddrs", "ipv6ifname", "libproxy", |
| { |
| "type": "feature", |
| "args": "linux-netlink", |
| "condition": "config.linux" |
| }, |
| { |
| "type": "feature", |
| "args": "securetransport", |
| "condition": "config.darwin" |
| }, |
| { |
| "type": "feature", |
| "args": "schannel", |
| "condition": "config.win32 && !config.winrt" |
| }, |
| "openssl", |
| "openssl-linked", |
| "opensslv11", |
| "dtls", |
| "ocsp", |
| "sctp", |
| "system-proxies", |
| "gssapi" |
| ] |
| } |
| ] |
| } |