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();