From 7855dd896f251bcbd08c426747d3d603e89d0938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Mon, 30 Jul 2007 13:18:35 +0000 Subject: [PATCH] Remove ExportDriver concept. If you want a driver which exports some functions, simply set it as kernelmodedriver and add a .def file svn path=/trunk/; revision=28043 --- reactos/drivers/ksfilter/ks/ks.rbuild | 4 +-- reactos/drivers/network/ndis/ndis.rbuild | 2 +- reactos/drivers/network/tcpip/tcpip.rbuild | 2 +- reactos/drivers/network/tdi/tdi.rbuild | 2 +- .../storage/class/class2/class2.rbuild | 2 +- .../storage/ide/pciidex/pciidex.rbuild | 2 +- .../storage/port/diskdump/diskdump.rbuild | 2 +- .../drivers/storage/scsiport/scsiport.rbuild | 2 +- .../drivers/video/videoprt/videoprt.rbuild | 2 +- .../drivers/wdm/audio/drm/drmk/drmk.rbuild | 2 +- reactos/drivers/wmi/wmilib.rbuild | 2 +- reactos/subsystems/win32/win32k/win32k.rbuild | 2 +- .../rbuild/backend/mingw/modulehandler.cpp | 27 +++++++++++++------ reactos/tools/rbuild/bootstrap.cpp | 1 - reactos/tools/rbuild/module.cpp | 12 ++------- reactos/tools/rbuild/rbuild.h | 5 ++-- 16 files changed, 36 insertions(+), 35 deletions(-) diff --git a/reactos/drivers/ksfilter/ks/ks.rbuild b/reactos/drivers/ksfilter/ks/ks.rbuild index 76fe44f79be..14188521156 100644 --- a/reactos/drivers/ksfilter/ks/ks.rbuild +++ b/reactos/drivers/ksfilter/ks/ks.rbuild @@ -1,4 +1,4 @@ - + . .. ../include @@ -7,7 +7,7 @@ - + ks.rc allocators.c clocks.c diff --git a/reactos/drivers/network/ndis/ndis.rbuild b/reactos/drivers/network/ndis/ndis.rbuild index 9712375a7fb..654c9fa7a51 100644 --- a/reactos/drivers/network/ndis/ndis.rbuild +++ b/reactos/drivers/network/ndis/ndis.rbuild @@ -1,4 +1,4 @@ - + include diff --git a/reactos/drivers/network/tcpip/tcpip.rbuild b/reactos/drivers/network/tcpip/tcpip.rbuild index 18ee332f8cb..433108623e6 100644 --- a/reactos/drivers/network/tcpip/tcpip.rbuild +++ b/reactos/drivers/network/tcpip/tcpip.rbuild @@ -1,4 +1,4 @@ - + include include diff --git a/reactos/drivers/network/tdi/tdi.rbuild b/reactos/drivers/network/tdi/tdi.rbuild index 73db4d7d8d1..19dd0b44ea0 100644 --- a/reactos/drivers/network/tdi/tdi.rbuild +++ b/reactos/drivers/network/tdi/tdi.rbuild @@ -1,4 +1,4 @@ - + ntoskrnl diff --git a/reactos/drivers/storage/class/class2/class2.rbuild b/reactos/drivers/storage/class/class2/class2.rbuild index f6a114eb1d9..39a12fba0e7 100644 --- a/reactos/drivers/storage/class/class2/class2.rbuild +++ b/reactos/drivers/storage/class/class2/class2.rbuild @@ -1,4 +1,4 @@ - + diff --git a/reactos/drivers/storage/ide/pciidex/pciidex.rbuild b/reactos/drivers/storage/ide/pciidex/pciidex.rbuild index ec191f5f0a9..4dcbabea8ab 100644 --- a/reactos/drivers/storage/ide/pciidex/pciidex.rbuild +++ b/reactos/drivers/storage/ide/pciidex/pciidex.rbuild @@ -1,4 +1,4 @@ - + ntoskrnl diff --git a/reactos/drivers/storage/port/diskdump/diskdump.rbuild b/reactos/drivers/storage/port/diskdump/diskdump.rbuild index 7f92679fef3..6d9956e4bb8 100644 --- a/reactos/drivers/storage/port/diskdump/diskdump.rbuild +++ b/reactos/drivers/storage/port/diskdump/diskdump.rbuild @@ -1,4 +1,4 @@ - + include/reactos/drivers diff --git a/reactos/drivers/storage/scsiport/scsiport.rbuild b/reactos/drivers/storage/scsiport/scsiport.rbuild index 75425c59b2c..105caa70e47 100644 --- a/reactos/drivers/storage/scsiport/scsiport.rbuild +++ b/reactos/drivers/storage/scsiport/scsiport.rbuild @@ -1,4 +1,4 @@ - + diff --git a/reactos/drivers/video/videoprt/videoprt.rbuild b/reactos/drivers/video/videoprt/videoprt.rbuild index 90b9387692b..6e0cd428d5e 100644 --- a/reactos/drivers/video/videoprt/videoprt.rbuild +++ b/reactos/drivers/video/videoprt/videoprt.rbuild @@ -1,4 +1,4 @@ - + . include diff --git a/reactos/drivers/wdm/audio/drm/drmk/drmk.rbuild b/reactos/drivers/wdm/audio/drm/drmk/drmk.rbuild index a053718100c..755381271f2 100644 --- a/reactos/drivers/wdm/audio/drm/drmk/drmk.rbuild +++ b/reactos/drivers/wdm/audio/drm/drmk/drmk.rbuild @@ -1,4 +1,4 @@ - + . .. ../include diff --git a/reactos/drivers/wmi/wmilib.rbuild b/reactos/drivers/wmi/wmilib.rbuild index 86a90605815..f7c7f5bd15c 100644 --- a/reactos/drivers/wmi/wmilib.rbuild +++ b/reactos/drivers/wmi/wmilib.rbuild @@ -1,4 +1,4 @@ - + . ntoskrnl diff --git a/reactos/subsystems/win32/win32k/win32k.rbuild b/reactos/subsystems/win32/win32k/win32k.rbuild index d03a01af7f7..67f9d4e37ca 100644 --- a/reactos/subsystems/win32/win32k/win32k.rbuild +++ b/reactos/subsystems/win32/win32k/win32k.rbuild @@ -160,7 +160,7 @@ xpstubs.c - + win32k_base pseh diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp index f48207449e7..b1035ae884f 100644 --- a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp +++ b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp @@ -226,7 +226,6 @@ MingwModuleHandler::InstanciateHandler ( handler = new MingwWin32OCXModuleHandler ( module ); break; case KernelModeDriver: - case ExportDriver: // maybe change this later handler = new MingwKernelModeDriverModuleHandler ( module ); break; case BootLoader: @@ -1626,7 +1625,19 @@ MingwModuleHandler::GenerateLinkerCommand ( fprintf ( fMakefile, "\t$(ECHO_LD)\n" ); string targetName ( module.GetTargetName () ); - if ( module.IsDLL () ) + if ( !module.IsDLL () ) + { + fprintf ( fMakefile, + "\t%s %s %s -o %s %s %s %s\n", + linker.c_str (), + linkerParameters.c_str (), + linkerScriptArgument.c_str (), + target.c_str (), + objectsMacro.c_str (), + libsMacro.c_str (), + GetLinkerMacro ().c_str () ); + } + else if ( module.HasImportLibrary () ) { string temp_exp = ros_temp + module.name + ".temp.exp"; CLEAN_FILE ( temp_exp ); @@ -1661,6 +1672,12 @@ MingwModuleHandler::GenerateLinkerCommand ( } else { + /* XXX: need to workaround binutils bug, which exports + * all functions in a dll if no .def file or an empty + * one has been provided... */ + /* See bug 1244 */ + //printf ( "%s will have all its functions exported\n", + // module.GetTargetName ().c_str () ); fprintf ( fMakefile, "\t%s %s %s -o %s %s %s %s\n", linker.c_str (), @@ -1670,12 +1687,6 @@ MingwModuleHandler::GenerateLinkerCommand ( objectsMacro.c_str (), libsMacro.c_str (), GetLinkerMacro ().c_str () ); - -#if 0 // causes crashes sometimes - fprintf ( fMakefile, - "\t${objcopy} -R .edata %s\n", - target.c_str () ); -#endif } GenerateBuildMapCode (); diff --git a/reactos/tools/rbuild/bootstrap.cpp b/reactos/tools/rbuild/bootstrap.cpp index bf8c4d2d4da..32127a3ab5d 100644 --- a/reactos/tools/rbuild/bootstrap.cpp +++ b/reactos/tools/rbuild/bootstrap.cpp @@ -43,7 +43,6 @@ Bootstrap::IsSupportedModuleType ( ModuleType type ) { case Kernel: case KernelModeDLL: - case ExportDriver: case NativeDLL: case NativeCUI: case Win32DLL: diff --git a/reactos/tools/rbuild/module.cpp b/reactos/tools/rbuild/module.cpp index 50266e40d91..0b7b7830aad 100644 --- a/reactos/tools/rbuild/module.cpp +++ b/reactos/tools/rbuild/module.cpp @@ -805,8 +805,6 @@ Module::GetModuleType ( const string& location, const XMLAttribute& attribute ) return Kernel; if ( attribute.value == "kernelmodedll" ) return KernelModeDLL; - if ( attribute.value == "exportdriver" ) - return ExportDriver; if ( attribute.value == "kernelmodedriver" ) return KernelModeDriver; if ( attribute.value == "nativedll" ) @@ -881,7 +879,6 @@ Module::GetDefaultModuleExtension () const return ".ocx"; case KernelModeDriver: case BootLoader: - case ExportDriver: return ".sys"; case BootSector: return ".o"; @@ -916,7 +913,6 @@ Module::GetDefaultModuleEntrypoint () const return "NtProcessStartup"; case KernelModeDLL: case KernelModeDriver: - case ExportDriver: return "DriverEntry@8"; case NativeDLL: return "DllMainCRTStartup@12"; @@ -978,7 +974,6 @@ Module::GetDefaultModuleBaseaddress () const return "0x00400000"; case KernelModeDLL: case KernelModeDriver: - case ExportDriver: return "0x00010000"; case BuildTool: case StaticLibrary: @@ -1014,12 +1009,11 @@ Module::IsDLL () const { case Kernel: case KernelModeDLL: - case ExportDriver: case NativeDLL: case Win32DLL: case Win32OCX: - return true; case KernelModeDriver: + return true; case NativeCUI: case Win32CUI: case Test: @@ -1053,7 +1047,6 @@ Module::GenerateInOutputTree () const { case Kernel: case KernelModeDLL: - case ExportDriver: case NativeDLL: case Win32DLL: case Win32OCX: @@ -1547,11 +1540,10 @@ AutoRegister::IsSupportedModuleType ( ModuleType type ) switch ( type ) { case Win32DLL: - case Win32OCX: + case Win32OCX: return true; case Kernel: case KernelModeDLL: - case ExportDriver: case NativeDLL: case NativeCUI: case Win32CUI: diff --git a/reactos/tools/rbuild/rbuild.h b/reactos/tools/rbuild/rbuild.h index 538e6154e76..56c0b6de27c 100644 --- a/reactos/tools/rbuild/rbuild.h +++ b/reactos/tools/rbuild/rbuild.h @@ -270,7 +270,6 @@ enum ModuleType Alias = 19, BootProgram = 20, Win32SCR = 21, - ExportDriver = 22, IdlHeader = 23, IsoRegTest = 24, LiveIsoRegTest = 25, @@ -322,7 +321,7 @@ public: bool allowWarnings; bool enabled; bool useHostStdlib; - bool isStartupLib; + bool isStartupLib; Module ( const Project& project, const XMLElement& moduleNode, @@ -346,7 +345,7 @@ public: void InvokeModule () const; void ProcessXML (); void GetSourceFilenames ( string_list& list, - bool includeGeneratedFiles ) const; + bool includeGeneratedFiles ) const; private: std::string GetDefaultModuleExtension () const; std::string GetDefaultModuleEntrypoint () const;