summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalXCodeGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-10-21 17:00:49 (GMT)
committerBrad King <brad.king@kitware.com>2009-10-21 17:00:49 (GMT)
commit2dc39b8c329425cb54e5e111e2b00d79caa1db36 (patch)
tree516539dab9c55976dbf95cdc6896abacaff4ae7a /Source/cmGlobalXCodeGenerator.cxx
parent2f94a2c919ddb39f33c47b4baa7bd37e2ae4cacd (diff)
downloadCMake-2dc39b8c329425cb54e5e111e2b00d79caa1db36.zip
CMake-2dc39b8c329425cb54e5e111e2b00d79caa1db36.tar.gz
CMake-2dc39b8c329425cb54e5e111e2b00d79caa1db36.tar.bz2
Define per-target OSX_ARCHITECTURES property
The CMAKE_OSX_ARCHITECTURES variable works only as a global setting. This commit defines target properties OSX_ARCHITECTURES OSX_ARCHITECTURES_<CONFIG> to specify OS X architectures on a per-target and per-configuration basis. See issue #8725.
Diffstat (limited to 'Source/cmGlobalXCodeGenerator.cxx')
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx28
1 files changed, 28 insertions, 0 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index d2c75b2..19d75d4 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -1515,6 +1515,34 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
extraLinkOptions += targetLinkFlags;
}
+ // Set target-specific architectures.
+ std::vector<std::string> archs;
+ target.GetAppleArchs(configName, archs);
+ if(!archs.empty())
+ {
+ // Enable ARCHS attribute.
+ buildSettings->AddAttribute("ONLY_ACTIVE_ARCH",
+ this->CreateString("NO"));
+
+ // Store ARCHS value.
+ if(archs.size() == 1)
+ {
+ buildSettings->AddAttribute("ARCHS",
+ this->CreateString(archs[0].c_str()));
+ }
+ else
+ {
+ cmXCodeObject* archObjects =
+ this->CreateObject(cmXCodeObject::OBJECT_LIST);
+ for(std::vector<std::string>::iterator i = archs.begin();
+ i != archs.end(); i++)
+ {
+ archObjects->AddObject(this->CreateString((*i).c_str()));
+ }
+ buildSettings->AddAttribute("ARCHS", archObjects);
+ }
+ }
+
// Get the product name components.
std::string pnprefix;
std::string pnbase;