public bool Build(IProject project) { AssemblerOutput output; using (IAssembler assembler = _assemblerFactory.CreateAssembler()) { AssemblerHelper.SetupAssembler(assembler, _inputFile, _outputFile, project.ProjectDirectory, project.IncludeDirs); string outputString; switch (_stepType) { case BuildStepType.All: outputString = assembler.Assemble(AssemblyFlags.Normal | AssemblyFlags.SymbolTable | AssemblyFlags.List); output = new AssemblerOutput(outputString, !outputString.Contains("error") && !outputString.Contains("Couldn't")); project.BuildSystem.ProjectOutput = _outputFile; project.BuildSystem.ListOutput = _outputFile.ChangeExtension("lst"); project.BuildSystem.LabelOutput = _outputFile.ChangeExtension("lab"); break; case BuildStepType.Assemble: outputString = assembler.Assemble(AssemblyFlags.Normal); output = new AssemblerOutput(outputString, !outputString.Contains("error") && !outputString.Contains("Couldn't")); project.BuildSystem.ProjectOutput = _outputFile; break; case BuildStepType.Listing: outputString = assembler.Assemble(AssemblyFlags.Normal | AssemblyFlags.List); output = new AssemblerOutput(outputString, !outputString.Contains("error") && !outputString.Contains("Couldn't")); project.BuildSystem.ListOutput = _outputFile.ChangeExtension("lst"); break; case BuildStepType.SymbolTable: outputString = assembler.Assemble(AssemblyFlags.Normal | AssemblyFlags.SymbolTable); output = new AssemblerOutput(outputString, !outputString.Contains("error") && !outputString.Contains("Couldn't")); project.BuildSystem.LabelOutput = _outputFile.ChangeExtension("lab"); break; default: throw new InvalidOperationException("Unknown step type"); } } _outputText = output.OutputText; return(output.Succeeded); }
public AssemblerOutput AssembleFile(FilePath inputFile, FilePath outputFile, FilePath originalDir, IEnumerable <FilePath> includeDirs, AssemblyFlags flags = AssemblyFlags.Normal) { IAssembler assembler = _assemblerFactory.CreateAssembler(); AssemblerHelper.SetupAssembler(assembler, inputFile, outputFile, originalDir, includeDirs); string rawOutput = assembler.Assemble(flags); // lets write it to the output window so the user knows whats happening string outputText = string.Format(OutputFormatting, Path.GetFileName(inputFile), inputFile, rawOutput); bool errors = outputText.Contains("error"); OnAssemblerFileFinished(this, new AssemblyFinishFileEventArgs(inputFile, outputFile, outputText, !errors)); // tell if the assembly was successful return(new AssemblerOutput(outputText, !errors)); }