summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregor Jasny <gjasny@googlemail.com>2016-06-19 18:30:00 (GMT)
committerGregor Jasny <gjasny@googlemail.com>2016-07-22 06:16:50 (GMT)
commit2b909c08f526536d4dd84dfe68edf22682ae88ca (patch)
tree8ad9d713c5a9c429afd21ce099a55313258c6cb1
parent7bfbcc75a3158677897b2a80b02500425620e714 (diff)
downloadCMake-2b909c08f526536d4dd84dfe68edf22682ae88ca.zip
CMake-2b909c08f526536d4dd84dfe68edf22682ae88ca.tar.gz
CMake-2b909c08f526536d4dd84dfe68edf22682ae88ca.tar.bz2
Honor BUNDLE_EXTENSION also for App Bundles (#16148)
-rw-r--r--Source/cmGeneratorTarget.cxx7
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx5
-rw-r--r--Source/cmInstallTargetGenerator.cxx13
3 files changed, 22 insertions, 3 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index c9cbd00..f45d4f0 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -1350,7 +1350,12 @@ std::string cmGeneratorTarget::GetAppBundleDirectory(const std::string& config,
bool contentOnly) const
{
std::string fpath = this->GetFullName(config, false);
- fpath += ".app";
+ fpath += ".";
+ const char* ext = this->GetProperty("BUNDLE_EXTENSION");
+ if (!ext) {
+ ext = "app";
+ }
+ fpath += ext;
if (!this->Makefile->PlatformIsAppleIos()) {
fpath += "/Contents";
if (!contentOnly) {
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 23fad51..52f8da5 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -1878,6 +1878,11 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
// Handle bundles and normal executables separately.
if (gtgt->GetPropertyAsBool("MACOSX_BUNDLE")) {
+ const char* ext = gtgt->GetProperty("BUNDLE_EXTENSION");
+ if (ext) {
+ buildSettings->AddAttribute("WRAPPER_EXTENSION",
+ this->CreateString(ext));
+ }
std::string plist = this->ComputeInfoPListLocation(gtgt);
// Xcode will create the final version of Info.plist at build time,
// so let it replace the executable name. This avoids creating
diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx
index 448d278..4b2f40c 100644
--- a/Source/cmInstallTargetGenerator.cxx
+++ b/Source/cmInstallTargetGenerator.cxx
@@ -142,13 +142,22 @@ void cmInstallTargetGenerator::GenerateScriptForConfig(
if (this->Target->IsAppBundleOnApple()) {
cmMakefile const* mf = this->Target->Target->GetMakefile();
+ // Get App Bundle Extension
+ const char* ext = this->Target->GetProperty("BUNDLE_EXTENSION");
+ if (!ext) {
+ ext = "app";
+ }
+
// Install the whole app bundle directory.
type = cmInstallType_DIRECTORY;
literal_args += " USE_SOURCE_PERMISSIONS";
- from1 += ".app";
+ from1 += ".";
+ from1 += ext;
// Tweaks apply to the binary inside the bundle.
- to1 += ".app/";
+ to1 += ".";
+ to1 += ext;
+ to1 += "/";
if (!mf->PlatformIsAppleIos()) {
to1 += "Contents/MacOS/";
}