add a 'unicode' property to modules (not yet supported by mingw, need to add a library for unicode builds some day)
Modified: trunk/reactos/tools/rbuild/module.cpp
Modified: trunk/reactos/tools/rbuild/rbuild.h

Modified: trunk/reactos/tools/rbuild/module.cpp
--- trunk/reactos/tools/rbuild/module.cpp	2005-10-20 15:04:55 UTC (rev 18632)
+++ trunk/reactos/tools/rbuild/module.cpp	2005-10-20 15:17:38 UTC (rev 18633)
@@ -248,6 +248,23 @@
 	else
 		extension = GetDefaultModuleExtension ();
 
+	att = moduleNode.GetAttribute ( "unicode", false );
+	if ( att != NULL )
+	{
+		const char* p = att->value.c_str();
+		if ( !stricmp ( p, "true" ) || !stricmp ( p, "yes" ) )
+			isUnicode = true;
+		else if ( !stricmp ( p, "false" ) || !stricmp ( p, "no" ) )
+			isUnicode = false;
+		else
+		{
+			throw InvalidAttributeValueException (
+				moduleNode.location,
+				"unicode",
+				att->value );
+		}
+	}
+
 	att = moduleNode.GetAttribute ( "entrypoint", false );
 	if ( att != NULL )
 		entrypoint = att->value;
@@ -680,9 +697,15 @@
 			return "_DllMain@12";
 		case Win32CUI:
 		case Test:
-			return "_mainCRTStartup";
+			if ( isUnicode )
+				return "_wmainCRTStartup";
+			else
+				return "_mainCRTStartup";
 		case Win32GUI:
-			return "_WinMainCRTStartup";
+			if ( isUnicode )
+				return "_wWinMainCRTStartup";
+			else
+				return "_WinMainCRTStartup";
 		case KernelModeDriver:
 			return "_DriverEntry@8";
 		case BuildTool:

Modified: trunk/reactos/tools/rbuild/rbuild.h
--- trunk/reactos/tools/rbuild/rbuild.h	2005-10-20 15:04:55 UTC (rev 18632)
+++ trunk/reactos/tools/rbuild/rbuild.h	2005-10-20 15:17:38 UTC (rev 18633)
@@ -222,6 +222,7 @@
 	ModuleType type;
 	ImportLibrary* importLibrary;
 	bool mangledSymbols;
+	bool isUnicode;
 	Bootstrap* bootstrap;
 	IfableData non_if_data;
 	std::vector<Invoke*> invocations;