BUG: fix for bug 2533, make foo/foo.o now works and .o files are in the help
This commit is contained in:
parent
1d9ef3f8b5
commit
61e056e2dc
|
@ -894,6 +894,14 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
std::map<cmStdString,std::vector<cmTarget *> >& objs = lg->GetLocalObjectFiles();
|
||||||
|
for(std::map<cmStdString,std::vector<cmTarget *> >::iterator o =
|
||||||
|
objs.begin(); o != objs.end(); ++o)
|
||||||
|
{
|
||||||
|
path = "... ";
|
||||||
|
path += o->first;
|
||||||
|
lg->AppendEcho(commands, path.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lg->WriteMakeRule(ruleFileStream, "Help Target",
|
lg->WriteMakeRule(ruleFileStream, "Help Target",
|
||||||
|
|
|
@ -721,8 +721,8 @@ cmLocalUnixMakefileGenerator3
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the full path name of the object file.
|
// Get the full path name of the object file.
|
||||||
std::string obj = this->GetObjectFileName(target, source);
|
std::string objNoTargetDir;
|
||||||
|
std::string obj = this->GetObjectFileName(target, source, &objNoTargetDir);
|
||||||
// Avoid generating duplicate rules.
|
// Avoid generating duplicate rules.
|
||||||
if(m_ObjectFiles.find(obj) == m_ObjectFiles.end())
|
if(m_ObjectFiles.find(obj) == m_ObjectFiles.end())
|
||||||
{
|
{
|
||||||
|
@ -749,7 +749,6 @@ cmLocalUnixMakefileGenerator3
|
||||||
objects.push_back(obj);
|
objects.push_back(obj);
|
||||||
std::string relativeObj = this->GetHomeRelativeOutputPath();
|
std::string relativeObj = this->GetHomeRelativeOutputPath();
|
||||||
relativeObj += obj;
|
relativeObj += obj;
|
||||||
|
|
||||||
// we compute some depends when writing the depend.make that we will also
|
// we compute some depends when writing the depend.make that we will also
|
||||||
// use in the build.make, same with depMakeFile
|
// use in the build.make, same with depMakeFile
|
||||||
std::vector<std::string> depends;
|
std::vector<std::string> depends;
|
||||||
|
@ -761,9 +760,12 @@ cmLocalUnixMakefileGenerator3
|
||||||
|
|
||||||
// The object file should be checked for dependency integrity.
|
// The object file should be checked for dependency integrity.
|
||||||
m_CheckDependFiles[target.GetName()][lang].insert(&source);
|
m_CheckDependFiles[target.GetName()][lang].insert(&source);
|
||||||
|
|
||||||
// add this to the list of objects for this local generator
|
// add this to the list of objects for this local generator
|
||||||
m_LocalObjectFiles[cmSystemTools::GetFilenameName(obj)].push_back(&target);
|
if(cmSystemTools::FileIsFullPath(objNoTargetDir.c_str()))
|
||||||
|
{
|
||||||
|
objNoTargetDir = cmSystemTools::GetFilenameName(objNoTargetDir);
|
||||||
|
}
|
||||||
|
m_LocalObjectFiles[objNoTargetDir].push_back(&target);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
@ -2124,7 +2126,8 @@ cmLocalUnixMakefileGenerator3
|
||||||
std::string
|
std::string
|
||||||
cmLocalUnixMakefileGenerator3
|
cmLocalUnixMakefileGenerator3
|
||||||
::GetObjectFileName(cmTarget& target,
|
::GetObjectFileName(cmTarget& target,
|
||||||
const cmSourceFile& source)
|
const cmSourceFile& source,
|
||||||
|
std::string* nameWithoutTargetDir)
|
||||||
{
|
{
|
||||||
// If the full path to the source file includes this directory,
|
// If the full path to the source file includes this directory,
|
||||||
// we want to use the relative path for the filename of the
|
// we want to use the relative path for the filename of the
|
||||||
|
@ -2152,11 +2155,14 @@ cmLocalUnixMakefileGenerator3
|
||||||
|
|
||||||
// Convert to a safe name.
|
// Convert to a safe name.
|
||||||
objectName = this->CreateSafeUniqueObjectFileName(objectName.c_str());
|
objectName = this->CreateSafeUniqueObjectFileName(objectName.c_str());
|
||||||
|
|
||||||
// Prepend the target directory.
|
// Prepend the target directory.
|
||||||
std::string obj = this->GetTargetDirectory(target);
|
std::string obj = this->GetTargetDirectory(target);
|
||||||
obj += "/";
|
obj += "/";
|
||||||
obj += objectName;
|
obj += objectName;
|
||||||
|
if(nameWithoutTargetDir)
|
||||||
|
{
|
||||||
|
*nameWithoutTargetDir = objectName;
|
||||||
|
}
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -169,7 +169,9 @@ public:
|
||||||
|
|
||||||
// write the target rules for the local Makefile into the stream
|
// write the target rules for the local Makefile into the stream
|
||||||
void WriteLocalAllRules(std::ostream& ruleFileStream);
|
void WriteLocalAllRules(std::ostream& ruleFileStream);
|
||||||
|
|
||||||
|
std::map<cmStdString,std::vector<cmTarget *> > GetLocalObjectFiles()
|
||||||
|
{ return m_LocalObjectFiles;}
|
||||||
protected:
|
protected:
|
||||||
// Return the a string with -F flags on apple
|
// Return the a string with -F flags on apple
|
||||||
std::string GetFrameworkFlags(cmTarget&);
|
std::string GetFrameworkFlags(cmTarget&);
|
||||||
|
@ -320,7 +322,8 @@ protected:
|
||||||
std::string GetTargetDirectory(cmTarget& target);
|
std::string GetTargetDirectory(cmTarget& target);
|
||||||
std::string GetSubdirTargetName(const char* pass, const char* subdir);
|
std::string GetSubdirTargetName(const char* pass, const char* subdir);
|
||||||
std::string GetObjectFileName(cmTarget& target,
|
std::string GetObjectFileName(cmTarget& target,
|
||||||
const cmSourceFile& source);
|
const cmSourceFile& source,
|
||||||
|
std::string* nameWithoutTargetDir = 0);
|
||||||
const char* GetSourceFileLanguage(const cmSourceFile& source);
|
const char* GetSourceFileLanguage(const cmSourceFile& source);
|
||||||
std::string ConvertToQuotedOutputPath(const char* p);
|
std::string ConvertToQuotedOutputPath(const char* p);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue