host vs target refactoring, <module> has two new attributes 'host' and 'prefix' ( this should fix sedwards' host.zlib.a issue, and also forgot to commit change to buildno's makefile in support of new macros in top-level makefile ( which should fix build bug arty experiencing re buildno.h ) Modified: branches/xmlbuildsystem/reactos/lib/zlib/zlib.xml Added: branches/xmlbuildsystem/reactos/lib/zlib/zlib_common.xml Modified: branches/xmlbuildsystem/reactos/tools/buildno/makefile Modified: branches/xmlbuildsystem/reactos/tools/cabman/cabman.xml Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h _____
Modified: branches/xmlbuildsystem/reactos/lib/zlib/zlib.xml --- branches/xmlbuildsystem/reactos/lib/zlib/zlib.xml 2005-03-11 07:41:19 UTC (rev 13923) +++ branches/xmlbuildsystem/reactos/lib/zlib/zlib.xml 2005-03-11 07:46:22 UTC (rev 13924) @@ -1,17 +1,7 @@
<module name="zlib" type="staticlibrary"> - <include base="zlib">.</include> - <file>adler32.c</file> - <file>compress.c</file> - <file>crc32.c</file> - <file>gzio.c</file> - <file>uncompr.c</file> - <file>deflate.c</file> - <file>trees.c</file> - <file>zutil.c</file> - <file>inflate.c</file> - <file>infblock.c</file> - <file>inftrees.c</file> - <file>infcodes.c</file> - <file>infutil.c</file> - <file>inffast.c</file> + <xi:include href="zlib_common.xml" /> </module> + +<module name="hostzlib" type="staticlibrary" host="true" prefix="host_"> + <xi:include href="zlib_common.xml" /> +</module> _____
Added: branches/xmlbuildsystem/reactos/lib/zlib/zlib_common.xml --- branches/xmlbuildsystem/reactos/lib/zlib/zlib_common.xml 2005-03-11 07:41:19 UTC (rev 13923) +++ branches/xmlbuildsystem/reactos/lib/zlib/zlib_common.xml 2005-03-11 07:46:22 UTC (rev 13924) @@ -0,0 +1,16 @@
+<include base="zlib">.</include> + +<file>adler32.c</file> +<file>compress.c</file> +<file>crc32.c</file> +<file>gzio.c</file> +<file>uncompr.c</file> +<file>deflate.c</file> +<file>trees.c</file> +<file>zutil.c</file> +<file>inflate.c</file> +<file>infblock.c</file> +<file>inftrees.c</file> +<file>infcodes.c</file> +<file>infutil.c</file> +<file>inffast.c</file> _____
Modified: branches/xmlbuildsystem/reactos/tools/buildno/makefile --- branches/xmlbuildsystem/reactos/tools/buildno/makefile 2005-03-11 07:41:19 UTC (rev 13923) +++ branches/xmlbuildsystem/reactos/tools/buildno/makefile 2005-03-11 07:46:22 UTC (rev 13924) @@ -28,7 +28,8 @@
buildno_clean: -@$(rm) $(BUILDNO_TARGET) $(BUILDNO_OBJECTS) 2>$(NUL)
-BUILDNO_H = include$(SEP)reactos$(SEP)buildno.h +# BUILDNO_H is defined from the top-level makefile now... +#BUILDNO_H = .$(SEP)include$(SEP)reactos$(SEP)buildno.h
$(BUILDNO_H): $(BUILDNO_TARGET) $(EXEPREFIX)$(BUILDNO_TARGET) $(BUILDNO_H) _____
Modified: branches/xmlbuildsystem/reactos/tools/cabman/cabman.xml --- branches/xmlbuildsystem/reactos/tools/cabman/cabman.xml 2005-03-11 07:41:19 UTC (rev 13923) +++ branches/xmlbuildsystem/reactos/tools/cabman/cabman.xml 2005-03-11 07:46:22 UTC (rev 13924) @@ -1,10 +1,10 @@
<module name="cabman" type="buildtool"> <include base="cabman">.</include> <include base="zlib">.</include> - <library>zlib</library> + <library>hostzlib</library> <file>cabinet.cxx</file> <file>dfp.cxx</file> <file>main.cxx</file> <file>mszip.cxx</file> <file>raw.cxx</file> -</module> +</module> \ No newline at end of file _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp 2005-03-11 07:41:19 UTC (rev 13923) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp 2005-03-11 07:46:22 UTC (rev 13924) @@ -312,6 +312,11 @@
module.node.location, module.type ); MingwModuleHandler::string_list clean_files; + if ( module.host == HostDefault ) + { + module.host = h->DefaultHost(); + assert ( module.host != HostDefault ); + } h->Process ( module, clean_files ); h->GenerateCleanTarget ( module, clean_files ); h->GenerateDirectoryTargets (); _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp 2005-03-11 07:41:19 UTC (rev 13923) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp 2005-03-11 07:46:22 UTC (rev 13924) @@ -31,15 +31,41 @@
const string& newExtension ) { size_t index = filename.find_last_of ( '/' ); - if (index == string::npos) index = 0; - string tmp = filename.substr( index, filename.size() - index ); + if ( index == string::npos ) + index = 0; + size_t index2 = filename.find_last_of ( '\' ); + if ( index2 != string::npos && index2 > index ) + index = index2; + string tmp = filename.substr( index /*, filename.size() - index*/ ); size_t ext_index = tmp.find_last_of( '.' ); - if (ext_index != string::npos) + if ( ext_index != string::npos ) return filename.substr ( 0, index + ext_index ) + newExtension; return filename + newExtension; }
+string +PrefixFilename ( + const string& filename, + const string& prefix ) +{ + if ( !prefix.length() ) + return filename; + string out; + const char* pfilename = filename.c_str(); + const char* p1 = strrchr ( pfilename, '/' ); + const char* p2 = strrchr ( pfilename, '\' ); + if ( p1 || p2 ) + { + if ( p2 > p1 ) + p1 = p2; + out += string(pfilename,p1-pfilename) + CSEP; + pfilename = p1 + 1; + } + out += prefix + pfilename; + return out; +}
+ MingwModuleHandler::MingwModuleHandler ( ModuleType moduletype ) { if ( !ref++ ) @@ -167,22 +193,9 @@ return dependencies; }
-/*string -MingwModuleHandler::GetAllDependencies ( const Module& module ) const -{ - string dependencies = GetImportMacro ( module ); - string s = GetModuleDependencies ( module ); - if ( s.length () > 0 ) - { - dependencies += " "; - dependencies += s; - } - return dependencies; -}*/ - string MingwModuleHandler::GetSourceFilenames ( const Module& module, - bool includeGeneratedFiles ) const + bool includeGeneratedFiles ) const { size_t i;
@@ -229,8 +242,8 @@ false ); }
-string -MingwModuleHandler::GetObjectFilename ( const string& sourceFilename ) +static string +GetObjectFilename ( const Module& module, const string& sourceFilename ) { string newExtension; string extension = GetExtension ( sourceFilename ); @@ -240,7 +253,10 @@ newExtension = ".stubs.o"; else newExtension = ".o"; - return FixupTargetFilename ( ReplaceExtension ( sourceFilename, newExtension ) ); + return FixupTargetFilename ( + ReplaceExtension ( + PrefixFilename(sourceFilename,module.prefix), + newExtension ) ); }
void @@ -274,7 +290,8 @@ { if ( objectFilenames.size () > 0 ) objectFilenames += " "; - objectFilenames += PassThruCacheDirectory ( MingwModuleHandler::GetObjectFilename ( files[i]->name ) ); + objectFilenames += PassThruCacheDirectory ( + GetObjectFilename ( module, files[i]->name ) ); } return objectFilenames; } @@ -514,6 +531,7 @@
void MingwModuleHandler::GenerateMacros ( + const Module& module, const char* assignmentOperation, const IfableData& data, const vector<CompilerFlag*>* compilerFlags, @@ -580,7 +598,7 @@ "%s := %s $(%s)\n", objs_macro.c_str(), PassThruCacheDirectory ( - MingwModuleHandler::GetObjectFilename ( file.name ) ).c_str (), + GetObjectFilename ( module, file.name ) ).c_str (), objs_macro.c_str() ); } } @@ -599,7 +617,7 @@ "%s%s", ( i%10 == 9 ? "\\n\t" : " " ), PassThruCacheDirectory ( - MingwModuleHandler::GetObjectFilename ( file.name ) ).c_str () ); + GetObjectFilename ( module, file.name ) ).c_str () ); } } fprintf ( fMakefile, "\n" ); @@ -621,6 +639,7 @@ rIf.property.c_str(), rIf.value.c_str() ); GenerateMacros ( + module, "+=", rIf.data, NULL, @@ -651,6 +670,7 @@ const string& linkdeps_macro ) const { GenerateMacros ( + module, "=", module.non_if_data, &module.compilerFlags, @@ -721,7 +741,8 @@ string deps = sourceFilename; if ( module.pch && use_pch ) deps += " " + module.pch->header + ".gch"; - string objectFilename = PassThruCacheDirectory ( MingwModuleHandler::GetObjectFilename ( sourceFilename ) ); + string objectFilename = PassThruCacheDirectory ( + GetObjectFilename ( module, sourceFilename ) ); fprintf ( fMakefile, "%s: %s\n", objectFilename.c_str (), @@ -741,7 +762,8 @@ const string& cc, const string& cflagsMacro ) const { - string objectFilename = PassThruCacheDirectory ( MingwModuleHandler::GetObjectFilename ( sourceFilename ) ); + string objectFilename = PassThruCacheDirectory ( + GetObjectFilename ( module, sourceFilename ) ); fprintf ( fMakefile, "%s: %s\n", objectFilename.c_str (), @@ -760,7 +782,8 @@ const string& sourceFilename, const string& nasmflagsMacro ) const { - string objectFilename = PassThruCacheDirectory ( MingwModuleHandler::GetObjectFilename ( sourceFilename ) ); + string objectFilename = PassThruCacheDirectory ( + GetObjectFilename ( module, sourceFilename ) ); fprintf ( fMakefile, "%s: %s\n", objectFilename.c_str (), @@ -779,7 +802,8 @@ const string& sourceFilename, const string& windresflagsMacro ) const { - string objectFilename = PassThruCacheDirectory ( MingwModuleHandler::GetObjectFilename ( sourceFilename ) ); + string objectFilename = PassThruCacheDirectory ( + GetObjectFilename ( module, sourceFilename ) ); string rciFilename = ReplaceExtension ( sourceFilename, ".rci" ); string resFilename = ReplaceExtension ( sourceFilename, @@ -859,7 +883,7 @@ const string& windresflagsMacro, string_list& clean_files ) const { - CLEAN_FILE ( GetObjectFilename(sourceFilename) ); + CLEAN_FILE ( GetObjectFilename(module,sourceFilename) ); string extension = GetExtension ( sourceFilename ); if ( extension == ".c" || extension == ".C" ) { @@ -1090,22 +1114,6 @@ fprintf ( fMakefile, "\n" ); }
-void -MingwModuleHandler::GetCleanTargets ( - string_list& out, - const IfableData& data ) const -{ - size_t i; - - const vector<File*>& files = data.files; - for ( i = 0; i < files.size(); i++ ) - out.push_back ( PassThruCacheDirectory ( MingwModuleHandler::GetObjectFilename ( files[i]->name ) ) ); - - const vector<If*>& ifs = data.ifs; - for ( i = 0; i < ifs.size(); i++ ) - GetCleanTargets ( out, ifs[i]->data ); -} - string MingwModuleHandler::GenerateArchiveTarget ( const Module& module, const string& ar, @@ -1165,13 +1173,14 @@ void MingwModuleHandler::GenerateMacrosAndTargets ( const Module& module, - const string& cc, - const string& cppc, - const string& ar, const string* cflags, const string* nasmflags, string_list& clean_files ) const { + string cc = ( module.host ? "${host_gcc}" : "${gcc}" ); + string cppc = ( module.host ? "${host_gpp}" : "${gpp}" ); + string ar = ( module.host ? "${host_ar}" : "${ar}" ); + string cflagsMacro = ssprintf ("%s_CFLAGS", module.name.c_str ()); string nasmflagsMacro = ssprintf ("%s_NASMFLAGS", module.name.c_str ()); string windresflagsMacro = ssprintf ("%s_RCFLAGS", module.name.c_str ()); @@ -1234,50 +1243,6 @@ } }
-void -MingwModuleHandler::GenerateMacrosAndTargetsHost ( - const Module& module, - string_list& clean_files ) const -{ - GenerateMacrosAndTargets ( - module, - "${host_gcc}", - "${host_gpp}", - "${host_ar}", - NULL, - NULL, - clean_files ); -} - -void -MingwModuleHandler::GenerateMacrosAndTargetsTarget ( - const Module& module, - string_list& clean_files ) const -{ - GenerateMacrosAndTargetsTarget ( - module, - NULL, - NULL, - clean_files ); -} - -void -MingwModuleHandler::GenerateMacrosAndTargetsTarget ( - const Module& module, - const string* cflags, - const string* nasmflags, - string_list& clean_files ) const -{ - GenerateMacrosAndTargets ( - module, - "${gcc}", - "${gpp}", - "${ar}", - cflags, - nasmflags, - clean_files ); -} - string MingwModuleHandler::GetInvocationDependencies ( const Module& module ) const { @@ -1489,7 +1454,11 @@ string linkDepsMacro = GetLinkingDependenciesMacro ( module ); string libsMacro = GetLibsMacro ( module );
- GenerateMacrosAndTargetsHost ( module, clean_files ); + GenerateMacrosAndTargets ( + module, + NULL, + NULL, + clean_files );
string linker; if ( IsCPlusPlusModule ( module ) ) @@ -1548,7 +1517,7 @@ module.entrypoint.c_str (), module.baseaddress.c_str () );
- GenerateMacrosAndTargetsTarget ( module, clean_files ); + GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
GenerateImportLibraryTargetIfNeeded ( module, clean_files );
@@ -1615,7 +1584,7 @@ void MingwStaticLibraryModuleHandler::GenerateStaticLibraryModuleTarget ( const Module& module, string_list& clean_files ) { - GenerateMacrosAndTargetsTarget ( module, clean_files ); + GenerateMacrosAndTargets ( module, NULL, NULL, clean_files ); }
@@ -1637,7 +1606,7 @@ void MingwObjectLibraryModuleHandler::GenerateObjectLibraryModuleTarget ( const Module& module, string_list& clean_files ) { - GenerateMacrosAndTargetsTarget ( module, clean_files ); + GenerateMacrosAndTargets ( module, NULL, NULL, clean_files ); }
@@ -1672,7 +1641,7 @@
if ( module.non_if_data.files.size () > 0 ) { - GenerateMacrosAndTargetsTarget ( module, clean_files ); + GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
fprintf ( fMakefile, "%s: %s %s\n", target.c_str (), @@ -1732,10 +1701,10 @@ if ( module.non_if_data.files.size () > 0 ) { string cflags ( "-D__NTDRIVER__" ); - GenerateMacrosAndTargetsTarget ( module, - &cflags, - NULL, - clean_files); + GenerateMacrosAndTargets ( module, + &cflags, + NULL, + clean_files );
fprintf ( fMakefile, "%s: %s %s\n", target.c_str (), @@ -1791,7 +1760,7 @@
if ( module.non_if_data.files.size () > 0 ) { - GenerateMacrosAndTargetsTarget ( module, clean_files ); + GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
fprintf ( fMakefile, "%s: %s %s\n", target.c_str (), @@ -1848,10 +1817,10 @@ if ( module.non_if_data.files.size () > 0 ) { string cflags ( "-D__NTAPP__" ); - GenerateMacrosAndTargetsTarget ( module, - &cflags, - NULL, - clean_files ); + GenerateMacrosAndTargets ( module, + &cflags, + NULL, + clean_files );
fprintf ( fMakefile, "%s: %s %s\n", target.c_str (), @@ -1931,7 +1900,7 @@
if ( module.non_if_data.files.size () > 0 ) { - GenerateMacrosAndTargetsTarget ( module, clean_files ); + GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
fprintf ( fMakefile, "%s: %s %s\n", target.c_str (), @@ -1939,7 +1908,7 @@ linkDepsMacro.c_str () );
string linker; - if ( IsCPlusPlusModule ( module ) ) + if ( module.cplusplus ) linker = "${gpp}"; else linker = "${gcc}"; @@ -1993,7 +1962,7 @@
if ( module.non_if_data.files.size () > 0 ) { - GenerateMacrosAndTargetsTarget ( module, clean_files ); + GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
fprintf ( fMakefile, "%s: %s %s\n", target.c_str (), @@ -2001,7 +1970,7 @@ linkDepsMacro.c_str () );
string linker; - if ( IsCPlusPlusModule ( module ) ) + if ( module.cplusplus ) linker = "${gpp}"; else linker = "${gcc}"; @@ -2055,7 +2024,7 @@
if ( module.non_if_data.files.size () > 0 ) { - GenerateMacrosAndTargetsTarget ( module, clean_files ); + GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
fprintf ( fMakefile, "%s: %s %s\n", target.c_str (), @@ -2063,7 +2032,7 @@ linkDepsMacro.c_str () );
string linker; - if ( IsCPlusPlusModule ( module ) ) + if ( module.cplusplus ) linker = "${gpp}"; else linker = "${gcc}"; @@ -2118,7 +2087,7 @@ string linkDepsMacro = GetLinkingDependenciesMacro ( module ); string libsMacro = GetLibsMacro ( module );
- GenerateMacrosAndTargetsTarget ( module, clean_files ); + GenerateMacrosAndTargets ( module, NULL, NULL, clean_files );
fprintf ( fMakefile, "%s: %s %s\n", target.c_str (), @@ -2164,10 +2133,10 @@ string objectsMacro = GetObjectsMacro ( module );
string* nasmflags = new string ( "-f bin" ); - GenerateMacrosAndTargetsTarget ( module, - NULL, - nasmflags, - clean_files ); + GenerateMacrosAndTargets ( module, + NULL, + nasmflags, + clean_files );
fprintf ( fMakefile, ".PHONY: %s\n\n", module.name.c_str ()); _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h 2005-03-11 07:41:19 UTC (rev 13923) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h 2005-03-11 07:46:22 UTC (rev 13924) @@ -7,6 +7,10 @@
ReplaceExtension ( const std::string& filename, const std::string& newExtension );
+extern std::string +PrefixFilename ( + const std::string& filename, + const std::string& prefix );
class MingwModuleHandler { @@ -23,10 +27,10 @@ static void SetUsePch ( bool use_pch ); static MingwModuleHandler* LookupHandler ( const std::string& location, ModuleType moduletype_ ); + virtual HostType DefaultHost() = 0; virtual void Process ( const Module& module, string_list& clean_files ) = 0; bool IncludeDirectoryTarget ( const std::string& directory ) const; void GenerateDirectoryTargets () const; - static std::string GetObjectFilename ( const std::string& sourceFilename ); void GenerateCleanTarget ( const Module& module, const string_list& clean_files ) const; protected: @@ -45,14 +49,6 @@ std::string GetSourceFilenamesWithoutGeneratedFiles ( const Module& module ) const;
std::string GetObjectFilenames ( const Module& module ) const; - void GenerateMacrosAndTargetsHost ( const Module& module, - string_list& clean_files ) const; - void GenerateMacrosAndTargetsTarget ( const Module& module, - string_list& clean_files ) const; - void GenerateMacrosAndTargetsTarget ( const Module& module, - const std::string* cflags, - const std::string* nasmflags, - string_list& clean_files ) const; std::string GetInvocationDependencies ( const Module& module ) const; void GenerateInvocations ( const Module& module ) const; @@ -69,6 +65,10 @@ const std::string& objectsMacro, const std::string& libsMacro, string_list& clean_files ) const; + void GenerateMacrosAndTargets ( const Module& module, + const std::string* clags, + const std::string* nasmflags, + string_list& clean_files ) const; void GenerateImportLibraryTargetIfNeeded ( const Module& module, string_list& clean_files ) const; std::string GetDefinitionDependencies ( const Module& module ) const; std::string GetLinkingDependencies ( const Module& module ) const; @@ -90,7 +90,9 @@ const std::string& macro, const IfableData& data, const std::vector<CompilerFlag*>* compilerFlags ) const; - void GenerateMacros ( const char* op, + void GenerateMacros ( + const Module& module, + const char* op, const IfableData& data, const std::vector<CompilerFlag*>* compilerFlags, const std::vector<LinkerFlag*>* linkerFlags, @@ -152,18 +154,9 @@ const std::string& nasmflagsMacro, const std::string& windresflagsMacro, string_list& clean_files ) const; - void GetCleanTargets ( string_list& out, - const IfableData& data ) const; std::string GenerateArchiveTarget ( const Module& module, const std::string& ar, const std::string& objs_macro ) const; - void GenerateMacrosAndTargets ( const Module& module, - const std::string& cc, - const std::string& cppc, - const std::string& ar, - const std::string* clags, - const std::string* nasmflags, - string_list& clean_files ) const; std::string GetSpecObjectDependencies ( const std::string& filename ) const; std::string GetDefaultDependencies ( const Module& module ) const; }; @@ -173,6 +166,7 @@ { public: MingwBuildToolModuleHandler (); + virtual HostType DefaultHost() { return HostTrue; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateBuildToolModuleTarget ( const Module& module, string_list& clean_files ); @@ -183,6 +177,7 @@ { public: MingwKernelModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateKernelModuleTarget ( const Module& module, string_list& clean_files ); @@ -193,6 +188,7 @@ { public: MingwStaticLibraryModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateStaticLibraryModuleTarget ( const Module& module, string_list& clean_files ); @@ -203,6 +199,7 @@ { public: MingwObjectLibraryModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateObjectLibraryModuleTarget ( const Module& module, string_list& clean_files ); @@ -213,6 +210,7 @@ { public: MingwKernelModeDLLModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateKernelModeDLLModuleTarget ( const Module& module, string_list& clean_files ); @@ -223,6 +221,7 @@ { public: MingwKernelModeDriverModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateKernelModeDriverModuleTarget ( const Module& module, string_list& clean_files ); @@ -233,6 +232,7 @@ { public: MingwNativeDLLModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateNativeDLLModuleTarget ( const Module& module, string_list& clean_files ); @@ -243,6 +243,7 @@ { public: MingwNativeCUIModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateNativeCUIModuleTarget ( const Module& module, string_list& clean_files ); @@ -253,6 +254,7 @@ { public: MingwWin32DLLModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateExtractWineDLLResourcesTarget ( const Module& module, string_list& clean_files ); @@ -264,6 +266,7 @@ { public: MingwWin32CUIModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateWin32CUIModuleTarget ( const Module& module, string_list& clean_files ); @@ -274,6 +277,7 @@ { public: MingwWin32GUIModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateWin32GUIModuleTarget ( const Module& module, string_list& clean_files ); @@ -284,6 +288,7 @@ { public: MingwBootLoaderModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateBootLoaderModuleTarget ( const Module& module, string_list& clean_files ); @@ -294,6 +299,7 @@ { public: MingwBootSectorModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateBootSectorModuleTarget ( const Module& module, string_list& clean_files ); @@ -304,6 +310,7 @@ { public: MingwIsoModuleHandler (); + virtual HostType DefaultHost() { return HostFalse; } virtual void Process ( const Module& module, string_list& clean_files ); private: void GenerateIsoModuleTarget ( const Module& module, string_list& clean_files ); _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp 2005-03-11 07:41:19 UTC (rev 13923) +++ branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp 2005-03-11 07:46:22 UTC (rev 13924) @@ -92,7 +92,8 @@
importLibrary (NULL), bootstrap (NULL), pch (NULL), - cplusplus (false) + cplusplus (false), + host (HostDefault) { if ( node.name != "module" ) throw Exception ( "internal tool error: Module created with non-<module> node" ); @@ -127,9 +128,43 @@
att = moduleNode.GetAttribute ( "mangledsymbols", false ); if ( att != NULL ) - mangledSymbols = att->value != "false"; + { + const char* p = att->value.c_str(); + if ( !stricmp ( p, "true" ) || !stricmp ( p, "yes" ) ) + mangledSymbols = true; + else if ( !stricmp ( p, "false" ) || !stricmp ( p, "no" ) ) + mangledSymbols = false; + else + { + throw InvalidAttributeValueException ( + moduleNode.location, + "mangledsymbols", + att->value ); + } + } else mangledSymbols = false; + + att = moduleNode.GetAttribute ( "host", false ); + if ( att != NULL ) + { + const char* p = att->value.c_str(); + if ( !stricmp ( p, "true" ) || !stricmp ( p, "yes" ) ) + host = HostTrue; + else if ( !stricmp ( p, "false" ) || !stricmp ( p, "no" ) ) + host = HostFalse; + else + { + throw InvalidAttributeValueException ( + moduleNode.location, + "host", + att->value ); + } + } + + att = moduleNode.GetAttribute ( "prefix", false ); + if ( att != NULL ) + prefix = att->value; }
Module::~Module () _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h --- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h 2005-03-11 07:41:19 UTC (rev 13923) +++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h 2005-03-11 07:46:22 UTC (rev 13924) @@ -131,6 +131,12 @@
Iso };
+enum HostType +{ + HostDefault, + HostTrue, + HostFalse +};
class Module { @@ -153,6 +159,8 @@ std::vector<LinkerFlag*> linkerFlags; PchFile* pch; bool cplusplus; + std::string prefix; + HostType host;
Module ( const Project& project, const XMLElement& moduleNode,