diff --git a/reactos/subsys/csrss/csrss.def b/reactos/subsys/csrss/csrss.def
deleted file mode 100644
index 292c1aa6ec8..00000000000
--- a/reactos/subsys/csrss/csrss.def
+++ /dev/null
@@ -1,8 +0,0 @@
-; $Id$
-;
-
-LIBRARY csrss.exe
-
-EXPORTS
-
-CsrServerInitialization
diff --git a/reactos/subsys/csrss/csrss.xml b/reactos/subsys/csrss/csrss.xml
new file mode 100644
index 00000000000..b308c472d3d
--- /dev/null
+++ b/reactos/subsys/csrss/csrss.xml
@@ -0,0 +1,23 @@
+
+ .
+ include
+
+ 0x0600
+ 0x0501
+ rosrtl
+ ntdll
+
+ handle.c
+ process.c
+ user.c
+ wapi.c
+
+ csrss.c
+ init.c
+ print.c
+ video.c
+ csrss.rc
+
+
+
+
diff --git a/reactos/subsys/csrss/win32csr/win32csr.xml b/reactos/subsys/csrss/win32csr/win32csr.xml
new file mode 100644
index 00000000000..e46c6e50326
--- /dev/null
+++ b/reactos/subsys/csrss/win32csr/win32csr.xml
@@ -0,0 +1,18 @@
+
+
+ .
+ include
+
+
+ ntdll
+ kernel32
+ user32
+ gdi32
+ conio.c
+ desktopbg.c
+ dllmain.c
+ exitros.c
+ guiconsole.c
+ tuiconsole.c
+ win32csr.rc
+
diff --git a/reactos/subsys/directory.xml b/reactos/subsys/directory.xml
index 6143625b771..22dcfb81519 100644
--- a/reactos/subsys/directory.xml
+++ b/reactos/subsys/directory.xml
@@ -1,3 +1,6 @@
+
+
+
diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
index d2afb66458f..1eef9eb0545 100644
--- a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
+++ b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
@@ -1559,17 +1559,6 @@ MingwNativeDLLModuleHandler::GenerateNativeDLLModuleTarget ( const Module& modul
GenerateImportLibraryTargetIfNeeded ( module );
if ( module.files.size () > 0 )
- {
- string killAt = module.mangledSymbols ? "" : "--kill-at";
- fprintf ( fMakefile,
- "\t${dlltool} --dllname %s --def %s --output-lib %s %s\n\n",
- module.GetTargetName ().c_str (),
- (module.GetBasePath () + SSEP + module.importLibrary->definition).c_str (),
- FixupTargetFilename ( module.GetDependencyPath () ).c_str (),
- killAt.c_str () );
- }
-
- if (module.files.size () > 0)
{
GenerateMacrosAndTargetsTarget ( module );
@@ -1595,6 +1584,63 @@ MingwNativeDLLModuleHandler::GenerateNativeDLLModuleTarget ( const Module& modul
}
+static MingwNativeCUIModuleHandler nativecui_handler;
+
+MingwNativeCUIModuleHandler::MingwNativeCUIModuleHandler ()
+ : MingwModuleHandler ( NativeCUI )
+{
+}
+
+void
+MingwNativeCUIModuleHandler::Process ( const Module& module )
+{
+ GeneratePreconditionDependencies ( module );
+ GenerateNativeCUIModuleTarget ( module );
+ GenerateInvocations ( module );
+}
+
+void
+MingwNativeCUIModuleHandler::GenerateNativeCUIModuleTarget ( const Module& module )
+{
+ static string ros_junk ( "$(ROS_TEMPORARY)" );
+ string target ( FixupTargetFilename ( module.GetPath () ) );
+ string workingDirectory = GetWorkingDirectory ( );
+ string objectFilenames = GetObjectFilenames ( module );
+ string archiveFilename = GetModuleArchiveFilename ( module );
+ string importLibraryDependencies = GetImportLibraryDependencies ( module );
+
+ GenerateImportLibraryTargetIfNeeded ( module );
+
+ if ( module.files.size () > 0 )
+ {
+ string* cflags = new string ( "-D__NTAPP__" );
+ GenerateMacrosAndTargetsTarget ( module,
+ cflags,
+ NULL );
+ delete cflags;
+
+ fprintf ( fMakefile, "%s: %s %s\n",
+ target.c_str (),
+ archiveFilename.c_str (),
+ importLibraryDependencies.c_str () );
+
+ string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -nostdlib",
+ 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 MingwWin32DLLModuleHandler win32dll_handler;
MingwWin32DLLModuleHandler::MingwWin32DLLModuleHandler ()
diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.h b/reactos/tools/rbuild/backend/mingw/modulehandler.h
index 3ed21d525dd..88b220b178c 100644
--- a/reactos/tools/rbuild/backend/mingw/modulehandler.h
+++ b/reactos/tools/rbuild/backend/mingw/modulehandler.h
@@ -222,6 +222,16 @@ private:
};
+class MingwNativeCUIModuleHandler : public MingwModuleHandler
+{
+public:
+ MingwNativeCUIModuleHandler ();
+ virtual void Process ( const Module& module );
+private:
+ void GenerateNativeCUIModuleTarget ( const Module& module );
+};
+
+
class MingwWin32DLLModuleHandler : public MingwModuleHandler
{
public:
diff --git a/reactos/tools/rbuild/module.cpp b/reactos/tools/rbuild/module.cpp
index a309a245027..e2d975f985f 100644
--- a/reactos/tools/rbuild/module.cpp
+++ b/reactos/tools/rbuild/module.cpp
@@ -271,6 +271,8 @@ Module::GetModuleType ( const string& location, const XMLAttribute& attribute )
return KernelModeDriver;
if ( attribute.value == "nativedll" )
return NativeDLL;
+ if ( attribute.value == "nativecui" )
+ return NativeCUI;
if ( attribute.value == "win32dll" )
return Win32DLL;
if ( attribute.value == "win32gui" )
@@ -298,6 +300,7 @@ Module::GetDefaultModuleExtension () const
case ObjectLibrary:
return ".o";
case Kernel:
+ case NativeCUI:
case Win32GUI:
return ".exe";
case KernelModeDLL:
@@ -329,6 +332,8 @@ Module::GetDefaultModuleEntrypoint () const
return "_DriverEntry@8";
case NativeDLL:
return "_DllMainCRTStartup@12";
+ case NativeCUI:
+ return "_NtProcessStartup@4";
case Win32DLL:
return "_DllMain@12";
case KernelModeDriver:
diff --git a/reactos/tools/rbuild/rbuild.h b/reactos/tools/rbuild/rbuild.h
index 0d8b548f276..f8e7db0d312 100644
--- a/reactos/tools/rbuild/rbuild.h
+++ b/reactos/tools/rbuild/rbuild.h
@@ -91,6 +91,7 @@ enum ModuleType
KernelModeDLL,
KernelModeDriver,
NativeDLL,
+ NativeCUI,
Win32DLL,
Win32GUI,
BootLoader,