* Run build tools after parsing build files * Generate roscfg.h Modified: branches/xmlbuildsystem/reactos/drivers/net/tcpip/tcpip/main.c Modified: branches/xmlbuildsystem/reactos/lib/kernel32/misc/dllmain.c Modified: branches/xmlbuildsystem/reactos/subsys/win32k/main/dllmain.c Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h 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/exception.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/exception.h Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/project.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h Property changes on: branches/xmlbuildsystem/reactos ___________________________________________________________________ Name: svn:ignore - dist reactos *.sys *.exe *.dll *.cpl *.a *.o *.d *.coff *.dsp *.dsw *.aps *.ncb *.opt *.sym *.plg *.bak *.zip *.iso *.cab doxy-doc + *.sys *.exe *.dll *.cpl *.a *.o *.d *.coff *.dsp *.dsw *.aps *.ncb *.opt *.sym *.plg *.bak *.zip *.iso *.cab doxy-doc _____
Modified: branches/xmlbuildsystem/reactos/drivers/net/tcpip/tcpip/main.c --- branches/xmlbuildsystem/reactos/drivers/net/tcpip/tcpip/main.c 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/drivers/net/tcpip/tcpip/main.c 2005-02-11 19:13:01 UTC (rev 13496) @@ -862,8 +862,6 @@
DueTime.QuadPart = -(LONGLONG)IP_TIMEOUT * 10000; KeSetTimerEx(&IPTimer, DueTime, IP_TIMEOUT, &IPTimeoutDpc);
- PREPARE_TESTS - return STATUS_SUCCESS; }
Property changes on: branches/xmlbuildsystem/reactos/lib/gdi32/misc ___________________________________________________________________ Name: svn:ignore - win32k.c *.o .*.d + *.o .*.d _____
Modified: branches/xmlbuildsystem/reactos/lib/kernel32/misc/dllmain.c --- branches/xmlbuildsystem/reactos/lib/kernel32/misc/dllmain.c 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/lib/kernel32/misc/dllmain.c 2005-02-11 19:13:01 UTC (rev 13496) @@ -176,8 +176,6 @@
break; }
- PREPARE_TESTS - return TRUE; }
Property changes on: branches/xmlbuildsystem/reactos/lib/ntdll ___________________________________________________________________ Name: svn:ignore - temp.exp napi.asm napi.c *.tmp *.lib *.sym *.coff *.dll *.o *.a *.map doxy-doc + temp.exp *.tmp *.lib *.sym *.coff *.dll *.o *.a *.map doxy-doc Property changes on: branches/xmlbuildsystem/reactos/lib/user32/misc ___________________________________________________________________ Name: svn:ignore - win32k.c *.d *.a *.o *.sym + *.d *.a *.o *.sym Property changes on: branches/xmlbuildsystem/reactos/ntoskrnl/nt ___________________________________________________________________ Name: svn:ignore - *.d *.o zw.c + *.d *.o Property changes on: branches/xmlbuildsystem/reactos/subsys/win32k/main ___________________________________________________________________ Name: svn:ignore - svctab.c *.d *.o *.sym + *.d *.o *.sym _____
Modified: branches/xmlbuildsystem/reactos/subsys/win32k/main/dllmain.c --- branches/xmlbuildsystem/reactos/subsys/win32k/main/dllmain.c 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/subsys/win32k/main/dllmain.c 2005-02-11 19:13:01 UTC (rev 13496) @@ -330,8 +330,6 @@
CreateStockObjects(); CreateSysColorObjects();
- PREPARE_TESTS - return STATUS_SUCCESS; }
_____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp 2005-02-11 19:13:01 UTC (rev 13496) @@ -30,6 +30,7 @@
GenerateHeader (); GenerateGlobalVariables (); GenerateAllTarget (); + GenerateInitTarget (); for ( size_t i = 0; i < ProjectNode.modules.size (); i++ ) { Module& module = *ProjectNode.modules[i]; @@ -167,6 +168,7 @@ fprintf ( fMakefile, "host_ar = ar\n" ); fprintf ( fMakefile, "host_objcopy = objcopy\n" ); #ifdef WIN32 + fprintf ( fMakefile, "nmkdir = mkdir\n" ); fprintf ( fMakefile, "rm = del /f /q\n" ); fprintf ( fMakefile, "gcc = gcc\n" ); fprintf ( fMakefile, "gpp = g++\n" ); @@ -176,6 +178,7 @@ fprintf ( fMakefile, "dlltool = dlltool\n" ); fprintf ( fMakefile, "windres = windres\n" ); #else + fprintf ( fMakefile, "nmkdir = mkdir -p\n" ); fprintf ( fMakefile, "rm = rm -f\n" ); fprintf ( fMakefile, "gcc = mingw32-gcc\n" ); fprintf ( fMakefile, "gpp = mingw32-g++\n" ); @@ -235,7 +238,54 @@ fprintf ( fMakefile, "\n\t\n\n" ); }
+string +MingwBackend::GetBuildToolDependencies () const +{ + string dependencies; + for ( size_t i = 0; i < ProjectNode.modules.size (); i++ ) + { + Module& module = *ProjectNode.modules[i]; + if ( module.type == BuildTool ) + { + if ( dependencies.length () > 0 ) + dependencies += " "; + dependencies += module.GetDependencyPath (); + } + } + return dependencies; +} + void +MingwBackend::GenerateInitTarget () const +{ + fprintf ( fMakefile, + "init:"); + fprintf ( fMakefile, + " $(ROS_INTERMEDIATE)." SSEP "tools" ); + fprintf ( fMakefile, + " %s", + GetBuildToolDependencies ().c_str () ); + fprintf ( fMakefile, + " %s", + "include" SSEP "reactos" SSEP "buildno.h" ); + fprintf ( fMakefile, + "\n\t\n\n" ); + + fprintf ( fMakefile, + "$(ROS_INTERMEDIATE)." SSEP "tools:\n" ); + fprintf ( fMakefile, + "ifneq ($(ROS_INTERMEDIATE),)\n" ); + fprintf ( fMakefile, + "\t${nmkdir} $(ROS_INTERMEDIATE)\n" ); + fprintf ( fMakefile, + "endif\n" ); + fprintf ( fMakefile, + "\t${nmkdir} $(ROS_INTERMEDIATE)." SSEP "tools\n" ); + fprintf ( fMakefile, + "\n" ); +} + +void MingwBackend::CheckAutomaticDependencies () { AutomaticDependency automaticDependency ( ProjectNode ); _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.h 2005-02-11 19:13:01 UTC (rev 13496) @@ -28,6 +28,8 @@
void GenerateGlobalVariables () const; bool IncludeInAllTarget ( const Module& module ) const; void GenerateAllTarget () const; + std::string GetBuildToolDependencies () const; + void GenerateInitTarget () const; void CheckAutomaticDependencies (); FILE* fMakefile; }; _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp 2005-02-11 19:13:01 UTC (rev 13496) @@ -257,6 +257,15 @@
return objectFilenames; }
+bool +MingwModuleHandler::IncludeDirectoryTarget ( const string& directory ) const +{ + if ( directory == "$(ROS_INTERMEDIATE)." SSEP "tools") + return false; + else + return true; +} + void MingwModuleHandler::GenerateDirectoryTargets () const { @@ -270,7 +279,12 @@ i != directory_set.end (); i++ ) { - fprintf ( fMakefile, " %s", i->c_str () ); + if ( IncludeDirectoryTarget ( *i ) ) + { + fprintf ( fMakefile, + " %s", + i->c_str () ); + } }
fprintf ( fMakefile, "\n\n" ); @@ -279,7 +293,12 @@ i != directory_set.end (); i++ ) { - fprintf ( fMakefile, "%s ", i->c_str () ); + if ( IncludeDirectoryTarget ( *i ) ) + { + fprintf ( fMakefile, + "%s ", + i->c_str () ); + } }
fprintf ( fMakefile, @@ -1069,40 +1088,6 @@ return dependencies; }
-string -MingwModuleHandler::GetInvocationParameters ( const Invoke& invoke ) const -{ - string parameters ( "" ); - size_t i; - for (i = 0; i < invoke.output.size (); i++) - { - if (parameters.length () > 0) - parameters += " "; - InvokeFile& invokeFile = *invoke.output[i]; - if (invokeFile.switches.length () > 0) - { - parameters += invokeFile.switches; - parameters += " "; - } - parameters += invokeFile.name; - } - - for (i = 0; i < invoke.input.size (); i++) - { - if (parameters.length () > 0) - parameters += " "; - InvokeFile& invokeFile = *invoke.input[i]; - if (invokeFile.switches.length () > 0) - { - parameters += invokeFile.switches; - parameters += " "; - } - parameters += invokeFile.name ; - } - - return parameters; -} - void MingwModuleHandler::GenerateInvocations ( const Module& module ) const { @@ -1134,7 +1119,7 @@ fprintf ( fMakefile, "\t%s %s\n\n", FixupTargetFilename ( invoke.invokeModule->GetPath () ).c_str (), - GetInvocationParameters ( invoke ).c_str () ); + invoke.GetParameters ().c_str () ); } }
@@ -1145,19 +1130,37 @@ module.name.c_str () ); }
+string +MingwModuleHandler::GetDefaultDependencies ( const Module& module ) const +{ + /* Avoid circular dependency */ + if ( module.type == BuildTool || module.name == "zlib" ) + return "$(ROS_INTERMEDIATE)." SSEP "tools $(ROS_INTERMEDIATE)." SSEP "lib" SSEP "zlib"; + else + return "init"; +} + void MingwModuleHandler::GeneratePreconditionDependencies ( const Module& module ) const { string preconditionDependenciesName = GetPreconditionDependenciesName ( module ); string sourceFilenames = GetSourceFilenamesWithoutGeneratedFiles ( module ); - string dependencies = GetModuleDependencies ( module ); - string s = GetInvocationDependencies ( module ); + string dependencies = GetDefaultDependencies ( module ); + string s = GetModuleDependencies ( module ); if ( s.length () > 0 ) { if ( dependencies.length () > 0 ) dependencies += " "; dependencies += s; } + + s = GetInvocationDependencies ( module ); + if ( s.length () > 0 ) + { + if ( dependencies.length () > 0 ) + dependencies += " "; + dependencies += s; + } fprintf ( fMakefile, ".PHONY: %s\n\n", @@ -1223,6 +1226,9 @@ MingwModuleHandler::GetDefinitionDependencies ( const Module& module ) const { string dependencies; + string dkNkmLibNoFixup = "dk/nkm/lib"; + dependencies += FixupTargetFilename ( dkNkmLibNoFixup ); + PassThruCacheDirectory ( dkNkmLibNoFixup + SSEP ); for ( size_t i = 0; i < module.files.size (); i++ ) { File& file = *module.files[i]; _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .h 2005-02-11 19:13:01 UTC (rev 13496) @@ -21,6 +21,7 @@
static MingwModuleHandler* LookupHandler ( const std::string& location, ModuleType moduletype_ ); virtual void Process ( const Module& module ) = 0; + bool IncludeDirectoryTarget ( const std::string& directory ) const; void GenerateDirectoryTargets () const; static std::string GetObjectFilename ( const std::string& sourceFilename ); protected: @@ -46,7 +47,6 @@ const std::string* cflags, const std::string* nasmflags ) const; std::string GetInvocationDependencies ( const Module& module ) const; - std::string GetInvocationParameters ( const Invoke& invoke ) const; void GenerateInvocations ( const Module& module ) const; std::string GetPreconditionDependenciesName ( const Module& module ) const; @@ -149,6 +149,7 @@ const std::string* clags, const std::string* nasmflags ) const; std::string GetSpecObjectDependencies ( const std::string& filename ) const; + std::string GetDefaultDependencies ( const Module& module ) const; };
_____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/exception.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/exception.cpp 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/tools/rbuild/exception.cpp 2005-02-11 19:13:01 UTC (rev 13496) @@ -33,6 +33,12 @@
}
+OutOfMemoryException::OutOfMemoryException () + : Exception ( "Out of memory" ) +{ +} + + InvalidOperationException::InvalidOperationException ( const char* filename, const int linenumber ) { @@ -147,6 +153,7 @@ { }
+ UnknownModuleTypeException::UnknownModuleTypeException ( const string& location, int moduletype ) : InvalidBuildFileException ( location, @@ -154,3 +161,14 @@ moduletype ) { } + + +InvocationFailedException::InvocationFailedException ( const std::string& command, + int exitcode ) + : Exception ( "Failed to execute '%s' (exit code %d)", + command.c_str (), + exitcode ) +{ + Command = command; + ExitCode = exitcode; +} _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/exception.h --- branches/xmlbuildsystem/reactos/tools/rbuild/exception.h 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/tools/rbuild/exception.h 2005-02-11 19:13:01 UTC (rev 13496) @@ -29,6 +29,13 @@
};
+class OutOfMemoryException : public Exception +{ +public: + OutOfMemoryException (); +}; + + class FileNotFoundException : public Exception { public: @@ -105,4 +112,14 @@ int moduletype ); };
+ +class InvocationFailedException : public Exception +{ +public: + InvocationFailedException ( const std::string& command, + int exitcode ); + std::string Command; + int ExitCode; +}; + #endif /* __EXCEPTION_H */ _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp 2005-02-11 19:13:01 UTC (rev 13496) @@ -451,7 +451,22 @@
return false; }
+void +Module::InvokeModule () const +{ + for ( size_t i = 0; i < invocations.size (); i++ ) + { + Invoke& invoke = *invocations[i]; + string command = invoke.invokeModule->GetPath () + " " + invoke.GetParameters (); + printf ( "Executing '%s'\n\n", command.c_str () ); + int exitcode = system ( command.c_str () ); + if ( exitcode != 0 ) + throw InvocationFailedException ( command, + exitcode ); + } +}
+ File::File ( const string& _name, bool _first ) : name(_name), first(_first) { @@ -581,7 +596,41 @@ return targets; }
+string +Invoke::GetParameters () const +{ + string parameters ( "" ); + size_t i; + for ( i = 0; i < output.size (); i++ ) + { + if ( parameters.length () > 0) + parameters += " "; + InvokeFile& invokeFile = *output[i]; + if ( invokeFile.switches.length () > 0 ) + { + parameters += invokeFile.switches; + parameters += " "; + } + parameters += invokeFile.name; + }
+ for ( i = 0; i < input.size (); i++ ) + { + if ( parameters.length () > 0 ) + parameters += " "; + InvokeFile& invokeFile = *input[i]; + if ( invokeFile.switches.length () > 0 ) + { + parameters += invokeFile.switches; + parameters += " "; + } + parameters += invokeFile.name ; + } + + return parameters; +} + + InvokeFile::InvokeFile ( const XMLElement& _node, const string& _name ) : node (_node), _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/project.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/project.cpp 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/tools/rbuild/project.cpp 2005-02-11 19:13:01 UTC (rev 13496) @@ -7,15 +7,10 @@
using std::string; using std::vector;
-/*Project::Project() - : node(NULL), head(NULL) -{ -}*/ - Project::Project ( const string& filename ) - : xmlfile(filename), - node(NULL), - head(NULL) + : xmlfile (filename), + node (NULL), + head (NULL) { ReadXml(); } @@ -25,26 +20,170 @@ size_t i; for ( i = 0; i < modules.size (); i++ ) delete modules[i]; - for ( i = 0; i < includes.size(); i++ ) + for ( i = 0; i < includes.size (); i++ ) delete includes[i]; - for ( i = 0; i < defines.size(); i++ ) + for ( i = 0; i < defines.size (); i++ ) delete defines[i]; - for ( i = 0; i < linkerFlags.size(); i++ ) + for ( i = 0; i < linkerFlags.size (); i++ ) delete linkerFlags[i]; - for ( i = 0; i < properties.size(); i++ ) + for ( i = 0; i < properties.size (); i++ ) delete properties[i]; - for ( i = 0; i < ifs.size(); i++ ) + for ( i = 0; i < ifs.size (); i++ ) delete ifs[i]; delete head; }
+const Property* +Project::LookupProperty ( const string& name ) const +{ + for ( size_t i = 0; i < properties.size (); i++ ) + { + const Property* property = properties[i]; + if ( property->name == name ) + return property; + } + return NULL; +} + void -Project::ReadXml() +Project::WriteIfChanged ( char* outbuf, + string filename ) { + FILE* out; + unsigned int end; + char* cmpbuf; + unsigned int stat; + + out = fopen ( filename.c_str (), "rb" ); + if ( out == NULL ) + { + out = fopen ( filename.c_str (), "wb" ); + if ( out == NULL ) + throw AccessDeniedException ( filename ); + fputs ( outbuf, out ); + fclose ( out ); + return; + } + + fseek ( out, 0, SEEK_END ); + end = ftell ( out ); + cmpbuf = (char*) malloc ( end ); + if ( cmpbuf == NULL ) + { + fclose ( out ); + throw OutOfMemoryException (); + } + + fseek ( out, 0, SEEK_SET ); + stat = fread ( cmpbuf, 1, end, out ); + if ( stat != end ) + { + free ( cmpbuf ); + fclose ( out ); + throw AccessDeniedException ( filename ); + } + if ( end == strlen ( outbuf ) && memcmp ( cmpbuf, outbuf, end ) == 0 ) + { + free ( cmpbuf ); + fclose ( out ); + return; + } + + free ( cmpbuf ); + fclose ( out ); + out = fopen ( filename.c_str (), "wb" ); + if ( out == NULL ) + { + throw AccessDeniedException ( filename ); + } + + stat = fwrite ( outbuf, 1, strlen ( outbuf ), out); + if ( strlen ( outbuf ) != stat ) + { + fclose ( out ); + throw AccessDeniedException ( filename ); + } + + fclose ( out ); +} + +void +Project::SetConfigurationOption ( char* s, + string name, + string* alternativeName ) +{ + const Property* property = LookupProperty ( name ); + if ( property != NULL && property->value.length () > 0 ) + { + s = s + sprintf ( s, + "#define %s=%s\n", + property->name.c_str (), + property->value.c_str () ); + } + else if ( property != NULL ) + { + s = s + sprintf ( s, + "#define %s\n", + property->name.c_str () ); + } + else if ( alternativeName != NULL ) + { + s = s + sprintf ( s, + "#define %s\n", + alternativeName->c_str () ); + } +} + +void +Project::SetConfigurationOption ( char* s, + string name ) +{ + SetConfigurationOption ( s, name, NULL ); +} + +void +Project::WriteConfigurationFile () +{ + char* buf; + char* s; + + buf = (char*) malloc ( 10*1024 ); + if ( buf == NULL ) + throw OutOfMemoryException (); + + s = buf; + s = s + sprintf ( s, "/* Automatically generated. " ); + s = s + sprintf ( s, "Edit config.xml to change configuration */\n" ); + s = s + sprintf ( s, "#ifndef __INCLUDE_CONFIG_H\n" ); + s = s + sprintf ( s, "#define __INCLUDE_CONFIG_H\n" ); + + SetConfigurationOption ( s, "ARCH" ); + SetConfigurationOption ( s, "OPTIMIZED" ); + SetConfigurationOption ( s, "MP", new string ( "UP" ) ); + SetConfigurationOption ( s, "ACPI" ); + SetConfigurationOption ( s, "_3GB" ); + + s = s + sprintf ( s, "#endif /* __INCLUDE_CONFIG_H */\n" ); + + WriteIfChanged ( buf, "include" SSEP "roscfg.h" ); + + free ( buf ); +} + +void +Project::ExecuteInvocations () +{ + for ( size_t i = 0; i < modules.size (); i++ ) + modules[i]->InvokeModule (); +} + +void +Project::ReadXml () +{ Path path; head = XMLLoadFile ( xmlfile, path ); node = NULL; - for ( size_t i = 0; i < head->subElements.size(); i++ ) + for ( size_t i = 0; i < head->subElements.size (); i++ ) { if ( head->subElements[i]->name == "project" ) { @@ -189,7 +328,7 @@ { for ( size_t i = 0; i < modules.size (); i++ ) { - if (modules[i]->name == name) + if ( modules[i]->name == name ) return modules[i]; }
_____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.cpp 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.cpp 2005-02-11 19:13:01 UTC (rev 13496) @@ -30,6 +30,8 @@
{ string projectFilename ( "ReactOS.xml" ); Project project ( projectFilename ); + project.WriteConfigurationFile (); + project.ExecuteInvocations (); Backend* backend = Backend::Factory::Create ( buildtarget, project ); backend->Process (); _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h --- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h 2005-02-11 17:04:30 UTC (rev 13495) +++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h 2005-02-11 19:13:01 UTC (rev 13496) @@ -13,6 +13,7 @@
#include <sys/utime.h> #else #include <utime.h> +#include <process.h> #endif
#include "ssprintf.h" @@ -67,10 +68,20 @@
Project ( const std::string& filename ); ~Project (); + void WriteConfigurationFile (); + void ExecuteInvocations (); void ProcessXML ( const std::string& path ); Module* LocateModule ( const std::string& name ); const Module* LocateModule ( const std::string& name ) const; private: + const Property* LookupProperty ( const std::string& name ) const; + void SetConfigurationOption ( char* s, + std::string name, + std::string* alternativeName ); + void SetConfigurationOption ( char* s, + std::string name ); + void WriteIfChanged ( char* outbuf, + std::string filename ); void ReadXml (); void ProcessXMLSubElement ( const XMLElement& e, const std::string& path, @@ -139,7 +150,8 @@ std::string GetInvocationTarget ( const int index ) const; bool HasFileWithExtensions ( const std::string& extension1, const std::string& extension2 ) const; - void ProcessXML(); + void InvokeModule () const; + void ProcessXML (); private: std::string GetDefaultModuleExtension () const; std::string GetDefaultModuleEntrypoint () const; @@ -232,6 +244,7 @@
void ProcessXML(); std::string GetTargets () const; + std::string GetParameters () const; private: void ProcessXMLSubElement ( const XMLElement& e ); void ProcessXMLSubElementInput ( const XMLElement& e );