mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
- Enable ROS_LEAN_AND_MEAN if you want 50% smaller binaries and a 20MB reduction in memory usage.
- Create a new module type: exportdriver for drivers which also export files. Not supremely useful right now, but it helps us decrease compilation time of normal drivers by not running useless commands on them. Later we'll also strip out their export table. We can also make exportdrivers automatically read their .def file instead of specfiygone one. svn path=/trunk/; revision=22339
This commit is contained in:
parent
1aeb0661d4
commit
322d8b7398
20 changed files with 60 additions and 26 deletions
|
@ -97,6 +97,12 @@
|
|||
# output files) or no (to not build non-symbol-stripped versions of
|
||||
# executable output files). The variable defaults to no.
|
||||
#
|
||||
# ROS_LEAN_AND_MEAN
|
||||
# This variable controls if all binaries should be stripped out of useless
|
||||
# data added by GCC/LD as well as of RSYM symbol data. Output binary size
|
||||
# will go from 80 to 40MB, memory usage from 58 to 38MB and the install CD
|
||||
# from 18 to 13MB. The variable defaults to no.
|
||||
#
|
||||
# ROS_RBUILDFLAGS
|
||||
# Pass parameters to rbuild.
|
||||
# -v Be verbose.
|
||||
|
@ -203,6 +209,7 @@ ifeq ($(HALFVERBOSEECHO),yes)
|
|||
ECHO_REGTESTS=@echo $(QUOTE)[REGTESTS] $@$(QUOTE)
|
||||
ECHO_TEST =@echo $(QUOTE)[TEST] $@$(QUOTE)
|
||||
ECHO_GENDIB =@echo $(QUOTE)[GENDIB] $@$(QUOTE)
|
||||
ECHO_STRIP =@echo $(QUOTE)[STRIP] $@$(QUOTE)
|
||||
else
|
||||
ECHO_CP =
|
||||
ECHO_MKDIR =
|
||||
|
@ -231,6 +238,7 @@ else
|
|||
ECHO_REGTESTS=
|
||||
ECHO_TEST =
|
||||
ECHO_GENDIB =
|
||||
ECHO_STRIP =
|
||||
endif
|
||||
|
||||
|
||||
|
@ -256,6 +264,7 @@ endif
|
|||
ar = $(Q)$(PREFIX)-ar
|
||||
objcopy = $(Q)$(PREFIX)-objcopy
|
||||
dlltool = $(Q)$(PREFIX)-dlltool
|
||||
strip = $(Q)$(PREFIX)-strip
|
||||
windres = $(Q)$(PREFIX)-windres
|
||||
rm = $(Q)rm -f
|
||||
cp = $(Q)cp
|
||||
|
@ -275,6 +284,7 @@ else # mingw32-windows
|
|||
ar = $(Q)ar
|
||||
objcopy = $(Q)objcopy
|
||||
dlltool = $(Q)dlltool
|
||||
strip = $(Q)strip
|
||||
windres = $(Q)windres
|
||||
rm = $(Q)rm -f
|
||||
cp = $(Q)cp
|
||||
|
@ -293,6 +303,7 @@ else # mingw32-windows
|
|||
ar = $(Q)ar
|
||||
objcopy = $(Q)objcopy
|
||||
dlltool = $(Q)dlltool
|
||||
strip = $(Q)strip
|
||||
windres = $(Q)windres
|
||||
rm = $(Q)del /f /q
|
||||
cp = $(Q)copy /y
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="ks" type="kernelmodedriver" installbase="system32/drivers" installname="ks.sys" warnings="true">
|
||||
<module name="ks" type="exportdriver" installbase="system32/drivers" installname="ks.sys" warnings="true">
|
||||
<include base="ks">.</include>
|
||||
<include base="ks">..</include>
|
||||
<importlibrary definition="ks.def" />
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="portcls" type="kernelmodedriver" installbase="system32/drivers" installname="portcls.sys">
|
||||
<module name="portcls" type="exportdriver" installbase="system32/drivers" installname="portcls.sys">
|
||||
<importlibrary definition="portcls.def" />
|
||||
<define name="__USE_W32API" />
|
||||
<library>ntoskrnl</library>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="ndis" type="kernelmodedriver" installbase="system32/drivers" installname="ndis.sys">
|
||||
<module name="ndis" type="exportdriver" installbase="system32/drivers" installname="ndis.sys">
|
||||
<importlibrary definition="ndis.def"></importlibrary>
|
||||
<include base="ndis">include</include>
|
||||
<define name="NDIS_WRAPPER" />
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="tcpip" type="kernelmodedriver" installbase="system32/drivers" installname="tcpip.sys">
|
||||
<module name="tcpip" type="exportdriver" installbase="system32/drivers" installname="tcpip.sys">
|
||||
<importlibrary definition="tcpip.def"></importlibrary>
|
||||
<include base="tcpip">include</include>
|
||||
<include base="oskittcp">include</include>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="tdi" type="kernelmodedriver" installbase="system32/drivers" installname="tdi.sys">
|
||||
<module name="tdi" type="exportdriver" installbase="system32/drivers" installname="tdi.sys">
|
||||
<importlibrary definition="misc/tdi.def"></importlibrary>
|
||||
<define name="__USE_W32API" />
|
||||
<library>ntoskrnl</library>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="class2" type="kernelmodedriver" installbase="system32/drivers" installname="class2.sys">
|
||||
<module name="class2" type="exportdriver" installbase="system32/drivers" installname="class2.sys">
|
||||
<bootstrap base="reactos" />
|
||||
<define name="__USE_W32API" />
|
||||
<importlibrary definition="class2.def" />
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="diskdump" type="kernelmodedriver" installbase="system32/drivers" installname="diskdump.sys">
|
||||
<module name="diskdump" type="exportdriver" installbase="system32/drivers" installname="diskdump.sys">
|
||||
<bootstrap base="reactos" />
|
||||
<define name="__USE_W32API" />
|
||||
<include base="ReactOS">include/reactos/drivers</include>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="pciidex" type="kernelmodedriver" installbase="system32/drivers" installname="pciidex.sys">
|
||||
<module name="pciidex" type="exportdriver" installbase="system32/drivers" installname="pciidex.sys">
|
||||
<importlibrary definition="pciidex.def" />
|
||||
<define name="__USE_W32API" />
|
||||
<library>ntoskrnl</library>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="scsiport" type="kernelmodedriver" installbase="system32/drivers" installname="scsiport.sys">
|
||||
<module name="scsiport" type="exportdriver" installbase="system32/drivers" installname="scsiport.sys">
|
||||
<bootstrap base="reactos" />
|
||||
<define name="__USE_W32API" />
|
||||
<define name="_SCSIPORT_" />
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="usbd" type="kernelmodedriver" installbase="system32/drivers" installname="usbd.sys">
|
||||
<module name="usbd" type="exportdriver" installbase="system32/drivers" installname="usbd.sys">
|
||||
<importlibrary definition="usbd.def" />
|
||||
<define name="__USE_W32API" />
|
||||
<library>ntoskrnl</library>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="usbport" type="kernelmodedriver" installbase="system32/drivers" installname="usbport.sys">
|
||||
<module name="usbport" type="exportdriver" installbase="system32/drivers" installname="usbport.sys">
|
||||
<importlibrary definition="usbport.def" />
|
||||
<define name="__USE_W32API" />
|
||||
<library>sys_base</library>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="usbstor" type="kernelmodedriver" installbase="system32/drivers" installname="usbstor.sys" allowwarnings="true">
|
||||
<module name="usbstor" type="exportdriver" installbase="system32/drivers" installname="usbstor.sys" allowwarnings="true">
|
||||
<define name="__USE_W32API" />
|
||||
<define name="DEBUG_MODE" />
|
||||
<include base="ntoskrnl">include</include>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<module name="videoprt" type="kernelmodedriver" installbase="system32/drivers" installname="videoprt.sys">
|
||||
<module name="videoprt" type="exportdriver" installbase="system32/drivers" installname="videoprt.sys">
|
||||
<importlibrary definition="videoprt.def" />
|
||||
<include base="videoprt">.</include>
|
||||
<include base="ntoskrnl">include</include>
|
||||
|
|
|
@ -154,7 +154,7 @@
|
|||
</compilationunit>
|
||||
</directory>
|
||||
</module>
|
||||
<module name="win32k" type="kernelmodedriver" installbase="system32" installname="win32k.sys" allowwarnings="true">
|
||||
<module name="win32k" type="exportdriver" installbase="system32" installname="win32k.sys" allowwarnings="true">
|
||||
<importlibrary definition="win32k.def" />
|
||||
<library>win32k_base</library>
|
||||
<library>pseh</library>
|
||||
|
|
|
@ -223,6 +223,7 @@ MingwModuleHandler::InstanciateHandler (
|
|||
handler = new MingwWin32DLLModuleHandler ( module );
|
||||
break;
|
||||
case KernelModeDriver:
|
||||
case ExportDriver: // maybe change this later
|
||||
handler = new MingwKernelModeDriverModuleHandler ( module );
|
||||
break;
|
||||
case BootLoader:
|
||||
|
@ -1449,6 +1450,19 @@ MingwModuleHandler::GenerateRunRsymCode () const
|
|||
"\t$(Q)$(RSYM_TARGET) $@ $@\n\n" );
|
||||
}
|
||||
|
||||
void
|
||||
MingwModuleHandler::GenerateRunStripCode () const
|
||||
{
|
||||
fprintf ( fMakefile,
|
||||
"ifeq ($(ROS_LEAN_AND_MEAN),yes)\n" );
|
||||
fprintf ( fMakefile,
|
||||
"\t$(ECHO_STRIP)\n" );
|
||||
fprintf ( fMakefile,
|
||||
"\t${strip} -sx $@\n\n" );
|
||||
fprintf ( fMakefile,
|
||||
"endif\n" );
|
||||
}
|
||||
|
||||
void
|
||||
MingwModuleHandler::GenerateLinkerCommand (
|
||||
const string& dependencies,
|
||||
|
@ -1521,19 +1535,18 @@ MingwModuleHandler::GenerateLinkerCommand (
|
|||
objectsMacro.c_str (),
|
||||
libsMacro.c_str (),
|
||||
GetLinkerMacro ().c_str () );
|
||||
|
||||
if ( pefixupParameters.length() != 0 )
|
||||
{
|
||||
fprintf ( fMakefile,
|
||||
"\t$(Q)$(PEFIXUP_TARGET) %s -exports %s\n",
|
||||
target.c_str (),
|
||||
pefixupParameters.c_str() );
|
||||
}
|
||||
|
||||
#if 0 // causes crashes sometimes
|
||||
fprintf ( fMakefile,
|
||||
"\t${objcopy} -R .edata %s\n",
|
||||
target.c_str () );
|
||||
#endif
|
||||
}
|
||||
|
||||
GenerateBuildMapCode ();
|
||||
GenerateBuildNonSymbolStrippedCode ();
|
||||
GenerateRunRsymCode ();
|
||||
GenerateRunStripCode ();
|
||||
GenerateCleanObjectsAsYouGoCode ();
|
||||
}
|
||||
|
||||
|
|
|
@ -112,6 +112,7 @@ protected:
|
|||
std::string GetLinkerMacro () const;
|
||||
void GenerateCleanObjectsAsYouGoCode () const;
|
||||
void GenerateRunRsymCode () const;
|
||||
void GenerateRunStripCode () const;
|
||||
void GenerateLinkerCommand ( const std::string& dependencies,
|
||||
const std::string& linker,
|
||||
const std::string& linkerParameters,
|
||||
|
|
|
@ -43,6 +43,7 @@ Bootstrap::IsSupportedModuleType ( ModuleType type )
|
|||
{
|
||||
case Kernel:
|
||||
case KernelModeDLL:
|
||||
case ExportDriver:
|
||||
case NativeDLL:
|
||||
case NativeCUI:
|
||||
case Win32DLL:
|
||||
|
|
|
@ -731,6 +731,8 @@ 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" )
|
||||
|
@ -793,6 +795,7 @@ Module::GetDefaultModuleExtension () const
|
|||
return ".dll";
|
||||
case KernelModeDriver:
|
||||
case BootLoader:
|
||||
case ExportDriver:
|
||||
return ".sys";
|
||||
case BootSector:
|
||||
return ".o";
|
||||
|
@ -822,6 +825,8 @@ Module::GetDefaultModuleEntrypoint () const
|
|||
case Kernel:
|
||||
return "_NtProcessStartup";
|
||||
case KernelModeDLL:
|
||||
case KernelModeDriver:
|
||||
case ExportDriver:
|
||||
return "_DriverEntry@8";
|
||||
case NativeDLL:
|
||||
return "_DllMainCRTStartup@12";
|
||||
|
@ -841,8 +846,6 @@ Module::GetDefaultModuleEntrypoint () const
|
|||
return "_wWinMainCRTStartup";
|
||||
else
|
||||
return "_WinMainCRTStartup";
|
||||
case KernelModeDriver:
|
||||
return "_DriverEntry@8";
|
||||
case BuildTool:
|
||||
case StaticLibrary:
|
||||
case ObjectLibrary:
|
||||
|
@ -879,6 +882,7 @@ Module::GetDefaultModuleBaseaddress () const
|
|||
return "0x00400000";
|
||||
case KernelModeDLL:
|
||||
case KernelModeDriver:
|
||||
case ExportDriver:
|
||||
return "0x00010000";
|
||||
case BuildTool:
|
||||
case StaticLibrary:
|
||||
|
@ -910,10 +914,11 @@ Module::IsDLL () const
|
|||
{
|
||||
case Kernel:
|
||||
case KernelModeDLL:
|
||||
case ExportDriver:
|
||||
case NativeDLL:
|
||||
case Win32DLL:
|
||||
return true;
|
||||
case KernelModeDriver:
|
||||
return true;
|
||||
case NativeCUI:
|
||||
case Win32CUI:
|
||||
case Test:
|
||||
|
@ -943,6 +948,7 @@ Module::GenerateInOutputTree () const
|
|||
{
|
||||
case Kernel:
|
||||
case KernelModeDLL:
|
||||
case ExportDriver:
|
||||
case NativeDLL:
|
||||
case Win32DLL:
|
||||
case KernelModeDriver:
|
||||
|
@ -1397,6 +1403,7 @@ AutoRegister::IsSupportedModuleType ( ModuleType type )
|
|||
return true;
|
||||
case Kernel:
|
||||
case KernelModeDLL:
|
||||
case ExportDriver:
|
||||
case NativeDLL:
|
||||
case NativeCUI:
|
||||
case Win32CUI:
|
||||
|
|
|
@ -264,7 +264,8 @@ enum ModuleType
|
|||
RpcClient = 17,
|
||||
Alias = 18,
|
||||
BootProgram = 19,
|
||||
Win32SCR = 20
|
||||
Win32SCR = 20,
|
||||
ExportDriver = 21
|
||||
};
|
||||
|
||||
enum HostType
|
||||
|
|
Loading…
Reference in a new issue