Improve test compilation setup with QtLite configuration

Functional fix will come later via separate tasks.

Task-number: QTBUG-122999
Change-Id: Ib805740c87ff21cea5a186add71cc594ab4d4df1
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
Jari Helaakoski 2024-05-07 12:28:18 +03:00
parent 552c408b22
commit 0ae44ccc6f
5 changed files with 69 additions and 7 deletions

View File

@ -8,4 +8,6 @@ if(QT_FEATURE_datetimeparser)
add_subdirectory(qdatetimeparser) add_subdirectory(qdatetimeparser)
endif() endif()
add_subdirectory(qtime) add_subdirectory(qtime)
add_subdirectory(qtimezone) if(QT_FEATURE_timezone)
add_subdirectory(qtimezone)
endif()

View File

@ -9,9 +9,7 @@ add_subdirectory(qnetworkcookiejar)
add_subdirectory(qnetworkaccessmanager) add_subdirectory(qnetworkaccessmanager)
add_subdirectory(qnetworkcookie) add_subdirectory(qnetworkcookie)
add_subdirectory(qnetworkrequest) add_subdirectory(qnetworkrequest)
if(QT_FEATURE_localserver) add_subdirectory(qnetworkreply)
add_subdirectory(qnetworkreply)
endif()
add_subdirectory(qnetworkcachemetadata) add_subdirectory(qnetworkcachemetadata)
add_subdirectory(qabstractnetworkcache) add_subdirectory(qabstractnetworkcache)
if(QT_FEATURE_http) if(QT_FEATURE_http)

View File

@ -35,8 +35,10 @@
#include <QtNetwork/QTcpServer> #include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket> #include <QtNetwork/QTcpSocket>
#if QT_CONFIG(localserver)
#include <QtNetwork/QLocalSocket> #include <QtNetwork/QLocalSocket>
#include <QtNetwork/QLocalServer> #include <QtNetwork/QLocalServer>
#endif
#include <QtNetwork/QHostInfo> #include <QtNetwork/QHostInfo>
#include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest> #include <QtNetwork/QNetworkRequest>
@ -44,14 +46,18 @@
#include <QtNetwork/QAbstractNetworkCache> #include <QtNetwork/QAbstractNetworkCache>
#include <QtNetwork/qauthenticator.h> #include <QtNetwork/qauthenticator.h>
#include <QtNetwork/qnetworkaccessmanager.h> #include <QtNetwork/qnetworkaccessmanager.h>
#if QT_CONFIG(networkdiskcache)
#include <QtNetwork/qnetworkdiskcache.h> #include <QtNetwork/qnetworkdiskcache.h>
#endif
#include <QtNetwork/qnetworkrequest.h> #include <QtNetwork/qnetworkrequest.h>
#include <QtNetwork/qnetworkreply.h> #include <QtNetwork/qnetworkreply.h>
#include <QtNetwork/QHttp1Configuration>
#include <QtNetwork/qnetworkcookie.h> #include <QtNetwork/qnetworkcookie.h>
#include <QtNetwork/QNetworkCookieJar> #include <QtNetwork/QNetworkCookieJar>
#if QT_CONFIG(http)
#include <QtNetwork/QHttpPart> #include <QtNetwork/QHttpPart>
#include <QtNetwork/QHttpMultiPart> #include <QtNetwork/QHttpMultiPart>
#include <QtNetwork/QHttp1Configuration>
#endif
#include <QtNetwork/QNetworkProxyQuery> #include <QtNetwork/QNetworkProxyQuery>
#if QT_CONFIG(ssl) #if QT_CONFIG(ssl)
#include <QtNetwork/qsslerror.h> #include <QtNetwork/qsslerror.h>
@ -194,8 +200,10 @@ public:
~tst_QNetworkReply(); ~tst_QNetworkReply();
QString runSimpleRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QString runSimpleRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request,
QNetworkReplyPtr &reply, const QByteArray &data = QByteArray()); QNetworkReplyPtr &reply, const QByteArray &data = QByteArray());
#if QT_CONFIG(http)
QString runMultipartRequest(const QNetworkRequest &request, QNetworkReplyPtr &reply, QString runMultipartRequest(const QNetworkRequest &request, QNetworkReplyPtr &reply,
QHttpMultiPart *multiPart, const QByteArray &verb); QHttpMultiPart *multiPart, const QByteArray &verb);
#endif
QString runCustomRequest(const QNetworkRequest &request, QNetworkReplyPtr &reply, QString runCustomRequest(const QNetworkRequest &request, QNetworkReplyPtr &reply,
const QByteArray &verb, QIODevice *data); const QByteArray &verb, QIODevice *data);
@ -261,17 +269,21 @@ private Q_SLOTS:
void putToHttp(); void putToHttp();
void putToHttpSynchronous_data(); void putToHttpSynchronous_data();
void putToHttpSynchronous(); void putToHttpSynchronous();
#if QT_CONFIG(http)
void putToHttpMultipart_data(); void putToHttpMultipart_data();
void putToHttpMultipart(); void putToHttpMultipart();
#endif
void putWithoutBody(); void putWithoutBody();
void putWithoutBody_data(); void putWithoutBody_data();
void postToHttp_data(); void postToHttp_data();
void postToHttp(); void postToHttp();
void postToHttpSynchronous_data(); void postToHttpSynchronous_data();
void postToHttpSynchronous(); void postToHttpSynchronous();
#if QT_CONFIG(http)
void postToHttpMultipart_data(); void postToHttpMultipart_data();
void postToHttpMultipart(); void postToHttpMultipart();
void multipartSkipIndices(); // QTBUG-32534 void multipartSkipIndices(); // QTBUG-32534
#endif
void postWithoutBody_data(); void postWithoutBody_data();
void postWithoutBody(); void postWithoutBody();
#if QT_CONFIG(ssl) #if QT_CONFIG(ssl)
@ -342,8 +354,10 @@ private Q_SLOTS:
void ioPutToFileFromFile(); void ioPutToFileFromFile();
void ioPutToFileFromSocket_data(); void ioPutToFileFromSocket_data();
void ioPutToFileFromSocket(); void ioPutToFileFromSocket();
#if QT_CONFIG(localserver)
void ioPutToFileFromLocalSocket_data(); void ioPutToFileFromLocalSocket_data();
void ioPutToFileFromLocalSocket(); void ioPutToFileFromLocalSocket();
#endif
void ioPutToFileFromProcess_data(); void ioPutToFileFromProcess_data();
void ioPutToFileFromProcess(); void ioPutToFileFromProcess();
void ioPutToFtpFromFile_data(); void ioPutToFtpFromFile_data();
@ -449,7 +463,9 @@ private Q_SLOTS:
void ioGetFromHttpWithoutContentLength(); void ioGetFromHttpWithoutContentLength();
void ioGetFromHttpBrokenChunkedEncoding(); void ioGetFromHttpBrokenChunkedEncoding();
#if QT_CONFIG(http)
void qtbug12908compressedHttpReply(); void qtbug12908compressedHttpReply();
#endif
void compressedHttpReplyBrokenGzip(); void compressedHttpReplyBrokenGzip();
void getFromUnreachableIp(); void getFromUnreachableIp();
@ -468,7 +484,9 @@ private Q_SLOTS:
void qtbug27161httpHeaderMayBeDamaged_data(); void qtbug27161httpHeaderMayBeDamaged_data();
void qtbug27161httpHeaderMayBeDamaged(); void qtbug27161httpHeaderMayBeDamaged();
#if QT_CONFIG(networkdiskcache)
void qtbug28035browserDoesNotLoadQtProjectOrgCorrectly(); void qtbug28035browserDoesNotLoadQtProjectOrgCorrectly();
#endif
void qtbug45581WrongReplyStatusCode(); void qtbug45581WrongReplyStatusCode();
@ -484,8 +502,10 @@ private Q_SLOTS:
void varyingCacheExpiry_data(); void varyingCacheExpiry_data();
void varyingCacheExpiry(); void varyingCacheExpiry();
#if QT_CONFIG(http)
void amountOfHttp1ConnectionsQtbug25280_data(); void amountOfHttp1ConnectionsQtbug25280_data();
void amountOfHttp1ConnectionsQtbug25280(); void amountOfHttp1ConnectionsQtbug25280();
#endif
void dontInsertPartialContentIntoTheCache(); void dontInsertPartialContentIntoTheCache();
@ -521,12 +541,16 @@ private Q_SLOTS:
void ioHttpCookiesDuringRedirect(); void ioHttpCookiesDuringRedirect();
void ioHttpRedirect_data(); void ioHttpRedirect_data();
void ioHttpRedirect(); void ioHttpRedirect();
#if QT_CONFIG(networkdiskcache)
void ioHttpRedirectWithCache(); void ioHttpRedirectWithCache();
#endif
void ioHttpRedirectFromLocalToRemote(); void ioHttpRedirectFromLocalToRemote();
void ioHttpRedirectPostPut_data(); void ioHttpRedirectPostPut_data();
void ioHttpRedirectPostPut(); void ioHttpRedirectPostPut();
#if QT_CONFIG(http)
void ioHttpRedirectMultipartPost_data(); void ioHttpRedirectMultipartPost_data();
void ioHttpRedirectMultipartPost(); void ioHttpRedirectMultipartPost();
#endif
void ioHttpRedirectDelete(); void ioHttpRedirectDelete();
void ioHttpRedirectCustom(); void ioHttpRedirectCustom();
void ioHttpRedirectWithUploadDevice_data(); void ioHttpRedirectWithUploadDevice_data();
@ -540,16 +564,20 @@ private Q_SLOTS:
void autoDeleteReplies_data(); void autoDeleteReplies_data();
void autoDeleteReplies(); void autoDeleteReplies();
#if QT_CONFIG(http) || defined (Q_OS_WASM)
void requestWithTimeout_data(); void requestWithTimeout_data();
void requestWithTimeout(); void requestWithTimeout();
#endif
void moreActivitySignals_data(); void moreActivitySignals_data();
void moreActivitySignals(); void moreActivitySignals();
void contentEncoding_data(); void contentEncoding_data();
void contentEncoding(); void contentEncoding();
#if QT_CONFIG(http)
void contentEncodingBigPayload_data(); void contentEncodingBigPayload_data();
void contentEncodingBigPayload(); void contentEncodingBigPayload();
#endif
void cacheWithContentEncoding_data(); void cacheWithContentEncoding_data();
void cacheWithContentEncoding(); void cacheWithContentEncoding();
void downloadProgressWithContentEncoding_data(); void downloadProgressWithContentEncoding_data();
@ -560,11 +588,13 @@ private Q_SLOTS:
void notFoundWithCompression_data(); void notFoundWithCompression_data();
void notFoundWithCompression(); void notFoundWithCompression();
#if QT_CONFIG(http)
void qhttpPartDebug_data(); void qhttpPartDebug_data();
void qhttpPartDebug(); void qhttpPartDebug();
void qtbug68821proxyError_data(); void qtbug68821proxyError_data();
void qtbug68821proxyError(); void qtbug68821proxyError();
#endif
void abortAndError(); void abortAndError();
@ -1440,6 +1470,7 @@ void tst_QNetworkReply::storeSslConfiguration()
} }
#endif #endif
#if QT_CONFIG(http)
QString tst_QNetworkReply::runMultipartRequest(const QNetworkRequest &request, QString tst_QNetworkReply::runMultipartRequest(const QNetworkRequest &request,
QNetworkReplyPtr &reply, QNetworkReplyPtr &reply,
QHttpMultiPart *multiPart, QHttpMultiPart *multiPart,
@ -1471,6 +1502,7 @@ QString tst_QNetworkReply::runMultipartRequest(const QNetworkRequest &request,
} }
return QString(); return QString();
} }
#endif
QString tst_QNetworkReply::runSimpleRequest(QNetworkAccessManager::Operation op, QString tst_QNetworkReply::runSimpleRequest(QNetworkAccessManager::Operation op,
const QNetworkRequest &request, const QNetworkRequest &request,
@ -2805,6 +2837,7 @@ void tst_QNetworkReply::postToHttpSynchronous()
QCOMPARE(uploadedData, md5sum.toHex()); QCOMPARE(uploadedData, md5sum.toHex());
} }
#if QT_CONFIG(http)
void tst_QNetworkReply::postToHttpMultipart_data() void tst_QNetworkReply::postToHttpMultipart_data()
{ {
QTest::addColumn<QUrl>("url"); QTest::addColumn<QUrl>("url");
@ -3114,6 +3147,7 @@ void tst_QNetworkReply::multipartSkipIndices() // QTBUG-32534
} }
multiPart->deleteLater(); multiPart->deleteLater();
} }
#endif
void tst_QNetworkReply::postWithoutBody_data() void tst_QNetworkReply::postWithoutBody_data()
{ {
@ -3156,6 +3190,7 @@ void tst_QNetworkReply::postWithoutBody()
QCOMPARE(server.foundContentLength, client_data); QCOMPARE(server.foundContentLength, client_data);
} }
#if QT_CONFIG(http)
void tst_QNetworkReply::putToHttpMultipart_data() void tst_QNetworkReply::putToHttpMultipart_data()
{ {
postToHttpMultipart_data(); postToHttpMultipart_data();
@ -3200,6 +3235,7 @@ void tst_QNetworkReply::putToHttpMultipart()
// QEXPECT_FAIL("nested", "the server does not understand nested multipart messages", Continue); // see above // QEXPECT_FAIL("nested", "the server does not understand nested multipart messages", Continue); // see above
QCOMPARE(replyData, expectedReplyData); QCOMPARE(replyData, expectedReplyData);
} }
#endif
#if QT_CONFIG(ssl) #if QT_CONFIG(ssl)
void tst_QNetworkReply::putToHttps_data() void tst_QNetworkReply::putToHttps_data()
@ -3367,6 +3403,7 @@ void tst_QNetworkReply::postToHttpsSynchronous()
QCOMPARE(uploadedData, md5sum.toHex()); QCOMPARE(uploadedData, md5sum.toHex());
} }
#if QT_CONFIG(http)
void tst_QNetworkReply::postToHttpsMultipart_data() void tst_QNetworkReply::postToHttpsMultipart_data()
{ {
if (isSecureTransport) if (isSecureTransport)
@ -3417,7 +3454,7 @@ void tst_QNetworkReply::postToHttpsMultipart()
expectedReplyData.prepend("content type: multipart/" + contentType + "; boundary=\"" + multiPart->boundary() + "\"\n"); expectedReplyData.prepend("content type: multipart/" + contentType + "; boundary=\"" + multiPart->boundary() + "\"\n");
QCOMPARE(replyData, expectedReplyData); QCOMPARE(replyData, expectedReplyData);
} }
#endif
#endif // QT_CONFIG(ssl) #endif // QT_CONFIG(ssl)
void tst_QNetworkReply::deleteFromHttp_data() void tst_QNetworkReply::deleteFromHttp_data()
@ -4999,6 +5036,7 @@ void tst_QNetworkReply::ioPutToFileFromSocket()
QCOMPARE(contents, data); QCOMPARE(contents, data);
} }
#if QT_CONFIG(localserver)
void tst_QNetworkReply::ioPutToFileFromLocalSocket_data() void tst_QNetworkReply::ioPutToFileFromLocalSocket_data()
{ {
putToFile_data(); putToFile_data();
@ -5042,6 +5080,7 @@ void tst_QNetworkReply::ioPutToFileFromLocalSocket()
QByteArray contents = file.readAll(); QByteArray contents = file.readAll();
QCOMPARE(contents, data); QCOMPARE(contents, data);
} }
#endif
// Currently no stdin/out supported for Windows CE. // Currently no stdin/out supported for Windows CE.
void tst_QNetworkReply::ioPutToFileFromProcess_data() void tst_QNetworkReply::ioPutToFileFromProcess_data()
@ -7492,6 +7531,7 @@ void tst_QNetworkReply::ioGetFromHttpBrokenChunkedEncoding()
QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->error(), QNetworkReply::NoError);
} }
#if QT_CONFIG(http)
// TODO: // TODO:
// Prepare a gzip that has one chunk that expands to the size mentioned in the bugreport. // Prepare a gzip that has one chunk that expands to the size mentioned in the bugreport.
// Then have a custom HTTP server that waits after this chunk so the returning gets // Then have a custom HTTP server that waits after this chunk so the returning gets
@ -7520,6 +7560,7 @@ void tst_QNetworkReply::qtbug12908compressedHttpReply()
QCOMPARE(reply->size(), qint64(16384)); QCOMPARE(reply->size(), qint64(16384));
QCOMPARE(reply->readAll(), QByteArray(16384, '\0')); QCOMPARE(reply->readAll(), QByteArray(16384, '\0'));
} }
#endif
void tst_QNetworkReply::compressedHttpReplyBrokenGzip() void tst_QNetworkReply::compressedHttpReplyBrokenGzip()
{ {
@ -8046,6 +8087,7 @@ void tst_QNetworkReply::qtbug27161httpHeaderMayBeDamaged(){
QCOMPARE(reply->readAll(), QByteArray("ABC")); QCOMPARE(reply->readAll(), QByteArray("ABC"));
} }
#if QT_CONFIG(networkdiskcache)
void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() {
QByteArray getReply = QByteArray getReply =
"HTTP/1.1 200\r\n" "HTTP/1.1 200\r\n"
@ -8170,6 +8212,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() {
QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->readAll(), QByteArray("GET"));
QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), true); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), true);
} }
#endif
void tst_QNetworkReply::qtbug45581WrongReplyStatusCode() void tst_QNetworkReply::qtbug45581WrongReplyStatusCode()
{ {
@ -8555,6 +8598,7 @@ public:
} }
}; };
#if QT_CONFIG(http)
void tst_QNetworkReply::amountOfHttp1ConnectionsQtbug25280_data() void tst_QNetworkReply::amountOfHttp1ConnectionsQtbug25280_data()
{ {
QTest::addColumn<int>("amount"); QTest::addColumn<int>("amount");
@ -8595,6 +8639,7 @@ void tst_QNetworkReply::amountOfHttp1ConnectionsQtbug25280()
} }
QCOMPARE(server.receivedSockets.size(), amount); QCOMPARE(server.receivedSockets.size(), amount);
} }
#endif
void tst_QNetworkReply::dontInsertPartialContentIntoTheCache() void tst_QNetworkReply::dontInsertPartialContentIntoTheCache()
{ {
@ -9363,6 +9408,7 @@ void tst_QNetworkReply::ioHttpRedirect()
QVERIFY(validateRedirectedResponseHeaders(reply)); QVERIFY(validateRedirectedResponseHeaders(reply));
} }
#if QT_CONFIG(networkdiskcache)
/* /*
Test that, if we load a redirect from cache, we don't treat the request to Test that, if we load a redirect from cache, we don't treat the request to
the destination of the redirect as a redirect. the destination of the redirect as a redirect.
@ -9420,6 +9466,7 @@ void tst_QNetworkReply::ioHttpRedirectWithCache()
QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
QVERIFY(validateRedirectedResponseHeaders(reply)); QVERIFY(validateRedirectedResponseHeaders(reply));
} }
#endif
void tst_QNetworkReply::ioHttpRedirectFromLocalToRemote() void tst_QNetworkReply::ioHttpRedirectFromLocalToRemote()
{ {
@ -9514,6 +9561,7 @@ void tst_QNetworkReply::ioHttpRedirectPostPut()
QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex()); QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
} }
#if QT_CONFIG(http)
void tst_QNetworkReply::ioHttpRedirectMultipartPost_data() void tst_QNetworkReply::ioHttpRedirectMultipartPost_data()
{ {
postToHttpMultipart_data(); postToHttpMultipart_data();
@ -9574,6 +9622,7 @@ void tst_QNetworkReply::ioHttpRedirectMultipartPost()
// QEXPECT_FAIL("nested", "the server does not understand nested multipart messages", Continue); // see above // QEXPECT_FAIL("nested", "the server does not understand nested multipart messages", Continue); // see above
QCOMPARE(replyData, expectedReplyData); QCOMPARE(replyData, expectedReplyData);
} }
#endif
void tst_QNetworkReply::ioHttpRedirectDelete() void tst_QNetworkReply::ioHttpRedirectDelete()
{ {
@ -10015,6 +10064,7 @@ void tst_QNetworkReply::autoDeleteReplies()
} }
} }
#if QT_CONFIG(http) || defined (Q_OS_WASM)
void tst_QNetworkReply::requestWithTimeout_data() void tst_QNetworkReply::requestWithTimeout_data()
{ {
using Operation = QNetworkAccessManager::Operation; using Operation = QNetworkAccessManager::Operation;
@ -10074,6 +10124,7 @@ void tst_QNetworkReply::requestWithTimeout()
QCOMPARE(spy.size(), 1); QCOMPARE(spy.size(), 1);
QCOMPARE(reply->error(), QNetworkReply::OperationCanceledError); QCOMPARE(reply->error(), QNetworkReply::OperationCanceledError);
} }
#endif
void tst_QNetworkReply::moreActivitySignals_data() void tst_QNetworkReply::moreActivitySignals_data()
{ {
@ -10246,6 +10297,7 @@ void tst_QNetworkReply::contentEncoding()
} }
} }
#if QT_CONFIG(http)
void tst_QNetworkReply::contentEncodingBigPayload_data() void tst_QNetworkReply::contentEncodingBigPayload_data()
{ {
QTest::addColumn<QByteArray>("encoding"); QTest::addColumn<QByteArray>("encoding");
@ -10304,6 +10356,7 @@ void tst_QNetworkReply::contentEncodingBigPayload()
} }
QCOMPARE(total, expectedSize); QCOMPARE(total, expectedSize);
} }
#endif
void tst_QNetworkReply::cacheWithContentEncoding_data() void tst_QNetworkReply::cacheWithContentEncoding_data()
{ {
@ -10486,6 +10539,7 @@ void tst_QNetworkReply::notFoundWithCompression()
QCOMPARE(reply->readAll(), expected); QCOMPARE(reply->readAll(), expected);
} }
#if QT_CONFIG(http)
void tst_QNetworkReply::qhttpPartDebug_data() void tst_QNetworkReply::qhttpPartDebug_data()
{ {
QTest::addColumn<QByteArray>("header_data"); QTest::addColumn<QByteArray>("header_data");
@ -10587,6 +10641,7 @@ void tst_QNetworkReply::qtbug68821proxyError()
QCOMPARE(spy.count(), 1); QCOMPARE(spy.count(), 1);
QCOMPARE(spy.at(0).at(0), error); QCOMPARE(spy.at(0).at(0), error);
} }
#endif
void tst_QNetworkReply::abortAndError() void tst_QNetworkReply::abortAndError()
{ {

View File

@ -14,10 +14,13 @@ add_subdirectory(qabstractsocket)
if(QT_FEATURE_localserver AND NOT ANDROID) if(QT_FEATURE_localserver AND NOT ANDROID)
# QTBUG-87387 # QTBUG-87387
add_subdirectory(qlocalsocket) add_subdirectory(qlocalsocket)
endif()
if(QT_FEATURE_networkinterface AND NOT ANDROID)
# QTBUG-87388 # QTBUG-87388
add_subdirectory(qtcpserver) add_subdirectory(qtcpserver)
endif() endif()
if(QT_FEATURE_sctp) if(QT_FEATURE_sctp)
add_subdirectory(qsctpsocket) add_subdirectory(qsctpsocket)
endif() endif()

View File

@ -3,6 +3,10 @@
if(QT_FEATURE_localserver) if(QT_FEATURE_localserver)
add_subdirectory(qlocalsocket) add_subdirectory(qlocalsocket)
add_subdirectory(qtcpserver) endif()
if(QT_FEATURE_udpsocket)
add_subdirectory(qudpsocket) add_subdirectory(qudpsocket)
endif() endif()
add_subdirectory(qtcpserver)