From 56ff0d9653488ba45b7d5b71f3928bdd8865eb9f Mon Sep 17 00:00:00 2001 From: Casper Hornstrup Date: Sat, 5 Feb 2005 18:52:38 +0000 Subject: [PATCH] * Build csrss and win32csr * NativeCUI module type support svn path=/branches/xmlbuildsystem/; revision=13424 --- reactos/subsys/csrss/csrss.def | 8 --- reactos/subsys/csrss/csrss.xml | 23 +++++++ reactos/subsys/csrss/win32csr/win32csr.xml | 18 +++++ reactos/subsys/directory.xml | 3 + .../rbuild/backend/mingw/modulehandler.cpp | 68 ++++++++++++++++--- .../rbuild/backend/mingw/modulehandler.h | 10 +++ reactos/tools/rbuild/module.cpp | 5 ++ reactos/tools/rbuild/rbuild.h | 1 + 8 files changed, 117 insertions(+), 19 deletions(-) delete mode 100644 reactos/subsys/csrss/csrss.def create mode 100644 reactos/subsys/csrss/csrss.xml create mode 100644 reactos/subsys/csrss/win32csr/win32csr.xml 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,