summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2005-01-28 17:21:35 -0500
committerBill Hoffman <bill.hoffman@kitware.com>2005-01-28 17:21:35 -0500
commit2ca86b868ca71e0dec922a02702f6d859385c817 (patch)
tree3ddc78d200fa2565ae3a50e5960c62e8dc1f5237 /Source
parent3ec0862222f37465c273c7118ff50764a25dda84 (diff)
downloadcmake-2ca86b868ca71e0dec922a02702f6d859385c817.tar.gz
ENH: move executable xcode stuff to a method
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx135
-rw-r--r--Source/cmGlobalXCodeGenerator.h3
2 files changed, 85 insertions, 53 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 3814b907eb..f6129014a1 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -79,7 +79,8 @@ void cmGlobalXCodeGenerator::ClearXCodeObjects()
}
//----------------------------------------------------------------------------
-cmXCodeObject* cmGlobalXCodeGenerator::CreateObject(cmXCodeObject::PBXType ptype)
+cmXCodeObject*
+cmGlobalXCodeGenerator::CreateObject(cmXCodeObject::PBXType ptype)
{
cmXCodeObject* obj = new cmXCodeObject(ptype, cmXCodeObject::OBJECT);
m_XCodeObjects.push_back(obj);
@@ -87,14 +88,16 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateObject(cmXCodeObject::PBXType ptype
}
//----------------------------------------------------------------------------
-cmXCodeObject* cmGlobalXCodeGenerator::CreateObject(cmXCodeObject::Type type)
+cmXCodeObject*
+cmGlobalXCodeGenerator::CreateObject(cmXCodeObject::Type type)
{
cmXCodeObject* obj = new cmXCodeObject(cmXCodeObject::None, type);
m_XCodeObjects.push_back(obj);
return obj;
}
-cmXCodeObject* cmGlobalXCodeGenerator::CreateString(const char* s)
+cmXCodeObject*
+cmGlobalXCodeGenerator::CreateString(const char* s)
{
cmXCodeObject* obj = this->CreateObject(cmXCodeObject::STRING);
obj->SetString(s);
@@ -119,7 +122,8 @@ cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg,
cmXCodeObject* settings = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
buildFile->AddAttribute("settings", settings);
fileRef->AddAttribute("fileEncoding", this->CreateString("4"));
- fileRef->AddAttribute("lastKnownFileType", this->CreateString("sourcecode.cpp.cpp"));
+ fileRef->AddAttribute("lastKnownFileType",
+ this->CreateString("sourcecode.cpp.cpp"));
fileRef->AddAttribute("path", this->CreateString(
lg->ConvertToRelativeOutputPath(sf->GetFullPath().c_str()).c_str()));
fileRef->AddAttribute("refType", this->CreateString("4"));
@@ -136,80 +140,107 @@ void cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++)
{
// create source build phase
- cmXCodeObject* sourceBuildPhase = this->CreateObject(cmXCodeObject::PBXSourcesBuildPhase);
- sourceBuildPhase->AddAttribute("buildActionMask", this->CreateString("2147483647"));
+ cmXCodeObject* sourceBuildPhase =
+ this->CreateObject(cmXCodeObject::PBXSourcesBuildPhase);
+ sourceBuildPhase->AddAttribute("buildActionMask",
+ this->CreateString("2147483647"));
cmXCodeObject* buildFiles = this->CreateObject(cmXCodeObject::OBJECT_LIST);
sourceBuildPhase->AddAttribute("files", buildFiles);
- sourceBuildPhase->AddAttribute("runOnlyForDeploymentPostprocessing", this->CreateString("0"));
+ sourceBuildPhase->AddAttribute("runOnlyForDeploymentPostprocessing",
+ this->CreateString("0"));
std::vector<cmSourceFile*> &classes = l->second.GetSourceFiles();
// add all the sources
for(std::vector<cmSourceFile*>::iterator i = classes.begin();
i != classes.end(); ++i)
{
- buildFiles->AddObject(this->CreateXCodeSourceFile(gen, *i, mainGroupChildren));
+ buildFiles->AddObject(this->CreateXCodeSourceFile(gen, *i,
+ mainGroupChildren));
}
// create header build phase
- cmXCodeObject* headerBuildPhase = this->CreateObject(cmXCodeObject::PBXHeadersBuildPhase);
- headerBuildPhase->AddAttribute("buildActionMask", this->CreateString("2147483647"));
+ cmXCodeObject* headerBuildPhase =
+ this->CreateObject(cmXCodeObject::PBXHeadersBuildPhase);
+ headerBuildPhase->AddAttribute("buildActionMask",
+ this->CreateString("2147483647"));
buildFiles = this->CreateObject(cmXCodeObject::OBJECT_LIST);
headerBuildPhase->AddAttribute("files", buildFiles);
- headerBuildPhase->AddAttribute("runOnlyForDeploymentPostprocessing", this->CreateString("0"));
+ headerBuildPhase->AddAttribute("runOnlyForDeploymentPostprocessing",
+ this->CreateString("0"));
// create framework build phase
- cmXCodeObject* frameworkBuildPhase = this->CreateObject(cmXCodeObject::PBXFrameworksBuildPhase);
- frameworkBuildPhase->AddAttribute("buildActionMask", this->CreateString("2147483647"));
+ cmXCodeObject* frameworkBuildPhase =
+ this->CreateObject(cmXCodeObject::PBXFrameworksBuildPhase);
+ frameworkBuildPhase->AddAttribute("buildActionMask",
+ this->CreateString("2147483647"));
buildFiles = this->CreateObject(cmXCodeObject::OBJECT_LIST);
frameworkBuildPhase->AddAttribute("files", buildFiles);
- frameworkBuildPhase->AddAttribute("runOnlyForDeploymentPostprocessing", this->CreateString("0"));
+ frameworkBuildPhase->AddAttribute("runOnlyForDeploymentPostprocessing",
+ this->CreateString("0"));
cmXCodeObject* buildPhases = this->CreateObject(cmXCodeObject::OBJECT_LIST);
buildPhases->AddObject(sourceBuildPhase);
buildPhases->AddObject(headerBuildPhase);
buildPhases->AddObject(frameworkBuildPhase);
-
- if((l->second.GetType() == cmTarget::STATIC_LIBRARY) ||
- (l->second.GetType() == cmTarget::SHARED_LIBRARY) ||
- (l->second.GetType() == cmTarget::MODULE_LIBRARY))
- {
- }
- else if ( l->second.GetType() == cmTarget::EXECUTABLE )
- {
- cmXCodeObject* target = this->CreateObject(cmXCodeObject::PBXNativeTarget);
- targets.push_back(target);
- target->AddAttribute("buildPhases", buildPhases);
- cmXCodeObject* buildRules = this->CreateObject(cmXCodeObject::OBJECT_LIST);
- target->AddAttribute("buildRules", buildRules);
- cmXCodeObject* buildSettings = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
- buildSettings->AddAttribute("INSTALL_PATH", this->CreateString("/usr/local/bin"));
- buildSettings->AddAttribute("OPTIMIZATION_CFLAGS", this->CreateString(""));
- buildSettings->AddAttribute("OTHER_CFLAGS", this->CreateString(""));
- buildSettings->AddAttribute("OTHER_LDFLAGS", this->CreateString(""));
- buildSettings->AddAttribute("OTHER_REZFLAGS", this->CreateString(""));
- buildSettings->AddAttribute("PRODUCT_NAME", this->CreateString(l->first.c_str()));
- buildSettings->AddAttribute("SECTORDER_FLAGS", this->CreateString(""));
- buildSettings->AddAttribute("WARNING_CFLAGS",
- this->CreateString("-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"));
- target->AddAttribute("buildSettings", buildSettings);
- cmXCodeObject* dependencies = this->CreateObject(cmXCodeObject::OBJECT_LIST);
- target->AddAttribute("dependencies", dependencies);
- target->AddAttribute("name", this->CreateString(l->first.c_str()));
- target->AddAttribute("productName",this->CreateString(l->first.c_str()));
- cmXCodeObject* fileRef = this->CreateObject(cmXCodeObject::PBXFileReference);
- fileRef->AddAttribute("explicitFileType", this->CreateString("\"compiled.mach-o.executable\""));
- fileRef->AddAttribute("includedInIndex", this->CreateString("0"));
- fileRef->AddAttribute("path", this->CreateString(l->first.c_str()));
- fileRef->AddAttribute("refType", this->CreateString("3"));
- fileRef->AddAttribute("sourceTree", this->CreateString("BUILT_PRODUCTS_DIR"));
- target->AddAttribute("productReference", this->CreateObjectReference(fileRef));
- target->AddAttribute("productType", this->CreateString("\"com.apple.product-type.tool\""));
- }
- else if (l->second.GetType() == cmTarget::UTILITY)
+ switch(l->second.GetType())
{
+ case cmTarget::STATIC_LIBRARY:
+ break;
+ case cmTarget::SHARED_LIBRARY:
+ break;
+ case cmTarget::MODULE_LIBRARY:
+ break;
+ case cmTarget::EXECUTABLE:
+ targets.push_back(this->CreateExecutable(l->second, buildPhases));
+ break;
+ case cmTarget::UTILITY:
+ break;
}
}
+}
+cmXCodeObject* cmGlobalXCodeGenerator::CreateExecutable(cmTarget& cmtarget,
+ cmXCodeObject* buildPhases)
+{
+ cmXCodeObject* target = this->CreateObject(cmXCodeObject::PBXNativeTarget);
+ target->AddAttribute("buildPhases", buildPhases);
+ cmXCodeObject* buildRules = this->CreateObject(cmXCodeObject::OBJECT_LIST);
+ target->AddAttribute("buildRules", buildRules);
+ cmXCodeObject* buildSettings =
+ this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
+ buildSettings->AddAttribute("INSTALL_PATH",
+ this->CreateString("/usr/local/bin"));
+ buildSettings->AddAttribute("OPTIMIZATION_CFLAGS",
+ this->CreateString(""));
+ buildSettings->AddAttribute("OTHER_CFLAGS",
+ this->CreateString(""));
+ buildSettings->AddAttribute("OTHER_LDFLAGS",
+ this->CreateString(""));
+ buildSettings->AddAttribute("OTHER_REZFLAGS",
+ this->CreateString(""));
+ buildSettings->AddAttribute("PRODUCT_NAME",
+ this->CreateString(cmtarget.GetName()));
+ buildSettings->AddAttribute("SECTORDER_FLAGS",
+ this->CreateString(""));
+ buildSettings->AddAttribute("WARNING_CFLAGS",
+ this->CreateString("-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"));
+ target->AddAttribute("buildSettings", buildSettings);
+ cmXCodeObject* dependencies = this->CreateObject(cmXCodeObject::OBJECT_LIST);
+ target->AddAttribute("dependencies", dependencies);
+ target->AddAttribute("name", this->CreateString(cmtarget.GetName()));
+ target->AddAttribute("productName",this->CreateString(cmtarget.GetName()));
+ cmXCodeObject* fileRef = this->CreateObject(cmXCodeObject::PBXFileReference);
+ fileRef->AddAttribute("explicitFileType",
+ this->CreateString("\"compiled.mach-o.executable\""));
+ fileRef->AddAttribute("includedInIndex", this->CreateString("0"));
+ fileRef->AddAttribute("path", this->CreateString(cmtarget.GetName()));
+ fileRef->AddAttribute("refType", this->CreateString("3"));
+ fileRef->AddAttribute("sourceTree", this->CreateString("BUILT_PRODUCTS_DIR"));
+ target->AddAttribute("productReference", this->CreateObjectReference(fileRef));
+ target->AddAttribute("productType",
+ this->CreateString("\"com.apple.product-type.tool\""));
+ return target;
}
+
//----------------------------------------------------------------------------
void cmGlobalXCodeGenerator::CreateXCodeObjects(cmLocalGenerator* ,
std::vector<cmLocalGenerator*>&
diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h
index 73842c3d1d..55a9b44a18 100644
--- a/Source/cmGlobalXCodeGenerator.h
+++ b/Source/cmGlobalXCodeGenerator.h
@@ -71,7 +71,8 @@ private:
cmXCodeObject* CreateObject(cmXCodeObject::Type type);
cmXCodeObject* CreateString(const char* s);
cmXCodeObject* CreateObjectReference(cmXCodeObject*);
-
+ cmXCodeObject* CreateExecutable(cmTarget& cmtarget,
+ cmXCodeObject* buildPhases);
// delete all objects in the m_XCodeObjects vector.
void ClearXCodeObjects();
void CreateXCodeObjects(cmLocalGenerator* root,