From 5f4e26dfc8c4ae26e9226236a05d20b826100db9 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 5 Apr 2017 14:00:27 -0400 Subject: Xcode: Refactor object directory name computation Factor out a helper function to compute the object directory name architecture component. --- Source/cmGlobalXCodeGenerator.cxx | 29 +++++++++++++++++++---------- Source/cmGlobalXCodeGenerator.h | 2 ++ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index cbad52c..efcbeff 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -152,6 +152,8 @@ cmGlobalXCodeGenerator::cmGlobalXCodeGenerator(cmake* cm, this->CurrentLocalGenerator = 0; this->XcodeBuildCommandInitialized = false; + this->ComputeObjectDirArch(); + cm->GetState()->SetIsGeneratorMultiConfig(true); } @@ -3210,6 +3212,21 @@ void cmGlobalXCodeGenerator::ComputeArchitectures(cmMakefile* mf) } } +void cmGlobalXCodeGenerator::ComputeObjectDirArch() +{ + if (this->XcodeVersion >= 21) { + this->ObjectDirArch = "$(CURRENT_ARCH)"; + } else { +#if defined(__ppc__) + this->ObjectDirArch = "ppc"; +#elif defined(__i386) + this->ObjectDirArch = "i386"; +#else + this->ObjectDirArch = ""; +#endif + } +} + void cmGlobalXCodeGenerator::CreateXCodeDependHackTarget( std::vector& targets) { @@ -3719,15 +3736,7 @@ void cmGlobalXCodeGenerator::ComputeTargetObjectDirectory( std::string configName = this->GetCMakeCFGIntDir(); std::string dir = this->GetObjectsNormalDirectory("$(PROJECT_NAME)", configName, gt); - if (this->XcodeVersion >= 21) { - dir += "$(CURRENT_ARCH)/"; - } else { -#ifdef __ppc__ - dir += "ppc/"; -#endif -#ifdef __i386 - dir += "i386/"; -#endif - } + dir += this->ObjectDirArch; + dir += "/"; gt->ObjectDirectory = dir; } diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h index beb789b..2cd9985 100644 --- a/Source/cmGlobalXCodeGenerator.h +++ b/Source/cmGlobalXCodeGenerator.h @@ -241,6 +241,7 @@ private: const cmGeneratorTarget* t) const; void ComputeArchitectures(cmMakefile* mf); + void ComputeObjectDirArch(); void addObject(cmXCodeObject* obj); std::string PostBuildMakeTarget(std::string const& tName, @@ -263,6 +264,7 @@ private: std::map FileRefs; std::map XCodeObjectMap; std::vector Architectures; + std::string ObjectDirArch; std::string GeneratorToolset; }; -- cgit v0.12