diff options
Diffstat (limited to 'Source/cmSourceGroupCommand.cxx')
-rw-r--r-- | Source/cmSourceGroupCommand.cxx | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/Source/cmSourceGroupCommand.cxx b/Source/cmSourceGroupCommand.cxx index 17bf434..d62fd77 100644 --- a/Source/cmSourceGroupCommand.cxx +++ b/Source/cmSourceGroupCommand.cxx @@ -19,14 +19,42 @@ // cmSourceGroupCommand bool cmSourceGroupCommand::InitialPass(std::vector<std::string> const& args) { - if(args.size() != 2) + if(args.size() < 1) { this->SetError("called with incorrect number of arguments"); return false; - } + } - m_Makefile->AddSourceGroup(args[0].c_str(), args[1].c_str()); + if ( args[1] == "REGULAR_EXPRESSION" && args.size() == 3 ) + { + m_Makefile->AddSourceGroup(args[0].c_str(), args[2].c_str()); + return true; + } + + if ( args[1] == "FILES" ) + { + cmSourceGroup* sg = m_Makefile->GetSourceGroup(args[0].c_str()); + if ( !sg ) + { + m_Makefile->AddSourceGroup(args[0].c_str(), 0); + sg = m_Makefile->GetSourceGroup(args[0].c_str()); + } + unsigned int cc; + for ( cc = 3; cc < args.size(); cc ++ ) + { + sg->AddSource(args[cc].c_str(), 0); + } + + return true; + } - return true; + if ( args.size() == 2 ) + { + m_Makefile->AddSourceGroup(args[0].c_str(), args[1].c_str()); + return true; + } + + this->SetError("called with incorrect number of arguments"); + return false; } |