diff options
author | Brad King <brad.king@kitware.com> | 2017-04-05 14:14:13 -0400 |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-04-11 11:40:15 -0400 |
commit | 8c346bbc6ec3321c8ac99a5495cf4d842c71e260 (patch) | |
tree | 7dbba9d89a904cd604338daecb9d663e9fd879ae /Source | |
parent | 5f4e26dfc8c4ae26e9226236a05d20b826100db9 (diff) | |
download | cmake-8c346bbc6ec3321c8ac99a5495cf4d842c71e260.tar.gz |
Xcode: Compute a concrete object file arch dir if possible
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGlobalXCodeGenerator.cxx | 19 | ||||
-rw-r--r-- | Source/cmGlobalXCodeGenerator.h | 1 |
2 files changed, 19 insertions, 1 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index efcbeff628..d07cc3d712 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -152,6 +152,7 @@ cmGlobalXCodeGenerator::cmGlobalXCodeGenerator(cmake* cm, this->CurrentLocalGenerator = 0; this->XcodeBuildCommandInitialized = false; + this->ObjectDirArchDefault = "$(CURRENT_ARCH)"; this->ComputeObjectDirArch(); cm->GetState()->SetIsGeneratorMultiConfig(true); @@ -3210,12 +3211,28 @@ void cmGlobalXCodeGenerator::ComputeArchitectures(cmMakefile* mf) cmSystemTools::ExpandListArgument(std::string(osxArch), this->Architectures); } + + if (this->Architectures.empty()) { + // With no ARCHS we use ONLY_ACTIVE_ARCH. + // Look up the arch that Xcode chooses in this case. + if (const char* arch = mf->GetDefinition("CMAKE_XCODE_CURRENT_ARCH")) { + this->ObjectDirArchDefault = arch; + } + } + + this->ComputeObjectDirArch(); } void cmGlobalXCodeGenerator::ComputeObjectDirArch() { if (this->XcodeVersion >= 21) { - this->ObjectDirArch = "$(CURRENT_ARCH)"; + if (this->Architectures.size() > 1) { + this->ObjectDirArch = "$(CURRENT_ARCH)"; + } else if (!this->Architectures.empty()) { + this->ObjectDirArch = this->Architectures[0]; + } else { + this->ObjectDirArch = this->ObjectDirArchDefault; + } } else { #if defined(__ppc__) this->ObjectDirArch = "ppc"; diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h index 2cd99855cf..79218423c3 100644 --- a/Source/cmGlobalXCodeGenerator.h +++ b/Source/cmGlobalXCodeGenerator.h @@ -264,6 +264,7 @@ private: std::map<std::string, cmXCodeObject*> FileRefs; std::map<cmGeneratorTarget const*, cmXCodeObject*> XCodeObjectMap; std::vector<std::string> Architectures; + std::string ObjectDirArchDefault; std::string ObjectDirArch; std::string GeneratorToolset; }; |