|  | @@ -435,7 +435,8 @@ void cmGlobalUnixMakefileGenerator3
 | 
	
		
			
				|  |  |           (l->second.GetType() == cmTarget::OBJECT_LIBRARY) ||
 | 
	
		
			
				|  |  |           (l->second.GetType() == cmTarget::UTILITY))
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -        std::string tname = lg->GetRelativeTargetDirectory(l->second);
 | 
	
		
			
				|  |  | +        cmGeneratorTarget* gt = this->GetGeneratorTarget(&l->second);
 | 
	
		
			
				|  |  | +        std::string tname = lg->GetRelativeTargetDirectory(gt);
 | 
	
		
			
				|  |  |          tname += "/DependInfo.cmake";
 | 
	
		
			
				|  |  |          cmSystemTools::ConvertToUnixSlashes(tname);
 | 
	
		
			
				|  |  |          cmakefileStream << "  \"" << tname << "\"\n";
 | 
	
	
		
			
				|  | @@ -484,7 +485,7 @@ cmGlobalUnixMakefileGenerator3
 | 
	
		
			
				|  |  |            gtarget
 | 
	
		
			
				|  |  |              ->NeedRelinkBeforeInstall(lg->GetConfigName())))
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -        std::string tname = lg->GetRelativeTargetDirectory(*gtarget->Target);
 | 
	
		
			
				|  |  | +        std::string tname = lg->GetRelativeTargetDirectory(gtarget);
 | 
	
		
			
				|  |  |          tname += "/";
 | 
	
		
			
				|  |  |          tname += pass;
 | 
	
		
			
				|  |  |          depends.push_back(tname);
 | 
	
	
		
			
				|  | @@ -673,7 +674,7 @@ cmGlobalUnixMakefileGenerator3
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // Add a fast rule to build the target
 | 
	
		
			
				|  |  |          std::string localName =
 | 
	
		
			
				|  |  | -                          lg->GetRelativeTargetDirectory(*gtarget->Target);
 | 
	
		
			
				|  |  | +                          lg->GetRelativeTargetDirectory(gtarget);
 | 
	
		
			
				|  |  |          std::string makefileName;
 | 
	
		
			
				|  |  |          makefileName = localName;
 | 
	
		
			
				|  |  |          makefileName += "/build.make";
 | 
	
	
		
			
				|  | @@ -693,7 +694,7 @@ cmGlobalUnixMakefileGenerator3
 | 
	
		
			
				|  |  |          if(gtarget
 | 
	
		
			
				|  |  |               ->NeedRelinkBeforeInstall(lg->GetConfigName()))
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  | -          makeTargetName = lg->GetRelativeTargetDirectory(*gtarget->Target);
 | 
	
		
			
				|  |  | +          makeTargetName = lg->GetRelativeTargetDirectory(gtarget);
 | 
	
		
			
				|  |  |            makeTargetName += "/preinstall";
 | 
	
		
			
				|  |  |            localName = name;
 | 
	
		
			
				|  |  |            localName += "/preinstall";
 | 
	
	
		
			
				|  | @@ -750,7 +751,7 @@ cmGlobalUnixMakefileGenerator3
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  |        std::string makefileName;
 | 
	
		
			
				|  |  |        // Add a rule to build the target by name.
 | 
	
		
			
				|  |  | -      localName = lg->GetRelativeTargetDirectory(*gtarget->Target);
 | 
	
		
			
				|  |  | +      localName = lg->GetRelativeTargetDirectory(gtarget);
 | 
	
		
			
				|  |  |        makefileName = localName;
 | 
	
		
			
				|  |  |        makefileName += "/build.make";
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -861,7 +862,7 @@ cmGlobalUnixMakefileGenerator3
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        depends.clear();
 | 
	
		
			
				|  |  |        depends.push_back("cmake_check_build_system");
 | 
	
		
			
				|  |  | -      localName = lg->GetRelativeTargetDirectory(*gtarget->Target);
 | 
	
		
			
				|  |  | +      localName = lg->GetRelativeTargetDirectory(gtarget);
 | 
	
		
			
				|  |  |        localName += "/rule";
 | 
	
		
			
				|  |  |        lg->WriteMakeRule(ruleFileStream,
 | 
	
		
			
				|  |  |                          "Build rule for subdir invocation for target.",
 | 
	
	
		
			
				|  | @@ -878,7 +879,7 @@ cmGlobalUnixMakefileGenerator3
 | 
	
		
			
				|  |  |        if(gtarget
 | 
	
		
			
				|  |  |             ->NeedRelinkBeforeInstall(lg->GetConfigName()))
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -        localName = lg->GetRelativeTargetDirectory(*gtarget->Target);
 | 
	
		
			
				|  |  | +        localName = lg->GetRelativeTargetDirectory(gtarget);
 | 
	
		
			
				|  |  |          localName += "/preinstall";
 | 
	
		
			
				|  |  |          depends.clear();
 | 
	
		
			
				|  |  |          commands.clear();
 | 
	
	
		
			
				|  | @@ -899,7 +900,7 @@ cmGlobalUnixMakefileGenerator3
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // add the clean rule
 | 
	
		
			
				|  |  | -      localName = lg->GetRelativeTargetDirectory(*gtarget->Target);
 | 
	
		
			
				|  |  | +      localName = lg->GetRelativeTargetDirectory(gtarget);
 | 
	
		
			
				|  |  |        makeTargetName = localName;
 | 
	
		
			
				|  |  |        makeTargetName += "/clean";
 | 
	
		
			
				|  |  |        depends.clear();
 | 
	
	
		
			
				|  | @@ -1066,7 +1067,8 @@ cmGlobalUnixMakefileGenerator3
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      cmLocalUnixMakefileGenerator3* lg3 =
 | 
	
		
			
				|  |  |        static_cast<cmLocalUnixMakefileGenerator3*>(dep->GetLocalGenerator());
 | 
	
		
			
				|  |  | -    std::string tgtName = lg3->GetRelativeTargetDirectory(*(*dep).Target);
 | 
	
		
			
				|  |  | +    std::string tgtName =
 | 
	
		
			
				|  |  | +        lg3->GetRelativeTargetDirectory(const_cast<cmGeneratorTarget*>(dep));
 | 
	
		
			
				|  |  |      tgtName += "/all";
 | 
	
		
			
				|  |  |      depends.push_back(tgtName);
 | 
	
		
			
				|  |  |      }
 |