-Add a new module type 'cabinet' to handle .cab files generation
[reactos.git] / reactos / tools / rbuild / bootstrap.cpp
index 44d0763..f286bfd 100644 (file)
@@ -54,9 +54,11 @@ Bootstrap::IsSupportedModuleType ( ModuleType type )
                case BootSector:
                case BootLoader:
                case BootProgram:
+               case Cabinet:
                        return true;
                case BuildTool:
                case StaticLibrary:
+               case HostStaticLibrary:
                case ObjectLibrary:
                case Iso:
                case LiveIso:
@@ -65,15 +67,31 @@ Bootstrap::IsSupportedModuleType ( ModuleType type )
                case Test:
                case RpcServer:
                case RpcClient:
+               case RpcProxy:
                case Alias:
                case IdlHeader:
                case EmbeddedTypeLib:
+               case ElfExecutable:
                        return false;
+               case TypeDontCare:
+                       break;
        }
        throw InvalidOperationException ( __FILE__,
                                          __LINE__ );
 }
 
+string
+Bootstrap::ReplaceVariable ( const string& name,
+                             const string& value,
+                             string path )
+{
+       size_t i = path.find ( name );
+       if ( i != string::npos )
+               return path.replace ( i, name.length (), value );
+       else
+               return path;
+}
+
 void
 Bootstrap::Initialize ()
 {
@@ -84,7 +102,7 @@ Bootstrap::Initialize ()
                        "<bootstrap> is not applicable for this module type." );
        }
 
-       const XMLAttribute* att = node.GetAttribute ( "base", false );
+       const XMLAttribute* att = node.GetAttribute ( "installbase", false );
        if ( att != NULL )
                base = ReplaceVariable ( "$(CDOUTPUT)", Environment::GetCdOutputPath (), att->value );
        else
@@ -94,7 +112,7 @@ Bootstrap::Initialize ()
        if ( att != NULL )
                nameoncd = att->value;
        else
-               nameoncd = module->GetTargetName ();
+               nameoncd = module->output->name;
 }
 
 void