add a 'unicode' property to modules (not yet supported by mingw, need to add a librar...
authorThomas Bluemel <thomas@reactsoft.com>
Thu, 20 Oct 2005 15:17:38 +0000 (15:17 +0000)
committerThomas Bluemel <thomas@reactsoft.com>
Thu, 20 Oct 2005 15:17:38 +0000 (15:17 +0000)
svn path=/trunk/; revision=18633

reactos/tools/rbuild/module.cpp
reactos/tools/rbuild/rbuild.h

index 30ec36e..004fe92 100644 (file)
@@ -248,6 +248,23 @@ Module::Module ( const Project& project,
        else
                extension = GetDefaultModuleExtension ();
 
        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;
        att = moduleNode.GetAttribute ( "entrypoint", false );
        if ( att != NULL )
                entrypoint = att->value;
@@ -680,9 +697,15 @@ Module::GetDefaultModuleEntrypoint () const
                        return "_DllMain@12";
                case Win32CUI:
                case Test:
                        return "_DllMain@12";
                case Win32CUI:
                case Test:
-                       return "_mainCRTStartup";
+                       if ( isUnicode )
+                               return "_wmainCRTStartup";
+                       else
+                               return "_mainCRTStartup";
                case Win32GUI:
                case Win32GUI:
-                       return "_WinMainCRTStartup";
+                       if ( isUnicode )
+                               return "_wWinMainCRTStartup";
+                       else
+                               return "_WinMainCRTStartup";
                case KernelModeDriver:
                        return "_DriverEntry@8";
                case BuildTool:
                case KernelModeDriver:
                        return "_DriverEntry@8";
                case BuildTool:
index 60671e0..87992f1 100644 (file)
@@ -222,6 +222,7 @@ public:
        ModuleType type;
        ImportLibrary* importLibrary;
        bool mangledSymbols;
        ModuleType type;
        ImportLibrary* importLibrary;
        bool mangledSymbols;
+       bool isUnicode;
        Bootstrap* bootstrap;
        IfableData non_if_data;
        std::vector<Invoke*> invocations;
        Bootstrap* bootstrap;
        IfableData non_if_data;
        std::vector<Invoke*> invocations;