diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2017-07-21 10:18:34 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2017-07-21 08:41:08 +0000 |
commit | 8cf4a530816132323c9109fca47d05e6859cd270 (patch) | |
tree | 8a5ddc0643a82c3c5e1b58b1863f098e0c62df52 | |
parent | 20825b73d125c689a13a154266d2bbda0aab2a15 (diff) |
GCC: Don't assume the presence of sources in static library products
Task-number: QBS-1163
Change-Id: I56790b32796f33f7474ffbc95c7f3c86ee8d3c1d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
5 files changed, 27 insertions, 2 deletions
diff --git a/share/qbs/modules/cpp/GenericGCC.qbs b/share/qbs/modules/cpp/GenericGCC.qbs index 7a065702e..b25de28c0 100644 --- a/share/qbs/modules/cpp/GenericGCC.qbs +++ b/share/qbs/modules/cpp/GenericGCC.qbs @@ -415,8 +415,10 @@ CppModule { outputFileTags: ["bundle.input", "staticlibrary", "c_staticlibrary", "cpp_staticlibrary"] outputArtifacts: { var tags = ["bundle.input", "staticlibrary"]; - for (var i = 0; i < inputs["obj"].length; ++i) { - var ft = inputs["obj"][i].fileTags; + var objs = inputs["obj"]; + var objCount = objs ? objs.length : 0; + for (var i = 0; i < objCount; ++i) { + var ft = objs[i].fileTags; if (ft.contains("c_obj")) tags.push("c_staticlibrary"); if (ft.contains("cpp_obj")) diff --git a/tests/auto/blackbox/testdata/static-lib-without-sources/lib.cpp b/tests/auto/blackbox/testdata/static-lib-without-sources/lib.cpp new file mode 100644 index 000000000..8101b05dc --- /dev/null +++ b/tests/auto/blackbox/testdata/static-lib-without-sources/lib.cpp @@ -0,0 +1 @@ +void f() { } diff --git a/tests/auto/blackbox/testdata/static-lib-without-sources/static-lib-without-sources.qbs b/tests/auto/blackbox/testdata/static-lib-without-sources/static-lib-without-sources.qbs new file mode 100644 index 000000000..b97054593 --- /dev/null +++ b/tests/auto/blackbox/testdata/static-lib-without-sources/static-lib-without-sources.qbs @@ -0,0 +1,15 @@ +import qbs + +Project { +StaticLibrary { + name: "a" + Depends { name: "cpp" } + files: ["lib.cpp"] + } + +StaticLibrary { + name: "b" + Depends { name: "cpp" } + Depends { name: "a" } +} +} diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index 209634931..75e9bf0d9 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -159,6 +159,12 @@ void TestBlackbox::sevenZip() QVERIFY2(output.contains("archivable.qbs"), output.constData()); } +void TestBlackbox::staticLibWithoutSources() +{ + QDir::setCurrent(testDataDir + "/static-lib-without-sources"); + QCOMPARE(runQbs(), 0); +} + void TestBlackbox::suspiciousCalls() { const QString projectDir = testDataDir + "/suspicious-calls"; diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h index dc55f5307..505019b4b 100644 --- a/tests/auto/blackbox/tst_blackbox.h +++ b/tests/auto/blackbox/tst_blackbox.h @@ -170,6 +170,7 @@ private slots: void renameDependency(); void separateDebugInfo(); void sevenZip(); + void staticLibWithoutSources(); void suspiciousCalls(); void suspiciousCalls_data(); void systemRunPaths(); |