case Iso:\r
handler = new MingwIsoModuleHandler ( module );\r
break;\r
+ case LiveIso:\r
+ handler = new MingwLiveIsoModuleHandler ( module );\r
+ break;\r
case Test:\r
handler = new MingwTestModuleHandler ( module );\r
break;\r
backend->outputDirectory );\r
string bootcdReactosNoFixup = bootcdDirectory + SSEP "reactos";\r
string bootcdReactos = PassThruCacheDirectory (\r
- NormalizeFilename ( bootcdReactosNoFixup ),\r
+ NormalizeFilename ( bootcdReactosNoFixup ) + SSEP,\r
backend->outputDirectory );\r
CLEAN_FILE ( bootcdReactos );\r
string reactosInf = PassThruCacheDirectory (\r
}\r
\r
\r
+MingwLiveIsoModuleHandler::MingwLiveIsoModuleHandler (\r
+ const Module& module_ )\r
+\r
+ : MingwModuleHandler ( module_ )\r
+{\r
+}\r
+\r
+void\r
+MingwLiveIsoModuleHandler::Process ()\r
+{\r
+ GenerateLiveIsoModuleTarget ();\r
+}\r
+\r
+void\r
+MingwLiveIsoModuleHandler::CreateDirectory ( const string& directory )\r
+{\r
+ string normalizedDirectory = MingwModuleHandler::PassThruCacheDirectory (\r
+ NormalizeFilename ( directory ) + SSEP,\r
+ backend->outputDirectory );\r
+}\r
+\r
+void\r
+MingwLiveIsoModuleHandler::OutputCopyCommand ( const string& sourceFilename,\r
+ const string& targetFilename,\r
+ const string& targetDirectory )\r
+{\r
+ string normalizedTargetFilename = MingwModuleHandler::PassThruCacheDirectory (\r
+ NormalizeFilename ( targetDirectory + SSEP + targetFilename ),\r
+ backend->outputDirectory );\r
+ fprintf ( fMakefile,\r
+ "\t$(ECHO_CP)\n" );\r
+ fprintf ( fMakefile,\r
+ "\t${cp} %s %s 1>$(NUL)\n",\r
+ sourceFilename.c_str (),\r
+ normalizedTargetFilename.c_str () );\r
+}\r
+\r
+void\r
+MingwLiveIsoModuleHandler::OutputModuleCopyCommands ( string& livecdDirectory,\r
+ string& reactosDirectory )\r
+{\r
+ for ( size_t i = 0; i < module.project.modules.size (); i++ )\r
+ {\r
+ const Module& m = *module.project.modules[i];\r
+ if ( m.installName.length () > 0 )\r
+ {\r
+ string sourceFilename = MingwModuleHandler::PassThruCacheDirectory (\r
+ NormalizeFilename ( m.GetPath () ),\r
+ backend->outputDirectory );\r
+ OutputCopyCommand ( sourceFilename,\r
+ m.installName,\r
+ livecdDirectory + SSEP + reactosDirectory + SSEP + m.installBase );\r
+ }\r
+ }\r
+}\r
+\r
+void\r
+MingwLiveIsoModuleHandler::OutputNonModuleCopyCommands ( string& livecdDirectory,\r
+ string& reactosDirectory )\r
+{\r
+ for ( size_t i = 0; i < module.project.installfiles.size (); i++ )\r
+ {\r
+ const InstallFile& installfile = *module.project.installfiles[i];\r
+ OutputCopyCommand ( installfile.GetPath (),\r
+ installfile.newname,\r
+ livecdDirectory + SSEP + reactosDirectory + SSEP + installfile.base );\r
+ }\r
+}\r
+\r
+void\r
+MingwLiveIsoModuleHandler::OutputProfilesDirectoryCommands ( string& livecdDirectory )\r
+{\r
+ CreateDirectory ( livecdDirectory + SSEP "Profiles" );\r
+ CreateDirectory ( livecdDirectory + SSEP "Profiles" SSEP "All Users") ;\r
+ CreateDirectory ( livecdDirectory + SSEP "Profiles" SSEP "All Users" SSEP "Desktop" );\r
+ CreateDirectory ( livecdDirectory + SSEP "Profiles" SSEP "Default User" );\r
+ CreateDirectory ( livecdDirectory + SSEP "Profiles" SSEP "Default User" SSEP "Desktop" );\r
+ CreateDirectory ( livecdDirectory + SSEP "Profiles" SSEP "Default User" SSEP "My Documents" );\r
+\r
+ string livecdIni = "bootdata" SSEP "livecd.ini";\r
+ OutputCopyCommand ( livecdIni,\r
+ "freeldr.ini",\r
+ livecdDirectory );\r
+}\r
+\r
+void\r
+MingwLiveIsoModuleHandler::OutputLoaderCommands ( string& livecdDirectory )\r
+{\r
+ string setupldr = PassThruCacheDirectory (\r
+ NormalizeFilename ( "boot" SSEP "freeldr" SSEP "freeldr" SSEP "setupldr.sys" ),\r
+ backend->outputDirectory );\r
+ CreateDirectory ( livecdDirectory + SSEP "loader" );\r
+ OutputCopyCommand ( setupldr,\r
+ "setupldr.sys",\r
+ livecdDirectory + SSEP + "loader" );\r
+}\r
+\r
+void\r
+MingwLiveIsoModuleHandler::OutputRegistryCommands ( string& livecdDirectory )\r
+{\r
+ string system32ConfigDirectory = NormalizeFilename (\r
+ MingwModuleHandler::PassThruCacheDirectory (\r
+ livecdDirectory + SSEP "system32" SSEP "config" SSEP,\r
+ backend->outputDirectory ) );\r
+ fprintf ( fMakefile,\r
+ "\t$(ECHO_MKHIVE)\n" );\r
+ fprintf ( fMakefile,\r
+ "\t$(MKHIVE_TARGET) bootdata %s bootdata" SSEP "livecd.inf bootdata" SSEP "hiveinst.inf\n",\r
+ system32ConfigDirectory.c_str () );\r
+}\r
+\r
+void\r
+MingwLiveIsoModuleHandler::GenerateLiveIsoModuleTarget ()\r
+{\r
+ string livecdDirectory = "livecd";\r
+ string livecd = PassThruCacheDirectory (\r
+ NormalizeFilename ( livecdDirectory + SSEP ),\r
+ backend->outputDirectory );\r
+ string isoboot = PassThruCacheDirectory (\r
+ NormalizeFilename ( "boot" SSEP "freeldr" SSEP "bootsect" SSEP "isoboot.o" ),\r
+ backend->outputDirectory );\r
+ string reactosDirectory = "reactos";\r
+ string livecdReactosNoFixup = livecdDirectory + SSEP + reactosDirectory;\r
+ string livecdReactos = NormalizeFilename ( PassThruCacheDirectory (\r
+ NormalizeFilename ( livecdReactosNoFixup + SSEP ),\r
+ backend->outputDirectory ) );\r
+ CLEAN_FILE ( livecdReactos );\r
+\r
+ fprintf ( fMakefile, ".PHONY: %s\n\n",\r
+ module.name.c_str ());\r
+ fprintf ( fMakefile,\r
+ "%s: all %s %s $(MKHIVE_TARGET) $(CDMAKE_TARGET)\n",\r
+ module.name.c_str (),\r
+ isoboot.c_str (),\r
+ livecdReactos.c_str () );\r
+ OutputModuleCopyCommands ( livecdDirectory,\r
+ reactosDirectory );\r
+ OutputNonModuleCopyCommands ( livecdDirectory,\r
+ reactosDirectory );\r
+ OutputProfilesDirectoryCommands ( livecdDirectory );\r
+ OutputLoaderCommands ( livecdDirectory );\r
+ OutputRegistryCommands ( livecdDirectory );\r
+ fprintf ( fMakefile, "\t$(ECHO_CDMAKE)\n" );\r
+ fprintf ( fMakefile,\r
+ "\t$(Q)$(CDMAKE_TARGET) -v -m -j -b %s %s REACTOS ReactOS-LiveCD.iso\n",\r
+ isoboot.c_str (),\r
+ livecd.c_str () );\r
+ fprintf ( fMakefile,\r
+ "\n" );\r
+}\r
+\r
+\r
MingwTestModuleHandler::MingwTestModuleHandler (\r
const Module& module_ )\r
\r