aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2017-07-21 10:18:34 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2017-07-21 08:41:08 +0000
commit8cf4a530816132323c9109fca47d05e6859cd270 (patch)
tree8a5ddc0643a82c3c5e1b58b1863f098e0c62df52
parent20825b73d125c689a13a154266d2bbda0aab2a15 (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>
-rw-r--r--share/qbs/modules/cpp/GenericGCC.qbs6
-rw-r--r--tests/auto/blackbox/testdata/static-lib-without-sources/lib.cpp1
-rw-r--r--tests/auto/blackbox/testdata/static-lib-without-sources/static-lib-without-sources.qbs15
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp6
-rw-r--r--tests/auto/blackbox/tst_blackbox.h1
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();