void IRccGenerationPolicy.Rcc( RccGeneratedSource sender, Bam.Core.ExecutionContext context, Bam.Core.ICommandLineTool rccCompiler, Bam.Core.TokenizedString generatedRccSource, QRCFile source) { var encapsulating = sender.GetEncapsulatingReferencedModule(); var solution = Bam.Core.Graph.Instance.MetaData as VSSolutionBuilder.VSSolution; var project = solution.EnsureProjectExists(encapsulating); var config = project.GetConfiguration(encapsulating); var output = generatedRccSource.Parse(); var args = new Bam.Core.StringArray(); args.Add(CommandLineProcessor.Processor.StringifyTool(rccCompiler)); (sender.Settings as CommandLineProcessor.IConvertToCommandLine).Convert(args); args.Add(System.String.Format("-o {0}", output)); args.Add("%(FullPath)"); config.AddOtherFile(source); var customBuild = config.GetSettingsGroup(VSSolutionBuilder.VSSettingsGroup.ESettingsGroup.CustomBuild, include: source.InputPath, uniqueToProject: true); customBuild.AddSetting("Command", args.ToString(' '), condition: config.ConditionText); customBuild.AddSetting("Message", System.String.Format("Rccing {0}", System.IO.Path.GetFileName(source.InputPath.Parse())), condition: config.ConditionText); customBuild.AddSetting("Outputs", output, condition: config.ConditionText); }
void IRccGenerationPolicy.Rcc( RccGeneratedSource sender, Bam.Core.ExecutionContext context, Bam.Core.ICommandLineTool rccCompiler, Bam.Core.TokenizedString generatedRccSource, QRCFile source) { var rccOutputPath = generatedRccSource.Parse(); var rccOutputDir = System.IO.Path.GetDirectoryName(rccOutputPath); if (!System.IO.Directory.Exists(rccOutputDir)) { System.IO.Directory.CreateDirectory(rccOutputDir); } var args = new Bam.Core.StringArray(); (sender.Settings as CommandLineProcessor.IConvertToCommandLine).Convert(args); args.Add(System.String.Format("-o {0}", rccOutputPath)); args.Add(source.InputPath.Parse()); CommandLineProcessor.Processor.Execute(context, rccCompiler, args); }
void IRccGenerationPolicy.Rcc( RccGeneratedSource sender, Bam.Core.ExecutionContext context, Bam.Core.ICommandLineTool rccCompiler, Bam.Core.TokenizedString generatedRccSource, QRCFile source) { var encapsulating = sender.GetEncapsulatingReferencedModule(); var workspace = Bam.Core.Graph.Instance.MetaData as XcodeBuilder.WorkspaceMeta; var target = workspace.EnsureTargetExists(encapsulating); var configuration = target.GetConfiguration(encapsulating); var output = generatedRccSource.Parse(); var sourcePath = source.InputPath.Parse(); var commands = new Bam.Core.StringArray(); commands.Add(System.String.Format("[[ ! -d {0} ]] && mkdir -p {0}", System.IO.Path.GetDirectoryName(output))); var args = new Bam.Core.StringArray(); args.Add(CommandLineProcessor.Processor.StringifyTool(rccCompiler)); (sender.Settings as CommandLineProcessor.IConvertToCommandLine).Convert(args); args.Add(System.String.Format("-o {0}", output)); args.Add(sourcePath); target.EnsureFileOfTypeExists(source.InputPath, XcodeBuilder.FileReference.EFileType.TextFile, relativePath: target.Project.GetRelativePathToProject(source.InputPath), explicitType: false); var rcc_commandLine = args.ToString(' '); commands.Add(System.String.Format("if [[ ! -e {0} || {1} -nt {0} ]]", output, sourcePath)); commands.Add("then"); commands.Add(System.String.Format("\techo {0}", rcc_commandLine)); commands.Add(System.String.Format("\t{0}", rcc_commandLine)); commands.Add("fi"); target.AddPreBuildCommands(commands, configuration); }
void IRccGenerationPolicy.Rcc( RccGeneratedSource sender, Bam.Core.ExecutionContext context, Bam.Core.ICommandLineTool rccCompiler, Bam.Core.TokenizedString generatedRccSource, QRCFile source) { var meta = new MakeFileBuilder.MakeFileMeta(sender); var rule = meta.AddRule(); rule.AddTarget(generatedRccSource); rule.AddPrerequisite(source, C.HeaderFile.Key); var rccOutputPath = generatedRccSource.Parse(); var rccOutputDir = System.IO.Path.GetDirectoryName(rccOutputPath); var args = new Bam.Core.StringArray(); args.Add(CommandLineProcessor.Processor.StringifyTool(rccCompiler)); (sender.Settings as CommandLineProcessor.IConvertToCommandLine).Convert(args); args.Add(System.String.Format("-o {0}", rccOutputPath)); args.Add(source.InputPath.Parse()); rule.AddShellCommand(args.ToString(' ')); meta.CommonMetaData.Directories.AddUnique(rccOutputDir); }