From ade8e0fc9b216190328b6fd3375796e82e34c323 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= <morten.sorvig@digia.com> Date: Tue, 14 Oct 2014 15:05:23 +0200 Subject: [PATCH] Add CFBundleIdentifier to the bundle Info.plist's MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refactor the current app CFBundleIdentifier support: handle frameworks as well. Add @BUNDLEIDENTIFIER@ placeholder to the OS X info.plist.lib templates. This means the Qt frameworks will now get a valid CFBundleIdentifier entry the same way as app bundles: by extracting the identifier prefix from Xcode settings and appending framework name. Task-number: QTBUG-32896 Change-Id: Ica8f28332a88e37a823c46fca7a2c373157af020 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> --- mkspecs/macx-clang-32/Info.plist.lib | 2 ++ mkspecs/macx-clang/Info.plist.lib | 2 ++ mkspecs/macx-g++-32/Info.plist.lib | 2 ++ mkspecs/macx-g++/Info.plist.lib | 2 ++ mkspecs/macx-g++40/Info.plist.lib | 2 ++ mkspecs/macx-g++42/Info.plist.lib | 2 ++ mkspecs/macx-icc/Info.plist.lib | 2 ++ mkspecs/macx-llvm/Info.plist.lib | 2 ++ qmake/generators/unix/unixmake2.cpp | 22 +++++++++++++--------- 9 files changed, 29 insertions(+), 9 deletions(-) diff --git a/mkspecs/macx-clang-32/Info.plist.lib b/mkspecs/macx-clang-32/Info.plist.lib index 2a44d1721ec..7cbdb9af129 100644 --- a/mkspecs/macx-clang-32/Info.plist.lib +++ b/mkspecs/macx-clang-32/Info.plist.lib @@ -14,6 +14,8 @@ <string>@TYPEINFO@</string> <key>CFBundleExecutable</key> <string>@LIBRARY@</string> + <key>CFBundleIdentifier</key> + <string>@BUNDLEIDENTIFIER@</string> <key>NOTE</key> <string>Please, do NOT change this file -- It was generated by Qt/QMake.</string> </dict> diff --git a/mkspecs/macx-clang/Info.plist.lib b/mkspecs/macx-clang/Info.plist.lib index 2a44d1721ec..7cbdb9af129 100644 --- a/mkspecs/macx-clang/Info.plist.lib +++ b/mkspecs/macx-clang/Info.plist.lib @@ -14,6 +14,8 @@ <string>@TYPEINFO@</string> <key>CFBundleExecutable</key> <string>@LIBRARY@</string> + <key>CFBundleIdentifier</key> + <string>@BUNDLEIDENTIFIER@</string> <key>NOTE</key> <string>Please, do NOT change this file -- It was generated by Qt/QMake.</string> </dict> diff --git a/mkspecs/macx-g++-32/Info.plist.lib b/mkspecs/macx-g++-32/Info.plist.lib index 2a44d1721ec..7cbdb9af129 100644 --- a/mkspecs/macx-g++-32/Info.plist.lib +++ b/mkspecs/macx-g++-32/Info.plist.lib @@ -14,6 +14,8 @@ <string>@TYPEINFO@</string> <key>CFBundleExecutable</key> <string>@LIBRARY@</string> + <key>CFBundleIdentifier</key> + <string>@BUNDLEIDENTIFIER@</string> <key>NOTE</key> <string>Please, do NOT change this file -- It was generated by Qt/QMake.</string> </dict> diff --git a/mkspecs/macx-g++/Info.plist.lib b/mkspecs/macx-g++/Info.plist.lib index 2a44d1721ec..7cbdb9af129 100644 --- a/mkspecs/macx-g++/Info.plist.lib +++ b/mkspecs/macx-g++/Info.plist.lib @@ -14,6 +14,8 @@ <string>@TYPEINFO@</string> <key>CFBundleExecutable</key> <string>@LIBRARY@</string> + <key>CFBundleIdentifier</key> + <string>@BUNDLEIDENTIFIER@</string> <key>NOTE</key> <string>Please, do NOT change this file -- It was generated by Qt/QMake.</string> </dict> diff --git a/mkspecs/macx-g++40/Info.plist.lib b/mkspecs/macx-g++40/Info.plist.lib index 2a44d1721ec..7cbdb9af129 100644 --- a/mkspecs/macx-g++40/Info.plist.lib +++ b/mkspecs/macx-g++40/Info.plist.lib @@ -14,6 +14,8 @@ <string>@TYPEINFO@</string> <key>CFBundleExecutable</key> <string>@LIBRARY@</string> + <key>CFBundleIdentifier</key> + <string>@BUNDLEIDENTIFIER@</string> <key>NOTE</key> <string>Please, do NOT change this file -- It was generated by Qt/QMake.</string> </dict> diff --git a/mkspecs/macx-g++42/Info.plist.lib b/mkspecs/macx-g++42/Info.plist.lib index 2a44d1721ec..7cbdb9af129 100644 --- a/mkspecs/macx-g++42/Info.plist.lib +++ b/mkspecs/macx-g++42/Info.plist.lib @@ -14,6 +14,8 @@ <string>@TYPEINFO@</string> <key>CFBundleExecutable</key> <string>@LIBRARY@</string> + <key>CFBundleIdentifier</key> + <string>@BUNDLEIDENTIFIER@</string> <key>NOTE</key> <string>Please, do NOT change this file -- It was generated by Qt/QMake.</string> </dict> diff --git a/mkspecs/macx-icc/Info.plist.lib b/mkspecs/macx-icc/Info.plist.lib index 2a44d1721ec..7cbdb9af129 100644 --- a/mkspecs/macx-icc/Info.plist.lib +++ b/mkspecs/macx-icc/Info.plist.lib @@ -14,6 +14,8 @@ <string>@TYPEINFO@</string> <key>CFBundleExecutable</key> <string>@LIBRARY@</string> + <key>CFBundleIdentifier</key> + <string>@BUNDLEIDENTIFIER@</string> <key>NOTE</key> <string>Please, do NOT change this file -- It was generated by Qt/QMake.</string> </dict> diff --git a/mkspecs/macx-llvm/Info.plist.lib b/mkspecs/macx-llvm/Info.plist.lib index 2a44d1721ec..7cbdb9af129 100644 --- a/mkspecs/macx-llvm/Info.plist.lib +++ b/mkspecs/macx-llvm/Info.plist.lib @@ -14,6 +14,8 @@ <string>@TYPEINFO@</string> <key>CFBundleExecutable</key> <string>@LIBRARY@</string> + <key>CFBundleIdentifier</key> + <string>@BUNDLEIDENTIFIER@</string> <key>NOTE</key> <string>Please, do NOT change this file -- It was generated by Qt/QMake.</string> </dict> diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp index d9b0e10057f..8270f02febc 100644 --- a/qmake/generators/unix/unixmake2.cpp +++ b/qmake/generators/unix/unixmake2.cpp @@ -814,22 +814,26 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t) } commonSedArgs << "-e \"s,@TYPEINFO@,"<< (project->isEmpty("QMAKE_PKGINFO_TYPEINFO") ? QString::fromLatin1("????") : project->first("QMAKE_PKGINFO_TYPEINFO").left(4)) << ",g\" "; + + QString bundlePrefix = project->first("QMAKE_TARGET_BUNDLE_PREFIX").toQString(); + if (bundlePrefix.isEmpty()) + bundlePrefix = "com.yourcompany"; + if (bundlePrefix.endsWith(".")) + bundlePrefix.chop(1); + QString bundleIdentifier = bundlePrefix + "." + var("QMAKE_BUNDLE"); + if (bundleIdentifier.endsWith(".app")) + bundleIdentifier.chop(4); + if (bundleIdentifier.endsWith(".framework")) + bundleIdentifier.chop(10); + commonSedArgs << "-e \"s,@BUNDLEIDENTIFIER@," << bundleIdentifier << ",g\" "; + if (isApp) { QString icon = fileFixify(var("ICON")); - QString bundlePrefix = project->first("QMAKE_TARGET_BUNDLE_PREFIX").toQString(); - if (bundlePrefix.isEmpty()) - bundlePrefix = "com.yourcompany"; - if (bundlePrefix.endsWith(".")) - bundlePrefix.chop(1); - QString bundleIdentifier = bundlePrefix + "." + var("QMAKE_BUNDLE"); - if (bundleIdentifier.endsWith(".app")) - bundleIdentifier.chop(4); t << "@$(DEL_FILE) " << info_plist_out << "\n\t" << "@sed "; foreach (const ProString &arg, commonSedArgs) t << arg; t << "-e \"s,@ICON@," << icon.section(Option::dir_sep, -1) << ",g\" " - << "-e \"s,@BUNDLEIDENTIFIER@," << bundleIdentifier << ",g\" " << "-e \"s,@EXECUTABLE@," << var("QMAKE_ORIG_TARGET") << ",g\" " << "-e \"s,@TYPEINFO@,"<< (project->isEmpty("QMAKE_PKGINFO_TYPEINFO") ? QString::fromLatin1("????") : project->first("QMAKE_PKGINFO_TYPEINFO").left(4)) << ",g\" " -- GitLab