aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-12-20 15:12:19 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2019-01-07 13:31:51 +0000
commitd8a5edfb8c5bb0556d33d8eac512be41472585fb (patch)
treeffab1b0caab481bdc30a427d11a382fafba513de /tests
parente5ba24302d9e1d55c544c8616f837af9cfbbf710 (diff)
GCC: Make it possible to force the linker variant
...via cpp.linkerVariant. [ChangeLog] Added new cpp property linkerVariant to force use of gold, bfd or lld. Task-number: QBS-1421 Change-Id: I98f9d2581515ac8e9c984a2f8d70f4a7a3ab230b Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/blackbox/testdata/linker-variant/linker-variant.qbs20
-rw-r--r--tests/auto/blackbox/testdata/linker-variant/main.cpp1
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp28
-rw-r--r--tests/auto/blackbox/tst_blackbox.h2
4 files changed, 51 insertions, 0 deletions
diff --git a/tests/auto/blackbox/testdata/linker-variant/linker-variant.qbs b/tests/auto/blackbox/testdata/linker-variant/linker-variant.qbs
new file mode 100644
index 000000000..57bd4ccba
--- /dev/null
+++ b/tests/auto/blackbox/testdata/linker-variant/linker-variant.qbs
@@ -0,0 +1,20 @@
+CppApplication {
+ name: "p"
+ property string linkerVariant
+ Probe {
+ id: gccProbe
+ property bool isGcc: qbs.toolchain.contains("gcc")
+ configure: {
+ console.info("is GCC: " + isGcc);
+ if (isGcc)
+ found = true;
+ }
+ }
+
+ Properties {
+ condition: gccProbe.found
+ cpp.linkerVariant: linkerVariant
+ }
+
+ files: "main.cpp"
+}
diff --git a/tests/auto/blackbox/testdata/linker-variant/main.cpp b/tests/auto/blackbox/testdata/linker-variant/main.cpp
new file mode 100644
index 000000000..237c8ce18
--- /dev/null
+++ b/tests/auto/blackbox/testdata/linker-variant/main.cpp
@@ -0,0 +1 @@
+int main() {}
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 50a3bb9c5..d1cd1d503 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -4245,6 +4245,34 @@ void TestBlackbox::linkerMode()
testCondition(lang, [](const QByteArray &lddOutput) { return lddOutput.contains("objc"); });
}
+void TestBlackbox::linkerVariant_data()
+{
+ QTest::addColumn<QString>("theType");
+ QTest::newRow("default") << QString();
+ QTest::newRow("bfd") << QString("bfd");
+ QTest::newRow("gold") << QString("gold");
+}
+
+void TestBlackbox::linkerVariant()
+{
+ QDir::setCurrent(testDataDir + "/linker-variant");
+ QFETCH(QString, theType);
+ QStringList resolveArgs("--force-probe-execution");
+ if (!theType.isEmpty())
+ resolveArgs << ("products.p.linkerVariant:" + theType);
+ QCOMPARE(runQbs(QbsRunParameters("resolve", resolveArgs)), 0);
+ const bool isGcc = m_qbsStdout.contains("is GCC: true");
+ const bool isNotGcc = m_qbsStdout.contains("is GCC: false");
+ QVERIFY2(isGcc != isNotGcc, m_qbsStdout.constData());
+ QbsRunParameters buildParams("build", QStringList{"--command-echo-mode", "command-line"});
+ buildParams.expectFailure = true;
+ runQbs(buildParams);
+ if (isGcc && !theType.isEmpty())
+ QCOMPARE(m_qbsStdout.count("-fuse-ld=" + theType.toLocal8Bit()), 1);
+ else
+ QVERIFY2(!m_qbsStdout.contains("-fuse-ld"), m_qbsStdout.constData());
+}
+
void TestBlackbox::lexyacc()
{
if (!lexYaccExist())
diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h
index 874690ad2..9a715e721 100644
--- a/tests/auto/blackbox/tst_blackbox.h
+++ b/tests/auto/blackbox/tst_blackbox.h
@@ -160,6 +160,8 @@ private slots:
void jsExtensionsBinaryFile();
void ld();
void linkerMode();
+ void linkerVariant_data();
+ void linkerVariant();
void lexyacc();
void lexyaccOutputs();
void lexyaccOutputs_data();