Implement <ifnot> Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp Modified: trunk/reactos/tools/rbuild/module.cpp Modified: trunk/reactos/tools/rbuild/project.cpp Modified: trunk/reactos/tools/rbuild/rbuild.h _____
Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp --- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp 2005-06-16 09:25:51 UTC (rev 15933) +++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp 2005-06-16 20:37:50 UTC (rev 15934) @@ -731,7 +731,8 @@
{ fprintf ( fMakefile, - "ifeq ("$(%s)","%s")\n", + "%s ("$(%s)","%s")\n", + rIf.negated ? "ifneq" : "ifeq", rIf.property.c_str(), rIf.value.c_str() ); GenerateMacros ( @@ -815,7 +816,8 @@ { fprintf ( fMakefile, - "ifeq ("$(%s)","%s")\n", + "%s ("$(%s)","%s")\n", + rIf.negated ? "ifneq" : "ifeq", rIf.property.c_str(), rIf.value.c_str() ); GenerateObjectMacros ( _____
Modified: trunk/reactos/tools/rbuild/module.cpp --- trunk/reactos/tools/rbuild/module.cpp 2005-06-16 09:25:51 UTC (rev 15933) +++ trunk/reactos/tools/rbuild/module.cpp 2005-06-16 20:37:50 UTC (rev 15934) @@ -424,6 +424,16 @@
non_if_data.ifs.push_back ( pIf ); subs_invalid = false; } + else if ( e.name == "ifnot" ) + { + If* pOldIf = pIf; + pIf = new If ( e, project, this, true ); + if ( pOldIf ) + pOldIf->data.ifs.push_back ( pIf ); + else + non_if_data.ifs.push_back ( pIf ); + subs_invalid = false; + } else if ( e.name == "compilerflag" ) { CompilerFlag* pCompilerFlag = new CompilerFlag ( project, this, e ); @@ -1014,8 +1024,9 @@
If::If ( const XMLElement& node_, const Project& project_, - const Module* module_ ) - : node(node_), project(project_), module(module_) + const Module* module_, + const bool negated_ ) + : node(node_), project(project_), module(module_), negated(negated_) { const XMLAttribute* att;
_____
Modified: trunk/reactos/tools/rbuild/project.cpp --- trunk/reactos/tools/rbuild/project.cpp 2005-06-16 09:25:51 UTC (rev 15933) +++ trunk/reactos/tools/rbuild/project.cpp 2005-06-16 20:37:50 UTC (rev 15934) @@ -330,6 +330,16 @@
non_if_data.ifs.push_back ( pIf ); subs_invalid = false; } + else if ( e.name == "ifnot" ) + { + If* pOldIf = pIf; + pIf = new If ( e, *this, NULL, true ); + if ( pOldIf ) + pOldIf->data.ifs.push_back ( pIf ); + else + non_if_data.ifs.push_back ( pIf ); + subs_invalid = false; + } else if ( e.name == "property" ) { Property* property = new Property ( e, *this, NULL ); _____
Modified: trunk/reactos/tools/rbuild/rbuild.h --- trunk/reactos/tools/rbuild/rbuild.h 2005-06-16 09:25:51 UTC (rev 15933) +++ trunk/reactos/tools/rbuild/rbuild.h 2005-06-16 20:37:50 UTC (rev 15934) @@ -395,12 +395,14 @@
const XMLElement& node; const Project& project; const Module* module; + const bool negated; std::string property, value; IfableData data;
If ( const XMLElement& node_, const Project& project_, - const Module* module_ ); + const Module* module_, + const bool negated_ = false ); ~If();
void ProcessXML();