diff options
Diffstat (limited to '')
-rw-r--r-- | src/buildparser.cpp | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/src/buildparser.cpp b/src/buildparser.cpp index 6c3337f..04147d8 100644 --- a/src/buildparser.cpp +++ b/src/buildparser.cpp | |||
@@ -129,7 +129,7 @@ void BuildParser::filterList() | |||
129 | } | 129 | } |
130 | } | 130 | } |
131 | 131 | ||
132 | StringList BuildParser::buildToStringList( const BuildList &lSrc, const StringList &lIn ) | 132 | StringList BuildParser::buildToStringList( const BuildList &lSrc, const StringList &lIn, Build *pPass ) |
133 | { | 133 | { |
134 | StringList lOut; | 134 | StringList lOut; |
135 | 135 | ||
@@ -137,7 +137,28 @@ StringList BuildParser::buildToStringList( const BuildList &lSrc, const StringLi | |||
137 | { | 137 | { |
138 | if( (*i).second ) | 138 | if( (*i).second ) |
139 | { | 139 | { |
140 | (*i).second->execute( NULL, lIn, lOut ); | 140 | (*i).second->execute( pPass, lIn, lOut ); |
141 | } | ||
142 | else | ||
143 | { | ||
144 | lOut.push_back( (*i).first ); | ||
145 | } | ||
146 | } | ||
147 | |||
148 | return lOut; | ||
149 | } | ||
150 | |||
151 | StringList BuildParser::buildToStringListDup( const BuildList &lSrc, const StringList &lIn, Build &bld, const std::string &sCont, VarMap *mExtra, Build *pPass ) | ||
152 | { | ||
153 | StringList lOut; | ||
154 | |||
155 | for( BuildList::const_iterator i = lSrc.begin(); i != lSrc.end(); i++ ) | ||
156 | { | ||
157 | if( (*i).second ) | ||
158 | { | ||
159 | Function *pTmp = (*i).second->duplicate( bld, sCont, mExtra ); | ||
160 | pTmp->execute( pPass, lIn, lOut ); | ||
161 | delete pTmp; | ||
141 | } | 162 | } |
142 | else | 163 | else |
143 | { | 164 | { |
@@ -384,8 +405,12 @@ Build *BuildParser::genBuild() | |||
384 | pTarget->setName( *j ); | 405 | pTarget->setName( *j ); |
385 | pTarget->setRule( (*i).second.sRule ); | 406 | pTarget->setRule( (*i).second.sRule ); |
386 | 407 | ||
387 | StringList lInputs = buildToStringList( | 408 | VarMap mExtra; |
388 | (*i).second.lInput, StringList() | 409 | mExtra["target"] = (*j); |
410 | |||
411 | StringList lInputs = buildToStringListDup( | ||
412 | (*i).second.lInput, StringList(), | ||
413 | *bld, *j, &mExtra | ||
389 | ); | 414 | ); |
390 | pTarget->getInput().insert( | 415 | pTarget->getInput().insert( |
391 | pTarget->getInput().end(), | 416 | pTarget->getInput().end(), |
@@ -480,7 +505,7 @@ Build *BuildParser::genBuild() | |||
480 | j != (*i).second.end(); j++ ) | 505 | j != (*i).second.end(); j++ ) |
481 | { | 506 | { |
482 | StringList lWhat = buildToStringList( | 507 | StringList lWhat = buildToStringList( |
483 | (*j).second, StringList() | 508 | (*j).second, StringList(), bld |
484 | ); | 509 | ); |
485 | 510 | ||
486 | for( StringList::iterator k = lWhat.begin(); | 511 | for( StringList::iterator k = lWhat.begin(); |