|  | @@ -295,6 +295,10 @@ void cmGlobalXCodeGenerator::Generate()
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    this->ForceLinkerLanguages();
 | 
	
		
			
				|  |  |    this->cmGlobalGenerator::Generate();
 | 
	
		
			
				|  |  | +  if(cmSystemTools::GetErrorOccuredFlag())
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +    return;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    for(it = this->ProjectMap.begin(); it!= this->ProjectMap.end(); ++it)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      cmLocalGenerator* root = it->second[0];
 | 
	
	
		
			
				|  | @@ -945,6 +949,20 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // Add object library contents as external objects. (Equivalent to
 | 
	
		
			
				|  |  | +    // the externalObjFiles above, except each one is not a cmSourceFile
 | 
	
		
			
				|  |  | +    // within the target.)
 | 
	
		
			
				|  |  | +    std::vector<std::string> objs;
 | 
	
		
			
				|  |  | +    this->GetGeneratorTarget(&cmtarget)->UseObjectLibraries(objs);
 | 
	
		
			
				|  |  | +    for(std::vector<std::string>::const_iterator
 | 
	
		
			
				|  |  | +          oi = objs.begin(); oi != objs.end(); ++oi)
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +      std::string obj = *oi;
 | 
	
		
			
				|  |  | +      cmXCodeObject* xsf =
 | 
	
		
			
				|  |  | +        this->CreateXCodeSourceFileFromPath(obj, cmtarget, "");
 | 
	
		
			
				|  |  | +      externalObjFiles.push_back(xsf);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      // some build phases only apply to bundles and/or frameworks
 | 
	
		
			
				|  |  |      bool isFrameworkTarget = cmtarget.IsFrameworkOnApple();
 | 
	
		
			
				|  |  |      bool isBundleTarget = cmtarget.GetPropertyAsBool("MACOSX_BUNDLE");
 | 
	
	
		
			
				|  | @@ -2719,6 +2737,21 @@ void cmGlobalXCodeGenerator::CreateGroups(cmLocalGenerator* root,
 | 
	
		
			
				|  |  |          cmStdString key = GetGroupMapKey(cmtarget, sf);
 | 
	
		
			
				|  |  |          this->GroupMap[key] = pbxgroup;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // Put OBJECT_LIBRARY objects in proper groups:
 | 
	
		
			
				|  |  | +      std::vector<std::string> objs;
 | 
	
		
			
				|  |  | +      this->GetGeneratorTarget(&cmtarget)->UseObjectLibraries(objs);
 | 
	
		
			
				|  |  | +      for(std::vector<std::string>::const_iterator
 | 
	
		
			
				|  |  | +            oi = objs.begin(); oi != objs.end(); ++oi)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +        std::string const& source = *oi;
 | 
	
		
			
				|  |  | +        cmSourceGroup& sourceGroup =
 | 
	
		
			
				|  |  | +          mf->FindSourceGroup(source.c_str(), sourceGroups);
 | 
	
		
			
				|  |  | +        cmXCodeObject* pbxgroup =
 | 
	
		
			
				|  |  | +          this->CreateOrGetPBXGroup(cmtarget, &sourceGroup);
 | 
	
		
			
				|  |  | +        cmStdString key = GetGroupMapKeyFromPath(cmtarget, source);
 | 
	
		
			
				|  |  | +        this->GroupMap[key] = pbxgroup;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |