mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 04:13:34 +00:00
* Build ntvdm
* Add win32cui module type support svn path=/branches/xmlbuildsystem/; revision=13426
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
<directory name="csrss">
|
||||
<xi:include href="csrss/csrss.xml" />
|
||||
</directory>
|
||||
<directory name="ntvdm">
|
||||
<xi:include href="ntvdm/ntvdm.xml" />
|
||||
</directory>
|
||||
<directory name="system">
|
||||
<xi:include href="system/directory.xml" />
|
||||
</directory>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<module name="ntvdm" type="win32cui">
|
||||
<include base="ntvdm">.</include>
|
||||
<define name="__USE_W32API" />
|
||||
<define name="_DISABLE_TIDENTS" />
|
||||
<library>ntdll</library>
|
||||
<library>kernel32</library>
|
||||
<library>user32</library>
|
||||
<library>gdi32</library>
|
||||
<library>advapi32</library>
|
||||
<file>ntvdm.c</file>
|
||||
<file>ntvdm.rc</file>
|
||||
</module>
|
||||
@@ -1720,6 +1720,58 @@ MingwWin32DLLModuleHandler::GenerateWin32DLLModuleTarget ( const Module& module
|
||||
}
|
||||
|
||||
|
||||
static MingwWin32CUIModuleHandler win32cui_handler;
|
||||
|
||||
MingwWin32CUIModuleHandler::MingwWin32CUIModuleHandler ()
|
||||
: MingwModuleHandler ( Win32CUI )
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
MingwWin32CUIModuleHandler::Process ( const Module& module )
|
||||
{
|
||||
GeneratePreconditionDependencies ( module );
|
||||
GenerateWin32CUIModuleTarget ( module );
|
||||
GenerateInvocations ( module );
|
||||
}
|
||||
|
||||
void
|
||||
MingwWin32CUIModuleHandler::GenerateWin32CUIModuleTarget ( const Module& module )
|
||||
{
|
||||
static string ros_junk ( "$(ROS_TEMPORARY)" );
|
||||
string target ( FixupTargetFilename ( module.GetPath () ) );
|
||||
string workingDirectory = GetWorkingDirectory ( );
|
||||
string objectFilenames = GetObjectFilenames ( module );
|
||||
string importLibraryDependencies = GetImportLibraryDependencies ( module );
|
||||
|
||||
GenerateImportLibraryTargetIfNeeded ( module );
|
||||
|
||||
if ( module.files.size () > 0 )
|
||||
{
|
||||
GenerateMacrosAndTargetsTarget ( module );
|
||||
|
||||
fprintf ( fMakefile, "%s: %s %s\n",
|
||||
target.c_str (),
|
||||
objectFilenames.c_str (),
|
||||
importLibraryDependencies.c_str () );
|
||||
|
||||
string linkerParameters = ssprintf ( "-Wl,--subsystem,console -Wl,--entry,%s -Wl,--image-base,0x00400000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000",
|
||||
module.entrypoint.c_str () );
|
||||
GenerateLinkerCommand ( module,
|
||||
"${gcc}",
|
||||
linkerParameters,
|
||||
objectFilenames );
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf ( fMakefile, ".PHONY: %s\n\n",
|
||||
target.c_str ());
|
||||
fprintf ( fMakefile, "%s:\n\n",
|
||||
target.c_str ());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static MingwWin32GUIModuleHandler win32gui_handler;
|
||||
|
||||
MingwWin32GUIModuleHandler::MingwWin32GUIModuleHandler ()
|
||||
|
||||
@@ -243,6 +243,16 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class MingwWin32CUIModuleHandler : public MingwModuleHandler
|
||||
{
|
||||
public:
|
||||
MingwWin32CUIModuleHandler ();
|
||||
virtual void Process ( const Module& module );
|
||||
private:
|
||||
void GenerateWin32CUIModuleTarget ( const Module& module );
|
||||
};
|
||||
|
||||
|
||||
class MingwWin32GUIModuleHandler : public MingwModuleHandler
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -275,6 +275,8 @@ Module::GetModuleType ( const string& location, const XMLAttribute& attribute )
|
||||
return NativeCUI;
|
||||
if ( attribute.value == "win32dll" )
|
||||
return Win32DLL;
|
||||
if ( attribute.value == "win32cui" )
|
||||
return Win32CUI;
|
||||
if ( attribute.value == "win32gui" )
|
||||
return Win32GUI;
|
||||
if ( attribute.value == "bootloader" )
|
||||
@@ -301,6 +303,7 @@ Module::GetDefaultModuleExtension () const
|
||||
return ".o";
|
||||
case Kernel:
|
||||
case NativeCUI:
|
||||
case Win32CUI:
|
||||
case Win32GUI:
|
||||
return ".exe";
|
||||
case KernelModeDLL:
|
||||
@@ -326,8 +329,6 @@ Module::GetDefaultModuleEntrypoint () const
|
||||
{
|
||||
case Kernel:
|
||||
return "_NtProcessStartup";
|
||||
case Win32GUI:
|
||||
return "_WinMainCRTStartup";
|
||||
case KernelModeDLL:
|
||||
return "_DriverEntry@8";
|
||||
case NativeDLL:
|
||||
@@ -336,6 +337,10 @@ Module::GetDefaultModuleEntrypoint () const
|
||||
return "_NtProcessStartup@4";
|
||||
case Win32DLL:
|
||||
return "_DllMain@12";
|
||||
case Win32CUI:
|
||||
return "_mainCRTStartup";
|
||||
case Win32GUI:
|
||||
return "_WinMainCRTStartup";
|
||||
case KernelModeDriver:
|
||||
return "_DriverEntry@8";
|
||||
case BuildTool:
|
||||
|
||||
@@ -93,6 +93,7 @@ enum ModuleType
|
||||
NativeDLL,
|
||||
NativeCUI,
|
||||
Win32DLL,
|
||||
Win32CUI,
|
||||
Win32GUI,
|
||||
BootLoader,
|
||||
BootSector,
|
||||
|
||||
Reference in New Issue
Block a user