From b53b467414aadea1500518398eee51efce1104cb Mon Sep 17 00:00:00 2001 From: Ken Martin Date: Wed, 4 Jun 2003 19:04:35 -0400 Subject: hopeful fix for backwards compat --- Source/cmMakefile.cxx | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 2197112..a9db9a6 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -458,13 +458,27 @@ void cmMakefile::AddCustomCommand(const char* source, for(std::vector::const_iterator d = outputs.begin(); d != outputs.end(); ++d) { - std::vector depends2 = depends; - depends2.push_back(source); - this->AddCustomCommandToOutput(d->c_str(), command, commandArgs, - 0, depends2, comment); + // if this looks like a real file then use is as the main depend + cmRegularExpression SourceFiles("\\.(C|M|c|c\\+\\+|cc|cpp|cxx|m|mm|rc|def|r|odl|idl|hpj|bat|h|h\\+\\+|hm|hpp|hxx|in|txx|inl)$"); + if (SourceFiles.find(source)) + { + this->AddCustomCommandToOutput(d->c_str(), command, commandArgs, + source, depends, comment); + } + // otherwise do not use a main depend + else + { + std::vector depends2 = depends; + depends2.push_back(source); + this->AddCustomCommandToOutput(d->c_str(), command, commandArgs, + 0, depends2, comment); + } + // add the output to the target? std::string sname = *d; sname += ".rule"; + // if the rule was added to the source, + // then add the source to the target if (!this->GetSource(sname.c_str())) { if (m_Targets.find(target) != m_Targets.end()) -- cgit v0.12