aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2006-09-12 01:22:25 +0000
committerMike Buland <eichlan@xagasoft.com>2006-09-12 01:22:25 +0000
commit6011f825ca62dec32013af01d876e95174410cf6 (patch)
tree2415f38285d5f0cc035a79660206f1f779dc1693 /src
parentafd6d53eb6b3f169fa50cea360b982b60e589e6f (diff)
downloadbuild-6011f825ca62dec32013af01d876e95174410cf6.tar.gz
build-6011f825ca62dec32013af01d876e95174410cf6.tar.bz2
build-6011f825ca62dec32013af01d876e95174410cf6.tar.xz
build-6011f825ca62dec32013af01d876e95174410cf6.zip
Auto targets from functions now work well, but filtering is completely disabled.
Fortunately, filtering is more of a nicety, and build is still useful. I'll put filtering back in next.
Diffstat (limited to 'src')
-rw-r--r--src/buildparser.cpp74
-rw-r--r--src/buildparser.h4
-rw-r--r--src/functiondirectoriesin.cpp2
3 files changed, 52 insertions, 28 deletions
diff --git a/src/buildparser.cpp b/src/buildparser.cpp
index 04147d8..b8de35e 100644
--- a/src/buildparser.cpp
+++ b/src/buildparser.cpp
@@ -62,17 +62,17 @@ void BuildParser::setTargetType( const char *sType )
62 62
63void BuildParser::addTargetInput() 63void BuildParser::addTargetInput()
64{ 64{
65 lTargetTmp.back().second.lInput.insert( 65 lTargetTmp.back().second.lInput.first.insert(
66 lTargetTmp.back().second.lInput.end(), 66 lTargetTmp.back().second.lInput.first.end(),
67 lTmp.begin(), lTmp.end() 67 lTmp.first.begin(), lTmp.first.end()
68 ); 68 );
69} 69}
70 70
71void BuildParser::addTargetRequires() 71void BuildParser::addTargetRequires()
72{ 72{
73 lTargetTmp.back().second.lRequires.insert( 73 lTargetTmp.back().second.lRequires.first.insert(
74 lTargetTmp.back().second.lRequires.end(), 74 lTargetTmp.back().second.lRequires.first.end(),
75 lTmp.begin(), lTmp.end() 75 lTmp.first.begin(), lTmp.first.end()
76 ); 76 );
77} 77}
78 78
@@ -104,28 +104,46 @@ void BuildParser::addFunctionParam( const char *sParam )
104// 104//
105void BuildParser::newList() 105void BuildParser::newList()
106{ 106{
107 lTmp.clear(); 107 lTmp.first.clear();
108 lTmp.second = NULL;
108} 109}
109 110
110void BuildParser::addListString( const char *str ) 111void BuildParser::addListString( const char *str )
111{ 112{
112 lTmp.push_back( BuildListItem(str, NULL) ); 113 lTmp.first.push_back( BuildListItem(str, NULL) );
113} 114}
114 115
115void BuildParser::addListFunc() 116void BuildParser::addListFunc()
116{ 117{
117 lTmp.push_back( BuildListItem("", pTmpFunc ) ); 118 lTmp.first.push_back( BuildListItem("", pTmpFunc ) );
118} 119}
119 120
120void BuildParser::filterList() 121void BuildParser::filterList()
121{ 122{
123 lTmp.second = pTmpFunc;
124 //StringList lTmp2;
125 //StringList lIn = buildToStringList( lTmp, StringList() );
126 //pTmpFunc->execute( NULL, lIn, lTmp2 );
127 //lTmp.clear();
128 //for( StringList::iterator i = lTmp2.begin(); i != lTmp2.end(); i++ )
129 //{
130 // lTmp.push_back( BuildListItem( *i, NULL ) );
131 //}
132}
133
134void BuildParser::buildListFilter( BuildList &lSrc )
135{
136 if( lSrc.second == NULL )
137 return;
138
122 StringList lTmp2; 139 StringList lTmp2;
123 StringList lIn = buildToStringList( lTmp, StringList() ); 140 StringList lIn = buildToStringList( lSrc, StringList() );
124 pTmpFunc->execute( NULL, lIn, lTmp2 ); 141 pTmpFunc->execute( NULL, lIn, lTmp2 );
125 lTmp.clear(); 142 lSrc.first.clear();
143 delete lSrc.second;
126 for( StringList::iterator i = lTmp2.begin(); i != lTmp2.end(); i++ ) 144 for( StringList::iterator i = lTmp2.begin(); i != lTmp2.end(); i++ )
127 { 145 {
128 lTmp.push_back( BuildListItem( *i, NULL ) ); 146 lSrc.first.push_back( BuildListItem( *i, NULL ) );
129 } 147 }
130} 148}
131 149
@@ -133,7 +151,8 @@ StringList BuildParser::buildToStringList( const BuildList &lSrc, const StringLi
133{ 151{
134 StringList lOut; 152 StringList lOut;
135 153
136 for( BuildList::const_iterator i = lSrc.begin(); i != lSrc.end(); i++ ) 154 for( BuildListCore::const_iterator i = lSrc.first.begin();
155 i != lSrc.first.end(); i++ )
137 { 156 {
138 if( (*i).second ) 157 if( (*i).second )
139 { 158 {
@@ -152,7 +171,8 @@ StringList BuildParser::buildToStringListDup( const BuildList &lSrc, const Strin
152{ 171{
153 StringList lOut; 172 StringList lOut;
154 173
155 for( BuildList::const_iterator i = lSrc.begin(); i != lSrc.end(); i++ ) 174 for( BuildListCore::const_iterator i = lSrc.first.begin();
175 i != lSrc.first.end(); i++ )
156 { 176 {
157 if( (*i).second ) 177 if( (*i).second )
158 { 178 {
@@ -186,17 +206,17 @@ void BuildParser::addRuleMatches()
186 206
187void BuildParser::addRuleProduces() 207void BuildParser::addRuleProduces()
188{ 208{
189 lRuleTmp.back().lProduces.insert( 209 lRuleTmp.back().lProduces.first.insert(
190 lRuleTmp.back().lProduces.end(), 210 lRuleTmp.back().lProduces.first.end(),
191 lTmp.begin(), lTmp.end() 211 lTmp.first.begin(), lTmp.first.end()
192 ); 212 );
193} 213}
194 214
195void BuildParser::addRuleRequires() 215void BuildParser::addRuleRequires()
196{ 216{
197 lRuleTmp.back().lRequires.insert( 217 lRuleTmp.back().lRequires.first.insert(
198 lRuleTmp.back().lRequires.end(), 218 lRuleTmp.back().lRequires.first.end(),
199 lTmp.begin(), lTmp.end() 219 lTmp.first.begin(), lTmp.first.end()
200 ); 220 );
201} 221}
202 222
@@ -346,10 +366,10 @@ void BuildParser::debugDump()
346void BuildParser::printBuildList( const BuildList &lst ) 366void BuildParser::printBuildList( const BuildList &lst )
347{ 367{
348 printf("["); 368 printf("[");
349 for( BuildList::const_iterator k = lst.begin(); 369 for( BuildListCore::const_iterator k = lst.first.begin();
350 k != lst.end(); k++ ) 370 k != lst.first.end(); k++ )
351 { 371 {
352 if( k != lst.begin() ) 372 if( k != lst.first.begin() )
353 { 373 {
354 printf(", "); 374 printf(", ");
355 } 375 }
@@ -462,8 +482,8 @@ Build *BuildParser::genBuild()
462 pRule->getPerformList().push_back( *j ); 482 pRule->getPerformList().push_back( *j );
463 } 483 }
464 484
465 for( BuildList::iterator j = (*i).lProduces.begin(); 485 for( BuildListCore::iterator j = (*i).lProduces.first.begin();
466 j != (*i).lProduces.end(); j++ ) 486 j != (*i).lProduces.first.end(); j++ )
467 { 487 {
468 if( (*j).second ) 488 if( (*j).second )
469 { 489 {
@@ -479,8 +499,8 @@ Build *BuildParser::genBuild()
479 pRule->setAggregate( (*i).pAggregate ); 499 pRule->setAggregate( (*i).pAggregate );
480 } 500 }
481 501
482 for( BuildList::iterator j = (*i).lRequires.begin(); 502 for( BuildListCore::iterator j = (*i).lRequires.first.begin();
483 j != (*i).lRequires.end(); j++ ) 503 j != (*i).lRequires.first.end(); j++ )
484 { 504 {
485 if( (*j).second ) 505 if( (*j).second )
486 { 506 {
diff --git a/src/buildparser.h b/src/buildparser.h
index 3c79a5b..13c523c 100644
--- a/src/buildparser.h
+++ b/src/buildparser.h
@@ -52,7 +52,8 @@ enum eSetHow
52class BuildParser : public Parser 52class BuildParser : public Parser
53{ 53{
54 typedef std::pair<std::string, Function *> BuildListItem; 54 typedef std::pair<std::string, Function *> BuildListItem;
55 typedef std::list<BuildListItem> BuildList; 55 typedef std::list<BuildListItem> BuildListCore;
56 typedef std::pair<BuildListCore, Function *> BuildList;
56 typedef Triplet<std::string, std::string, int> SetVar; 57 typedef Triplet<std::string, std::string, int> SetVar;
57 typedef std::list<SetVar> SetVarList; 58 typedef std::list<SetVar> SetVarList;
58public: 59public:
@@ -117,6 +118,7 @@ public: // List functions
117 void addListFunc(); 118 void addListFunc();
118 void filterList(); 119 void filterList();
119 120
121 void buildListFilter( BuildList &lSrc );
120 StringList buildToStringList( const BuildList &lSrc, const StringList &lIn, Build *pPass=NULL ); 122 StringList buildToStringList( const BuildList &lSrc, const StringList &lIn, Build *pPass=NULL );
121 StringList buildToStringListDup( const BuildList &lSrc, const StringList &lIn, Build &bld, const std::string &sCont, VarMap *mExtra, Build *pPass=NULL ); 123 StringList buildToStringListDup( const BuildList &lSrc, const StringList &lIn, Build &bld, const std::string &sCont, VarMap *mExtra, Build *pPass=NULL );
122 124
diff --git a/src/functiondirectoriesin.cpp b/src/functiondirectoriesin.cpp
index 105e98d..cafea81 100644
--- a/src/functiondirectoriesin.cpp
+++ b/src/functiondirectoriesin.cpp
@@ -30,6 +30,8 @@ void FunctionDirectoriesIn::execute( Build *bld, const StringList &lInput, Strin
30 { 30 {
31 if( e->d_type == DT_DIR ) 31 if( e->d_type == DT_DIR )
32 { 32 {
33 if( e->d_name[0] == '.' || e->d_name[0] == '\0' )
34 continue;
33 lOutput.push_back( e->d_name ); 35 lOutput.push_back( e->d_name );
34 } 36 }
35 } 37 }