make_msvcX_install_[config] patch by Brezenbak
[reactos.git] / reactos / tools / rbuild / rbuild.h
index e45b206..f6b9df7 100644 (file)
 #endif/*WIN32*/
 #endif/*_MSC_VER*/
 
+#include <infhost.h>
+
 #include "ssprintf.h"
 #include "exception.h"
 #include "xml.h"
-#include <infhost.h>
+
+class Backend; // forward declaration
 
 typedef std::vector<std::string> string_list;
 
@@ -138,8 +141,10 @@ public:
        bool CompilationUnitsEnabled;
        std::string CheckDependenciesForModuleOnlyModule;
        std::string VSProjectVersion;
+       std::string VSConfigurationType;
        bool MakeHandlesInstallDirectories;
        bool GenerateProxyMakefilesInSourceTree;
+       bool InstallFiles;
 };
 
 class Environment
@@ -180,33 +185,39 @@ public:
        std::vector<Define*> defines;
        std::vector<Library*> libraries;
        std::vector<Property*> properties;
+       std::vector<Module*> modules;
        std::vector<CompilerFlag*> compilerFlags;
        std::vector<If*> ifs;
 
        ~IfableData();
        void ProcessXML();
+       void ExtractModules( std::vector<Module*> &modules );
 };
 
 class Project
 {
        std::string xmlfile;
        XMLElement *node, *head;
+       Backend* _backend;
 public:
        const Configuration& configuration;
        std::string name;
        std::string makefile;
        XMLIncludes xmlbuildfiles;
-       std::vector<Module*> modules;
        std::vector<LinkerFlag*> linkerFlags;
        std::vector<CDFile*> cdfiles;
        std::vector<InstallFile*> installfiles;
+       std::vector<Module*> modules;
        IfableData non_if_data;
 
        Project ( const Configuration& configuration,
                  const std::string& filename );
        ~Project ();
+       void SetBackend ( Backend* backend ) { _backend = backend; }
+       Backend& GetBackend() { return *_backend; }
        void WriteConfigurationFile ();
        void ExecuteInvocations ();
+
        void ProcessXML ( const std::string& path );
        Module* LocateModule ( const std::string& name );
        const Module* LocateModule ( const std::string& name ) const;
@@ -251,7 +262,8 @@ enum ModuleType
        Test = 15,
        RpcServer = 16,
        RpcClient = 17,
-       Alias = 18
+       Alias = 18,
+       BootProgram = 19
 };
 
 enum HostType
@@ -272,6 +284,7 @@ public:
        std::string extension;
        std::string entrypoint;
        std::string baseaddress;
+       std::string payload;
        std::string path;
        ModuleType type;
        ImportLibrary* importLibrary;
@@ -311,6 +324,7 @@ public:
        std::string GetBasePath () const; // "path"
        std::string GetPath () const; // "path/foo.exe"
        std::string GetPathWithPrefix ( const std::string& prefix ) const; // "path/prefixfoo.exe"
+       std::string GetPathToBaseDir() const; // "../" offset to rootdirectory
        void GetTargets ( string_list& ) const;
        std::string GetInvocationTarget ( const int index ) const;
        bool HasFileWithExtension ( const IfableData&, const std::string& extension ) const;