mirror of
https://github.com/reactos/reactos.git
synced 2024-07-14 00:25:05 +00:00
- Added 'MessageHeader' module type for handling .mc files
- turn .mc generated files (RC & Headers) into real dependencies svn path=/trunk/; revision=33616
This commit is contained in:
parent
3c976797cd
commit
c912e98ba3
|
@ -28,6 +28,7 @@
|
||||||
<include>include/ndk</include>
|
<include>include/ndk</include>
|
||||||
<include>include/reactos</include>
|
<include>include/reactos</include>
|
||||||
<include root="intermediate">include/reactos</include>
|
<include root="intermediate">include/reactos</include>
|
||||||
|
<include root="intermediate">include/reactos/mc</include>
|
||||||
<include>include/reactos/libs</include>
|
<include>include/reactos/libs</include>
|
||||||
|
|
||||||
<directory name="base">
|
<directory name="base">
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!DOCTYPE module SYSTEM "../../tools/rbuild/project.dtd">
|
<!DOCTYPE module SYSTEM "../../tools/rbuild/project.dtd">
|
||||||
<module name="ntdll" type="win32dll" entrypoint="0" baseaddress="${BASEADDRESS_NTDLL}" installbase="system32" installname="ntdll.dll">
|
<group>
|
||||||
|
<module name="ntdll" type="win32dll" entrypoint="0" baseaddress="${BASEADDRESS_NTDLL}" installbase="system32" installname="ntdll.dll">
|
||||||
<bootstrap installbase="$(CDOUTPUT)/system32" />
|
<bootstrap installbase="$(CDOUTPUT)/system32" />
|
||||||
<importlibrary definition="def/ntdll.def" />
|
<importlibrary definition="def/ntdll.def" />
|
||||||
<include base="ntdll">inc</include>
|
<include base="ntdll">inc</include>
|
||||||
|
@ -18,6 +19,7 @@
|
||||||
<linkerflag>-lgcc</linkerflag>
|
<linkerflag>-lgcc</linkerflag>
|
||||||
<linkerflag>-nostdlib</linkerflag>
|
<linkerflag>-nostdlib</linkerflag>
|
||||||
<linkerflag>-nostartfiles</linkerflag>
|
<linkerflag>-nostartfiles</linkerflag>
|
||||||
|
<dependency>ntstatus</dependency>
|
||||||
<directory name="csr">
|
<directory name="csr">
|
||||||
<file>api.c</file>
|
<file>api.c</file>
|
||||||
<file>capture.c</file>
|
<file>capture.c</file>
|
||||||
|
@ -50,8 +52,5 @@
|
||||||
<directory name="inc">
|
<directory name="inc">
|
||||||
<pch>ntdll.h</pch>
|
<pch>ntdll.h</pch>
|
||||||
</directory>
|
</directory>
|
||||||
|
</module>
|
||||||
<directory name="def">
|
</group>
|
||||||
<file>ntstatus.mc</file>
|
|
||||||
</directory>
|
|
||||||
</module>
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!DOCTYPE group SYSTEM "../../../tools/rbuild/project.dtd">
|
<!DOCTYPE group SYSTEM "../../../tools/rbuild/project.dtd">
|
||||||
<group>
|
<group>
|
||||||
<module name="kernel32_base" type="objectlibrary" allowwarnings="true">
|
<module name="kernel32_base" type="objectlibrary" allowwarnings="true">
|
||||||
<include base="kernel32_base">.</include>
|
<include base="kernel32_base">.</include>
|
||||||
<include base="kernel32_base">include</include>
|
<include base="kernel32_base">include</include>
|
||||||
<include base="ReactOS">include/reactos/subsys</include>
|
<include base="ReactOS">include/reactos/subsys</include>
|
||||||
|
@ -9,6 +9,7 @@
|
||||||
<define name="_WIN32_WINNT">0x0600</define>
|
<define name="_WIN32_WINNT">0x0600</define>
|
||||||
<define name="__NO_CTYPE_INLINES" />
|
<define name="__NO_CTYPE_INLINES" />
|
||||||
<define name="WINVER">0x609</define>
|
<define name="WINVER">0x609</define>
|
||||||
|
<dependency>errcodes</dependency>
|
||||||
<pch>k32.h</pch>
|
<pch>k32.h</pch>
|
||||||
<directory name="debug">
|
<directory name="debug">
|
||||||
<file>debugger.c</file>
|
<file>debugger.c</file>
|
||||||
|
@ -117,9 +118,8 @@
|
||||||
</directory>
|
</directory>
|
||||||
</if>
|
</if>
|
||||||
</directory>
|
</directory>
|
||||||
<file>errcodes.mc</file>
|
</module>
|
||||||
</module>
|
<module name="kernel32" type="win32dll" baseaddress="${BASEADDRESS_KERNEL32}" installbase="system32" installname="kernel32.dll">
|
||||||
<module name="kernel32" type="win32dll" baseaddress="${BASEADDRESS_KERNEL32}" installbase="system32" installname="kernel32.dll">
|
|
||||||
<importlibrary definition="kernel32.def" />
|
<importlibrary definition="kernel32.def" />
|
||||||
<include base="kernel32">.</include>
|
<include base="kernel32">.</include>
|
||||||
<include base="kernel32" root="intermediate">.</include>
|
<include base="kernel32" root="intermediate">.</include>
|
||||||
|
@ -134,5 +134,5 @@
|
||||||
<linkerflag>-nostartfiles</linkerflag>
|
<linkerflag>-nostartfiles</linkerflag>
|
||||||
<linkerflag>-nostdlib</linkerflag>
|
<linkerflag>-nostdlib</linkerflag>
|
||||||
<file>kernel32.rc</file>
|
<file>kernel32.rc</file>
|
||||||
</module>
|
</module>
|
||||||
</group>
|
</group>
|
15
reactos/include/reactos/mc/mc.rbuild
Normal file
15
reactos/include/reactos/mc/mc.rbuild
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE module SYSTEM "../../tools/rbuild/project.dtd">
|
||||||
|
<group>
|
||||||
|
<module name="ntstatus" type="messageheader">
|
||||||
|
<file>ntstatus.mc</file>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<module name="bugcodes" type="messageheader">
|
||||||
|
<file>bugcodes.mc</file>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<module name="errcodes" type="messageheader">
|
||||||
|
<file>errcodes.mc</file>
|
||||||
|
</module>
|
||||||
|
</group>
|
|
@ -4,6 +4,9 @@
|
||||||
<directory name="idl">
|
<directory name="idl">
|
||||||
<xi:include href="idl/idl.rbuild" />
|
<xi:include href="idl/idl.rbuild" />
|
||||||
</directory>
|
</directory>
|
||||||
|
<directory name="mc">
|
||||||
|
<xi:include href="mc/mc.rbuild" />
|
||||||
|
</directory>
|
||||||
<directory name="wine">
|
<directory name="wine">
|
||||||
<xi:include href="wine/wineheaders.rbuild" />
|
<xi:include href="wine/wineheaders.rbuild" />
|
||||||
</directory>
|
</directory>
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
<library>kdcom</library>
|
<library>kdcom</library>
|
||||||
<library>bootvid</library>
|
<library>bootvid</library>
|
||||||
<library>wdmguid</library>
|
<library>wdmguid</library>
|
||||||
|
<dependency>bugcodes</dependency>
|
||||||
<directory name="include">
|
<directory name="include">
|
||||||
<pch>ntoskrnl.h</pch>
|
<pch>ntoskrnl.h</pch>
|
||||||
</directory>
|
</directory>
|
||||||
|
@ -440,7 +441,6 @@
|
||||||
<directory name="wmi">
|
<directory name="wmi">
|
||||||
<file>wmi.c</file>
|
<file>wmi.c</file>
|
||||||
</directory>
|
</directory>
|
||||||
<file>bugcodes.mc</file>
|
|
||||||
<file>ntoskrnl.rc</file>
|
<file>ntoskrnl.rc</file>
|
||||||
<linkerflag>-nostartfiles</linkerflag>
|
<linkerflag>-nostartfiles</linkerflag>
|
||||||
<linkerflag>-nostdlib</linkerflag>
|
<linkerflag>-nostdlib</linkerflag>
|
||||||
|
|
|
@ -242,6 +242,9 @@ MingwModuleHandler::InstanciateHandler (
|
||||||
case Alias:
|
case Alias:
|
||||||
handler = new MingwAliasModuleHandler ( module );
|
handler = new MingwAliasModuleHandler ( module );
|
||||||
break;
|
break;
|
||||||
|
case MessageHeader:
|
||||||
|
handler = new MingwMessageHeaderModuleHandler (module);
|
||||||
|
break;
|
||||||
case IdlHeader:
|
case IdlHeader:
|
||||||
handler = new MingwIdlHeaderModuleHandler ( module );
|
handler = new MingwIdlHeaderModuleHandler ( module );
|
||||||
break;
|
break;
|
||||||
|
@ -395,6 +398,8 @@ MingwModuleHandler::ReferenceObjects (
|
||||||
return true;
|
return true;
|
||||||
if ( module.type == IdlHeader )
|
if ( module.type == IdlHeader )
|
||||||
return true;
|
return true;
|
||||||
|
if ( module.type == MessageHeader)
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2309,22 +2314,31 @@ MingwModuleHandler::GetDefaultDependencies (
|
||||||
dependencies.push_back ( "$(DXSDK_TARGET) $(dxsdk_HEADERS)" );
|
dependencies.push_back ( "$(DXSDK_TARGET) $(dxsdk_HEADERS)" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if any dependent library relies on the generated headers */
|
if (module.name != "errcodes" &&
|
||||||
for ( size_t i = 0; i < module.project.modules.size (); i++ )
|
module.name != "bugcodes" &&
|
||||||
|
module.name != "ntstatus")
|
||||||
{
|
{
|
||||||
const Module& m = *module.project.modules[i];
|
dependencies.push_back ( "$(ERRCODES_TARGET) $(ERRCODES_MCHEADERS)" );
|
||||||
for ( size_t j = 0; j < m.non_if_data.compilationUnits.size (); j++ )
|
dependencies.push_back ( "$(BUGCODES_TARGET) $(BUGCODES_MCHEADERS)" );
|
||||||
{
|
dependencies.push_back ( "$(NTSTATUS_TARGET) $(NTSTATUS_MCHEADERS)" );
|
||||||
CompilationUnit& compilationUnit = *m.non_if_data.compilationUnits[j];
|
|
||||||
const FileLocation& sourceFile = compilationUnit.GetFilename ();
|
|
||||||
string extension = GetExtension ( sourceFile );
|
|
||||||
if (extension == ".mc" || extension == ".MC" )
|
|
||||||
{
|
|
||||||
string dependency = ssprintf ( "$(%s_MCHEADERS)", m.name.c_str () );
|
|
||||||
dependencies.push_back ( dependency );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///* Check if any dependent library relies on the generated headers */
|
||||||
|
//for ( size_t i = 0; i < module.project.modules.size (); i++ )
|
||||||
|
//{
|
||||||
|
// const Module& m = *module.project.modules[i];
|
||||||
|
// for ( size_t j = 0; j < m.non_if_data.compilationUnits.size (); j++ )
|
||||||
|
// {
|
||||||
|
// CompilationUnit& compilationUnit = *m.non_if_data.compilationUnits[j];
|
||||||
|
// const FileLocation& sourceFile = compilationUnit.GetFilename ();
|
||||||
|
// string extension = GetExtension ( sourceFile );
|
||||||
|
// if (extension == ".mc" || extension == ".MC" )
|
||||||
|
// {
|
||||||
|
// string dependency = ssprintf ( "$(%s_MCHEADERS)", m.name.c_str () );
|
||||||
|
// dependencies.push_back ( dependency );
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -3827,6 +3841,19 @@ MingwAliasModuleHandler::Process ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MingwMessageHeaderModuleHandler::MingwMessageHeaderModuleHandler (
|
||||||
|
const Module& module_ )
|
||||||
|
|
||||||
|
: MingwModuleHandler ( module_ )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MingwMessageHeaderModuleHandler::Process ()
|
||||||
|
{
|
||||||
|
GenerateRules ();
|
||||||
|
}
|
||||||
|
|
||||||
MingwIdlHeaderModuleHandler::MingwIdlHeaderModuleHandler (
|
MingwIdlHeaderModuleHandler::MingwIdlHeaderModuleHandler (
|
||||||
const Module& module_ )
|
const Module& module_ )
|
||||||
|
|
||||||
|
|
|
@ -469,6 +469,13 @@ public:
|
||||||
virtual void Process ();
|
virtual void Process ();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MingwMessageHeaderModuleHandler : public MingwModuleHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MingwMessageHeaderModuleHandler ( const Module& module );
|
||||||
|
virtual HostType DefaultHost() { return HostFalse; }
|
||||||
|
virtual void Process ();
|
||||||
|
};
|
||||||
|
|
||||||
class MingwAliasModuleHandler : public MingwModuleHandler
|
class MingwAliasModuleHandler : public MingwModuleHandler
|
||||||
{
|
{
|
||||||
|
|
|
@ -71,6 +71,7 @@ Bootstrap::IsSupportedModuleType ( ModuleType type )
|
||||||
case RpcProxy:
|
case RpcProxy:
|
||||||
case Alias:
|
case Alias:
|
||||||
case IdlHeader:
|
case IdlHeader:
|
||||||
|
case MessageHeader:
|
||||||
case EmbeddedTypeLib:
|
case EmbeddedTypeLib:
|
||||||
case ElfExecutable:
|
case ElfExecutable:
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -1003,6 +1003,8 @@ Module::GetModuleType ( const string& location, const XMLAttribute& attribute )
|
||||||
return ElfExecutable;
|
return ElfExecutable;
|
||||||
if ( attribute.value == "cabinet" )
|
if ( attribute.value == "cabinet" )
|
||||||
return Cabinet;
|
return Cabinet;
|
||||||
|
if ( attribute.value == "messageheader" )
|
||||||
|
return MessageHeader;
|
||||||
throw InvalidAttributeValueException ( location,
|
throw InvalidAttributeValueException ( location,
|
||||||
attribute.name,
|
attribute.name,
|
||||||
attribute.value );
|
attribute.value );
|
||||||
|
@ -1045,6 +1047,7 @@ Module::GetTargetDirectoryTree () const
|
||||||
case RpcProxy:
|
case RpcProxy:
|
||||||
case Alias:
|
case Alias:
|
||||||
case IdlHeader:
|
case IdlHeader:
|
||||||
|
case MessageHeader:
|
||||||
return IntermediateDirectory;
|
return IntermediateDirectory;
|
||||||
case TypeDontCare:
|
case TypeDontCare:
|
||||||
break;
|
break;
|
||||||
|
@ -1104,6 +1107,7 @@ Module::GetDefaultModuleExtension () const
|
||||||
case Alias:
|
case Alias:
|
||||||
case ElfExecutable:
|
case ElfExecutable:
|
||||||
case IdlHeader:
|
case IdlHeader:
|
||||||
|
case MessageHeader:
|
||||||
return "";
|
return "";
|
||||||
case EmbeddedTypeLib:
|
case EmbeddedTypeLib:
|
||||||
return ".tlb";
|
return ".tlb";
|
||||||
|
@ -1160,6 +1164,7 @@ Module::GetDefaultModuleEntrypoint () const
|
||||||
case Alias:
|
case Alias:
|
||||||
case BootProgram:
|
case BootProgram:
|
||||||
case IdlHeader:
|
case IdlHeader:
|
||||||
|
case MessageHeader:
|
||||||
case ElfExecutable:
|
case ElfExecutable:
|
||||||
case EmbeddedTypeLib:
|
case EmbeddedTypeLib:
|
||||||
case Cabinet:
|
case Cabinet:
|
||||||
|
@ -1211,6 +1216,7 @@ Module::GetDefaultModuleBaseaddress () const
|
||||||
case Alias:
|
case Alias:
|
||||||
case BootProgram:
|
case BootProgram:
|
||||||
case IdlHeader:
|
case IdlHeader:
|
||||||
|
case MessageHeader:
|
||||||
case EmbeddedTypeLib:
|
case EmbeddedTypeLib:
|
||||||
case Cabinet:
|
case Cabinet:
|
||||||
return "";
|
return "";
|
||||||
|
@ -1261,6 +1267,7 @@ Module::IsDLL () const
|
||||||
case RpcProxy:
|
case RpcProxy:
|
||||||
case Alias:
|
case Alias:
|
||||||
case IdlHeader:
|
case IdlHeader:
|
||||||
|
case MessageHeader:
|
||||||
case EmbeddedTypeLib:
|
case EmbeddedTypeLib:
|
||||||
case ElfExecutable:
|
case ElfExecutable:
|
||||||
case Cabinet:
|
case Cabinet:
|
||||||
|
|
|
@ -305,7 +305,8 @@ enum ModuleType
|
||||||
HostStaticLibrary,
|
HostStaticLibrary,
|
||||||
TypeDontCare,
|
TypeDontCare,
|
||||||
Cabinet,
|
Cabinet,
|
||||||
KeyboardLayout
|
KeyboardLayout,
|
||||||
|
MessageHeader
|
||||||
};
|
};
|
||||||
|
|
||||||
enum HostType
|
enum HostType
|
||||||
|
|
Loading…
Reference in a new issue