summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2023-08-01 11:01:42 -0700
committerThiago Macieira <thiago.macieira@intel.com>2023-08-02 12:36:18 -0700
commit4a5f3c8b930d319ce2ecc802a0868164f18034db (patch)
tree43992b6fe4c68cc13772ad1d6eb7c47fb5aa6425
parentf44072ca437bc943ac45e4bee69720499a0f8843 (diff)
CMake: remove check for cxx11_future
Everyone must have this by now. This test was 1193 ms of CMake time. Since this was a PUBLIC feature, I've left it around with a constant condition. Change-Id: Ifbf974a4d10745b099b1fffd177754538bbff245 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
-rw-r--r--src/corelib/configure.cmake23
-rw-r--r--src/corelib/thread/qthread.cpp2
-rw-r--r--src/corelib/thread/qthread.h12
-rw-r--r--tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp4
-rw-r--r--tests/auto/corelib/text/qbytearraymatcher/tst_qbytearraymatcher.cpp11
-rw-r--r--tests/auto/corelib/text/qlatin1stringmatcher/tst_qlatin1stringmatcher.cpp12
-rw-r--r--tests/auto/corelib/thread/qfuture/tst_qfuture.cpp4
-rw-r--r--tests/auto/corelib/thread/qpromise/tst_qpromise.cpp42
-rw-r--r--tests/auto/corelib/thread/qthread/tst_qthread.cpp4
-rw-r--r--tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp11
-rw-r--r--tests/auto/corelib/tools/qhash/tst_qhash.cpp4
-rw-r--r--tests/auto/other/qobjectrace/tst_qobjectrace.cpp4
-rw-r--r--tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp4
13 files changed, 6 insertions, 131 deletions
diff --git a/src/corelib/configure.cmake b/src/corelib/configure.cmake
index 6e8de89099..eca3b01886 100644
--- a/src/corelib/configure.cmake
+++ b/src/corelib/configure.cmake
@@ -137,27 +137,6 @@ int pipes[2];
}
")
-# cxx11_future
-if (UNIX AND NOT ANDROID AND NOT QNX AND NOT INTEGRITY)
- set(cxx11_future_TEST_LIBRARIES pthread)
-endif()
-qt_config_compile_test(cxx11_future
- LABEL "C++11 <future>"
- LIBRARIES
- "${cxx11_future_TEST_LIBRARIES}"
- CODE
-"#include <future>
-
-int main(void)
-{
- /* BEGIN TEST: */
-std::future<int> f = std::async([]() { return 42; });
-(void)f.get();
- /* END TEST: */
- return 0;
-}
-")
-
# cxx17_filesystem
qt_config_compile_test(cxx17_filesystem
LABEL "C++17 <filesystem>"
@@ -565,7 +544,7 @@ qt_feature("system-doubleconversion" PRIVATE
)
qt_feature("cxx11_future" PUBLIC
LABEL "C++11 <future>"
- CONDITION TEST_cxx11_future
+ CONDITION ON
)
qt_feature("cxx17_filesystem" PUBLIC
LABEL "C++17 <filesystem>"
diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp
index 61369420d1..111c6a93d5 100644
--- a/src/corelib/thread/qthread.cpp
+++ b/src/corelib/thread/qthread.cpp
@@ -1201,7 +1201,6 @@ bool QThread::isInterruptionRequested() const
\sa start()
*/
-#if QT_CONFIG(cxx11_future)
class QThreadCreateThread : public QThread
{
public:
@@ -1230,7 +1229,6 @@ QThread *QThread::createThreadImpl(std::future<void> &&future)
{
return new QThreadCreateThread(std::move(future));
}
-#endif // QT_CONFIG(cxx11_future)
/*!
\class QDaemonThread
diff --git a/src/corelib/thread/qthread.h b/src/corelib/thread/qthread.h
index 40f363ee5a..32a0bb703e 100644
--- a/src/corelib/thread/qthread.h
+++ b/src/corelib/thread/qthread.h
@@ -9,10 +9,8 @@
#include <QtCore/qdeadlinetimer.h>
// For QThread::create
-#if QT_CONFIG(cxx11_future)
-# include <future> // for std::async
-# include <functional> // for std::invoke; no guard needed as it's a C++98 header
-#endif
+#include <future> // for std::async
+#include <functional> // for std::invoke; no guard needed as it's a C++98 header
// internal compiler error with mingw 8.1
#if defined(Q_CC_MSVC) && defined(Q_PROCESSOR_X86)
#include <intrin.h>
@@ -70,10 +68,8 @@ public:
bool event(QEvent *event) override;
int loopLevel() const;
-#if QT_CONFIG(cxx11_future) || defined(Q_QDOC)
template <typename Function, typename... Args>
[[nodiscard]] static QThread *create(Function &&f, Args &&... args);
-#endif
public Q_SLOTS:
void start(Priority = InheritPriority);
@@ -112,16 +108,13 @@ private:
Q_DECLARE_PRIVATE(QThread)
friend class QEventLoopLocker;
-#if QT_CONFIG(cxx11_future)
[[nodiscard]] static QThread *createThreadImpl(std::future<void> &&future);
-#endif
static Qt::HANDLE currentThreadIdImpl() noexcept Q_DECL_PURE_FUNCTION;
friend class QCoreApplication;
friend class QThreadData;
};
-#if QT_CONFIG(cxx11_future)
template <typename Function, typename... Args>
QThread *QThread::create(Function &&f, Args &&... args)
{
@@ -136,7 +129,6 @@ QThread *QThread::create(Function &&f, Args &&... args)
std::move(threadFunction),
std::forward<Args>(args)...));
}
-#endif // QT_CONFIG(cxx11_future)
/*
On architectures and platforms we know, interpret the thread control
diff --git a/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
index 17deeb4c5e..fdd3cb53a8 100644
--- a/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
+++ b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
@@ -1342,14 +1342,10 @@ void tst_QTimer::timerOrder_data()
void tst_QTimer::timerOrderBackgroundThread()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
auto *thread = QThread::create([this]() { timerOrder(); });
thread->start();
QVERIFY(thread->wait());
delete thread;
-#endif
}
struct StaticSingleShotUser
diff --git a/tests/auto/corelib/text/qbytearraymatcher/tst_qbytearraymatcher.cpp b/tests/auto/corelib/text/qbytearraymatcher/tst_qbytearraymatcher.cpp
index 3d3b724599..415dbd1d1c 100644
--- a/tests/auto/corelib/text/qbytearraymatcher/tst_qbytearraymatcher.cpp
+++ b/tests/auto/corelib/text/qbytearraymatcher/tst_qbytearraymatcher.cpp
@@ -9,9 +9,7 @@
#include <numeric>
#include <string>
-#if QT_CONFIG(cxx11_future)
-# include <thread>
-#endif
+#include <thread>
// COM interface
#if defined(Q_OS_WIN) && defined(interface)
@@ -253,14 +251,7 @@ void tst_QByteArrayMatcher::haystacksWithMoreThan4GiBWork()
QCOMPARE(large.size(), BaseSize + needle.size());
qDebug("created dataset in %lld ms", timer.elapsed());
-# if QT_CONFIG(cxx11_future)
using MaybeThread = std::thread;
-# else
- struct MaybeThread {
- std::function<void()> func;
- void join() { func(); }
- };
-# endif
//
// WHEN: trying to match an occurrence past the 4GiB mark
diff --git a/tests/auto/corelib/text/qlatin1stringmatcher/tst_qlatin1stringmatcher.cpp b/tests/auto/corelib/text/qlatin1stringmatcher/tst_qlatin1stringmatcher.cpp
index 9572466a7b..19613105dd 100644
--- a/tests/auto/corelib/text/qlatin1stringmatcher/tst_qlatin1stringmatcher.cpp
+++ b/tests/auto/corelib/text/qlatin1stringmatcher/tst_qlatin1stringmatcher.cpp
@@ -8,9 +8,7 @@
#include <numeric>
#include <string>
-#if QT_CONFIG(cxx11_future)
-# include <thread>
-#endif
+#include <thread>
// COM interface
#if defined(interface)
@@ -264,15 +262,7 @@ void tst_QLatin1StringMatcher::haystacksWithMoreThan4GiBWork()
QCOMPARE(large.size(), BaseSize + needle.size());
qDebug("created dataset in %lld ms", timer.elapsed());
-# if QT_CONFIG(cxx11_future)
using MaybeThread = std::thread;
-# else
- struct MaybeThread
- {
- std::function<void()> func;
- void join() { func(); }
- };
-# endif
//
// WHEN: trying to match an occurrence past the 4GiB mark
diff --git a/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp b/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp
index 0bdeb96b14..adca118618 100644
--- a/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp
+++ b/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp
@@ -3908,9 +3908,6 @@ void tst_QFuture::signalConnect()
void tst_QFuture::waitForFinished()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
QFutureInterface<void> fi;
auto future = fi.future();
@@ -3931,7 +3928,6 @@ void tst_QFuture::waitForFinished()
QVERIFY(waitingThread->wait());
QVERIFY(waitingThread->isFinished());
-#endif
}
void tst_QFuture::rejectResultOverwrite_data()
diff --git a/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp b/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp
index 1002361005..d332dbc5e4 100644
--- a/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp
+++ b/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp
@@ -86,7 +86,6 @@ do { \
QFAIL("Test case " #test "(" #__VA_ARGS__ ") failed"); \
} while (false)
-#if QT_CONFIG(cxx11_future)
// std::thread-like wrapper that ensures that the thread is joined at the end of
// a scope to prevent potential std::terminate
struct ThreadWrapper
@@ -103,7 +102,6 @@ struct ThreadWrapper
t->wait();
}
};
-#endif
void tst_QPromise::promise()
{
@@ -344,9 +342,6 @@ void tst_QPromise::progress()
void tst_QPromise::addInThread()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
const auto testAddResult = [] (auto promise, const auto &result) {
promise.start();
auto f = promise.future();
@@ -362,14 +357,10 @@ void tst_QPromise::addInThread()
RUN_TEST_FUNC(testAddResult, QPromise<int>(), 42);
RUN_TEST_FUNC(testAddResult, QPromise<QString>(), u8"42");
RUN_TEST_FUNC(testAddResult, QPromise<CopyOnlyType>(), CopyOnlyType{99});
-#endif
}
void tst_QPromise::addInThreadMoveOnlyObject()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
QPromise<MoveOnlyType> promise;
promise.start();
auto f = promise.future();
@@ -381,14 +372,10 @@ void tst_QPromise::addInThreadMoveOnlyObject()
// Iterators wait for result first
for (auto& result : f)
QCOMPARE(result, MoveOnlyType{-11});
-#endif
}
void tst_QPromise::reportFromMultipleThreads()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
QPromise<int> promise;
auto f = promise.future();
promise.start();
@@ -407,14 +394,10 @@ void tst_QPromise::reportFromMultipleThreads()
QVERIFY(std::find(expected.begin(), expected.end(), actual) != expected.end());
expected.removeOne(actual);
}
-#endif
}
void tst_QPromise::reportFromMultipleThreadsByMovedPromise()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
QPromise<int> initialPromise;
auto f = initialPromise.future();
{
@@ -441,14 +424,10 @@ void tst_QPromise::reportFromMultipleThreadsByMovedPromise()
QVERIFY(std::find(expected.begin(), expected.end(), actual) != expected.end());
expected.removeOne(actual);
}
-#endif
}
void tst_QPromise::doNotCancelWhenFinished()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
const auto testFinishedPromise = [] (auto promise) {
auto f = promise.future();
promise.start();
@@ -467,15 +446,11 @@ void tst_QPromise::doNotCancelWhenFinished()
RUN_TEST_FUNC(testFinishedPromise, QPromise<QString>());
RUN_TEST_FUNC(testFinishedPromise, QPromise<CopyOnlyType>());
RUN_TEST_FUNC(testFinishedPromise, QPromise<MoveOnlyType>());
-#endif
}
#ifndef QT_NO_EXCEPTIONS
void tst_QPromise::cancelWhenDestroyed()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
QPromise<int> initialPromise;
auto f = initialPromise.future();
@@ -503,15 +478,11 @@ void tst_QPromise::cancelWhenDestroyed()
QVERIFY(std::find(expected.begin(), expected.end(), actual) != expected.end());
expected.removeOne(actual);
}
-#endif
}
#endif
void tst_QPromise::cancelWhenReassigned()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
QPromise<int> promise;
auto f = promise.future();
promise.start();
@@ -525,7 +496,6 @@ void tst_QPromise::cancelWhenReassigned()
QCOMPARE(f.isFinished(), true);
QCOMPARE(f.isCanceled(), true);
-#endif
}
template <typename T>
@@ -640,9 +610,6 @@ void tst_QPromise::continuationsRunWhenFinished()
void tst_QPromise::finishWhenSwapped()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
QPromise<int> promise1;
auto f1 = promise1.future();
promise1.start();
@@ -677,15 +644,11 @@ void tst_QPromise::finishWhenSwapped()
QCOMPARE(f2.resultAt(0), 1);
QCOMPARE(f2.resultAt(1), 2);
-#endif
}
template <typename T>
void testCancelWhenMoved()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
QPromise<T> promise1;
auto f1 = promise1.future();
promise1.start();
@@ -711,7 +674,6 @@ void testCancelWhenMoved()
// Future #2 is explicitly finished inside thread
QCOMPARE(f2.isFinished(), true);
QCOMPARE(f2.isCanceled(), false);
-#endif
}
void tst_QPromise::cancelWhenMoved()
@@ -753,9 +715,6 @@ void tst_QPromise::waitUntilResumed()
void tst_QPromise::waitUntilCanceled()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
QPromise<int> promise;
promise.start();
auto f = promise.future();
@@ -776,7 +735,6 @@ void tst_QPromise::waitUntilCanceled()
f.waitForFinished();
QCOMPARE(f.resultCount(), 0);
-#endif
}
// Below is a quick and dirty hack to make snippets a part of a test suite
diff --git a/tests/auto/corelib/thread/qthread/tst_qthread.cpp b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
index 511bc02b45..095b3dbf58 100644
--- a/tests/auto/corelib/thread/qthread/tst_qthread.cpp
+++ b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
@@ -1355,9 +1355,6 @@ void tst_QThread::quitLock()
void tst_QThread::create()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
{
const auto &function = [](){};
QScopedPointer<QThread> thread(QThread::create(function));
@@ -1597,7 +1594,6 @@ void tst_QThread::create()
QVERIFY(!thread);
}
#endif // QT_NO_EXCEPTIONS
-#endif // QT_CONFIG(cxx11_future)
}
void tst_QThread::createDestruction()
diff --git a/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp b/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
index a7c22ffe29..dca993010d 100644
--- a/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
+++ b/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
@@ -8,9 +8,7 @@
#include <QCryptographicHash>
#include <QtCore/QMetaEnum>
-#if QT_CONFIG(cxx11_future)
-# include <thread>
-#endif
+#include <thread>
Q_DECLARE_METATYPE(QCryptographicHash::Algorithm)
@@ -520,14 +518,7 @@ void tst_QCryptographicHash::moreThan4GiBOfData()
{
QFETCH(const QCryptographicHash::Algorithm, algorithm);
-# if QT_CONFIG(cxx11_future)
using MaybeThread = std::thread;
-# else
- struct MaybeThread {
- std::function<void()> func;
- void join() { func(); }
- };
-# endif
QElapsedTimer timer;
timer.start();
diff --git a/tests/auto/corelib/tools/qhash/tst_qhash.cpp b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
index c906924b2b..003000c94a 100644
--- a/tests/auto/corelib/tools/qhash/tst_qhash.cpp
+++ b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
@@ -2820,9 +2820,6 @@ void tst_QHash::QTBUG98265()
*/
void tst_QHash::detachAndReferences()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires cxx11_future")
-#else
// Repeat a few times because it's not a guarantee
for (int i = 0; i < 50; ++i) {
QHash<char, char> hash;
@@ -2860,7 +2857,6 @@ void tst_QHash::detachAndReferences()
QVERIFY(hash.contains(kCopy));
QCOMPARE(hash.value(kCopy), vCopy);
}
-#endif
}
void tst_QHash::lookupUsingKeyIterator()
diff --git a/tests/auto/other/qobjectrace/tst_qobjectrace.cpp b/tests/auto/other/qobjectrace/tst_qobjectrace.cpp
index 90b1b5c29a..e25e99f2a1 100644
--- a/tests/auto/other/qobjectrace/tst_qobjectrace.cpp
+++ b/tests/auto/other/qobjectrace/tst_qobjectrace.cpp
@@ -318,9 +318,6 @@ private:
void tst_QObjectRace::blockingQueuedDestroyRace()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
enum { MinIterations = 100, MinTime = 3000, WaitTime = 25 };
BlockingQueuedDestroyRaceObject sender;
@@ -366,7 +363,6 @@ void tst_QObjectRace::blockingQueuedDestroyRace()
thread->wait();
}
-#endif
}
static QAtomicInteger<unsigned> countedStructObjectsCount;
diff --git a/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp b/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp
index d36ea17756..c7f328c1ba 100644
--- a/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp
+++ b/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp
@@ -101,13 +101,9 @@ void qtimer_vs_qmetaobject::bench_data()
void qtimer_vs_qmetaobject::benchBackgroundThread()
{
-#if !QT_CONFIG(cxx11_future)
- QSKIP("This test requires QThread::create");
-#else
QScopedPointer<QThread> thread(QThread::create([this]() { bench(); }));
thread->start();
QVERIFY(thread->wait());
-#endif
}
QTEST_MAIN(qtimer_vs_qmetaobject)