diff options
-rw-r--r-- | share/qbs/modules/cpp/DarwinGCC.qbs | 4 | ||||
-rw-r--r-- | share/qbs/modules/ib/IBModule.qbs | 31 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/ib/iconset/iconset.qbs | 7 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/ib/iconset/white.iconset/icon_16x16.png | bin | 0 -> 3303 bytes | |||
-rw-r--r-- | tests/auto/blackbox/testdata/ib/iconset/white.iconset/icon_16x16@2x.png | bin | 0 -> 3336 bytes | |||
-rw-r--r-- | tests/auto/blackbox/testdata/ib/iconsetapp/iconsetapp.qbs | 6 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/ib/iconsetapp/main.c | 4 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/ib/iconsetapp/white.iconset/icon_16x16.png | bin | 0 -> 3303 bytes | |||
-rw-r--r-- | tests/auto/blackbox/testdata/ib/iconsetapp/white.iconset/icon_16x16@2x.png | bin | 0 -> 3336 bytes | |||
-rw-r--r-- | tests/auto/blackbox/tst_blackbox.cpp | 30 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackbox.h | 2 |
11 files changed, 82 insertions, 2 deletions
diff --git a/share/qbs/modules/cpp/DarwinGCC.qbs b/share/qbs/modules/cpp/DarwinGCC.qbs index e74d4b84b..1081d3dc5 100644 --- a/share/qbs/modules/cpp/DarwinGCC.qbs +++ b/share/qbs/modules/cpp/DarwinGCC.qbs @@ -332,7 +332,7 @@ UnixGCC { Rule { multiplex: true - inputs: ["application", "infoplist", "pkginfo", "application_dsym", "compiled_nib", + inputs: ["application", "infoplist", "pkginfo", "icns", "application_dsym", "compiled_nib", "resourcerules", "ipa"] Artifact { @@ -351,7 +351,7 @@ UnixGCC { Rule { multiplex: true - inputs: ["dynamiclibrary", "infoplist", "pkginfo", "dynamiclibrary_dsym", "compiled_nib"] + inputs: ["dynamiclibrary", "infoplist", "pkginfo", "icns", "dynamiclibrary_dsym", "compiled_nib"] Artifact { filePath: product.destinationDirectory + "/" + BundleTools.wrapperName(product) diff --git a/share/qbs/modules/ib/IBModule.qbs b/share/qbs/modules/ib/IBModule.qbs index 6f30fb0a2..bee1dd9e4 100644 --- a/share/qbs/modules/ib/IBModule.qbs +++ b/share/qbs/modules/ib/IBModule.qbs @@ -14,6 +14,10 @@ Module { property stringList flags + // iconutil specific + property string iconutilName: "iconutil" + property string iconutilPath: iconutilName + // XIB/NIB specific property string ibtoolName: "ibtool" property string ibtoolPath: ibtoolName @@ -21,6 +25,7 @@ Module { // private properties property string outputFormat: "human-readable-text" + property string appleIconSuffix: ".icns" property string compiledNibSuffix: ".nib" property string ibtoolVersion: { return Ib.ibtoolVersion(ibtoolPath); } @@ -43,11 +48,37 @@ Module { } FileTagger { + patterns: ["*.iconset"] // bundle + fileTags: ["iconset"] + } + + FileTagger { patterns: ["*.nib", "*.xib"] fileTags: ["nib"] } Rule { + inputs: ["iconset"] + + Artifact { + filePath: { + var outputDirectory = BundleTools.isBundleProduct(product) + ? BundleTools.unlocalizedResourcesFolderPath(product) + : product.destinationDirectory; + return FileInfo.joinPaths(outputDirectory, input.completeBaseName + ModUtils.moduleProperty(product, "appleIconSuffix")) + } + fileTags: ["icns"] + } + + prepare: { + var args = ["--convert", "icns", "--output", output.filePath, input.filePath]; + var cmd = new Command(ModUtils.moduleProperty(product, "iconutilPath"), args); + cmd.description = ModUtils.moduleProperty(product, "iconutilName") + ' ' + input.fileName; + return cmd; + } + } + + Rule { inputs: ["nib"] explicitlyDependsOn: ["infoplist"] diff --git a/tests/auto/blackbox/testdata/ib/iconset/iconset.qbs b/tests/auto/blackbox/testdata/ib/iconset/iconset.qbs new file mode 100644 index 000000000..1d563f180 --- /dev/null +++ b/tests/auto/blackbox/testdata/ib/iconset/iconset.qbs @@ -0,0 +1,7 @@ +import qbs + +Product { + Depends { name: "ib" } + type: ["icns"] + files: ["white.iconset"] +} diff --git a/tests/auto/blackbox/testdata/ib/iconset/white.iconset/icon_16x16.png b/tests/auto/blackbox/testdata/ib/iconset/white.iconset/icon_16x16.png Binary files differnew file mode 100644 index 000000000..65ff1ff57 --- /dev/null +++ b/tests/auto/blackbox/testdata/ib/iconset/white.iconset/icon_16x16.png diff --git a/tests/auto/blackbox/testdata/ib/iconset/white.iconset/icon_16x16@2x.png b/tests/auto/blackbox/testdata/ib/iconset/white.iconset/icon_16x16@2x.png Binary files differnew file mode 100644 index 000000000..a5c69bccd --- /dev/null +++ b/tests/auto/blackbox/testdata/ib/iconset/white.iconset/icon_16x16@2x.png diff --git a/tests/auto/blackbox/testdata/ib/iconsetapp/iconsetapp.qbs b/tests/auto/blackbox/testdata/ib/iconsetapp/iconsetapp.qbs new file mode 100644 index 000000000..7e5323a0c --- /dev/null +++ b/tests/auto/blackbox/testdata/ib/iconsetapp/iconsetapp.qbs @@ -0,0 +1,6 @@ +import qbs + +CppApplication { + Depends { name: "ib" } + files: ["main.c", "white.iconset"] +} diff --git a/tests/auto/blackbox/testdata/ib/iconsetapp/main.c b/tests/auto/blackbox/testdata/ib/iconsetapp/main.c new file mode 100644 index 000000000..905869dfa --- /dev/null +++ b/tests/auto/blackbox/testdata/ib/iconsetapp/main.c @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} diff --git a/tests/auto/blackbox/testdata/ib/iconsetapp/white.iconset/icon_16x16.png b/tests/auto/blackbox/testdata/ib/iconsetapp/white.iconset/icon_16x16.png Binary files differnew file mode 100644 index 000000000..65ff1ff57 --- /dev/null +++ b/tests/auto/blackbox/testdata/ib/iconsetapp/white.iconset/icon_16x16.png diff --git a/tests/auto/blackbox/testdata/ib/iconsetapp/white.iconset/icon_16x16@2x.png b/tests/auto/blackbox/testdata/ib/iconsetapp/white.iconset/icon_16x16@2x.png Binary files differnew file mode 100644 index 000000000..a5c69bccd --- /dev/null +++ b/tests/auto/blackbox/testdata/ib/iconsetapp/white.iconset/icon_16x16@2x.png diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index 605582961..c791a6993 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -2265,6 +2265,36 @@ void TestBlackbox::testTypeScript() QVERIFY(regularFileExists(productBuildDir("animals") + "/main.js")); } +void TestBlackbox::testIconset() +{ + if (!HostOsInfo::isOsxHost()) + SKIP_TEST("only applies on OS X"); + + QDir::setCurrent(testDataDir + QLatin1String("/ib/iconset")); + + QbsRunParameters params; + params.arguments = QStringList() << "-f" << "iconset.qbs"; + QCOMPARE(runQbs(params), 0); + + QVERIFY((bool)m_qbsStdout.contains("warning")); // because some images are missing + QVERIFY(regularFileExists(productBuildDir("iconset") + "/white.icns")); +} + +void TestBlackbox::testIconsetApp() +{ + if (!HostOsInfo::isOsxHost()) + SKIP_TEST("only applies on OS X"); + + QDir::setCurrent(testDataDir + QLatin1String("/ib/iconsetapp")); + + QbsRunParameters params; + params.arguments = QStringList() << "-f" << "iconsetapp.qbs"; + QCOMPARE(runQbs(params), 0); + + QVERIFY((bool)m_qbsStdout.contains("warning")); // because some images are missing + QVERIFY(regularFileExists(productBuildDir("iconsetapp") + "/iconsetapp.app/Contents/Resources/white.icns")); +} + QString TestBlackbox::uniqueProductName(const QString &productName) const { return productName + '.' + buildProfileName; diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h index cf3ebb146..0ac522d76 100644 --- a/tests/auto/blackbox/tst_blackbox.h +++ b/tests/auto/blackbox/tst_blackbox.h @@ -185,6 +185,8 @@ private slots: void testWiX(); void testNodeJs(); void testTypeScript(); + void testIconset(); + void testIconsetApp(); private: QString uniqueProductName(const QString &productName) const; |