Merge topic 'DependencyScanning_13474'
8aed02a
-fix Java dependency scanning, broken in previous commit7ae4479
-fix line length87fe428
fix #13474: also rescan dependencies if the depender does not exist
This commit is contained in:
commit
6d4a3053e6
|
@ -98,7 +98,7 @@ bool cmDepends::Check(const char *makeFile, const char *internalFile,
|
|||
// Check whether dependencies must be regenerated.
|
||||
bool okay = true;
|
||||
std::ifstream fin(internalFile);
|
||||
if(!(fin && this->CheckDependencies(fin, validDeps)))
|
||||
if(!(fin && this->CheckDependencies(fin, internalFile, validDeps)))
|
||||
{
|
||||
// Clear all dependencies so they will be regenerated.
|
||||
this->Clear(makeFile);
|
||||
|
@ -143,6 +143,7 @@ bool cmDepends::WriteDependencies(const char*, const char*,
|
|||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmDepends::CheckDependencies(std::istream& internalDepends,
|
||||
const char* internalDependsFileName,
|
||||
std::map<std::string, DependencyVector>& validDeps)
|
||||
{
|
||||
// Parse dependencies from the stream. If any dependee is missing
|
||||
|
@ -186,8 +187,11 @@ bool cmDepends::CheckDependencies(std::istream& internalDepends,
|
|||
}
|
||||
*/
|
||||
|
||||
// Dependencies must be regenerated if the dependee does not exist
|
||||
// or if the depender exists and is older than the dependee.
|
||||
// Dependencies must be regenerated
|
||||
// * if the dependee does not exist
|
||||
// * if the depender exists and is older than the dependee.
|
||||
// * if the depender does not exist, but the dependee is newer than the
|
||||
// depends file
|
||||
bool regenerate = false;
|
||||
const char* dependee = this->Dependee+1;
|
||||
const char* depender = this->Depender;
|
||||
|
@ -211,24 +215,49 @@ bool cmDepends::CheckDependencies(std::istream& internalDepends,
|
|||
cmSystemTools::Stdout(msg.str().c_str());
|
||||
}
|
||||
}
|
||||
else if(dependerExists)
|
||||
else
|
||||
{
|
||||
// The dependee and depender both exist. Compare file times.
|
||||
int result = 0;
|
||||
if((!this->FileComparison->FileTimeCompare(depender, dependee,
|
||||
&result) || result < 0))
|
||||
if(dependerExists)
|
||||
{
|
||||
// The depender is older than the dependee.
|
||||
regenerate = true;
|
||||
|
||||
// Print verbose output.
|
||||
if(this->Verbose)
|
||||
// The dependee and depender both exist. Compare file times.
|
||||
int result = 0;
|
||||
if((!this->FileComparison->FileTimeCompare(depender, dependee,
|
||||
&result) || result < 0))
|
||||
{
|
||||
cmOStringStream msg;
|
||||
msg << "Dependee \"" << dependee
|
||||
<< "\" is newer than depender \""
|
||||
<< depender << "\"." << std::endl;
|
||||
cmSystemTools::Stdout(msg.str().c_str());
|
||||
// The depender is older than the dependee.
|
||||
regenerate = true;
|
||||
|
||||
// Print verbose output.
|
||||
if(this->Verbose)
|
||||
{
|
||||
cmOStringStream msg;
|
||||
msg << "Dependee \"" << dependee
|
||||
<< "\" is newer than depender \""
|
||||
<< depender << "\"." << std::endl;
|
||||
cmSystemTools::Stdout(msg.str().c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// The dependee exists, but the depender doesn't. Regenerate if the
|
||||
// internalDepends file is older than the dependee.
|
||||
int result = 0;
|
||||
if((!this->FileComparison->FileTimeCompare(internalDependsFileName,
|
||||
dependee, &result) || result < 0))
|
||||
{
|
||||
// The depends-file is older than the dependee.
|
||||
regenerate = true;
|
||||
|
||||
// Print verbose output.
|
||||
if(this->Verbose)
|
||||
{
|
||||
cmOStringStream msg;
|
||||
msg << "Dependee \"" << dependee
|
||||
<< "\" is newer than depends file \""
|
||||
<< internalDependsFileName << "\"." << std::endl;
|
||||
cmSystemTools::Stdout(msg.str().c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,6 +83,7 @@ protected:
|
|||
// Return false if dependencies must be regenerated and true
|
||||
// otherwise.
|
||||
virtual bool CheckDependencies(std::istream& internalDepends,
|
||||
const char* internalDependsFileName,
|
||||
std::map<std::string, DependencyVector>& validDeps);
|
||||
|
||||
// Finalize the dependency information for the target.
|
||||
|
|
|
@ -38,7 +38,7 @@ bool cmDependsJava::WriteDependencies(const char *src, const char *,
|
|||
return true;
|
||||
}
|
||||
|
||||
bool cmDependsJava::CheckDependencies(std::istream&,
|
||||
bool cmDependsJava::CheckDependencies(std::istream&, const char*,
|
||||
std::map<std::string, DependencyVector >&)
|
||||
{
|
||||
return true;
|
||||
|
|
|
@ -32,7 +32,8 @@ protected:
|
|||
virtual bool WriteDependencies(const char *src, const char *file,
|
||||
std::ostream& makeDepends, std::ostream& internalDepends);
|
||||
virtual bool CheckDependencies(std::istream& internalDepends,
|
||||
std::map<std::string, DependencyVector >& validDeps);
|
||||
const char* internalDependsFileName,
|
||||
std::map<std::string, DependencyVector>& validDeps);
|
||||
|
||||
private:
|
||||
cmDependsJava(cmDependsJava const&); // Purposely not implemented.
|
||||
|
|
Loading…
Reference in New Issue