public AggregatedProgressMonitor(IProgressMonitor masterMonitor)
 {
     this.masterMonitor = masterMonitor;
     AddSlaveMonitor (masterMonitor, MonitorAction.All);
     logger = new LogTextWriter ();
     logger.TextWritten += new LogTextEventHandler (OnWriteLog);
 }
 public BaseProgressMonitor()
 {
     progressTracker = new ProgressTracker ();
     logger = new LogTextWriter ();
     logger.TextWritten += new LogTextEventHandler (WriteLogInternal);
 }
        private bool DoCompilation(IProgressMonitor monitor, string compiler, string args, DotNetProjectConfiguration configuration, JavaCompilerParameters compilerparameters, TextWriter output, TextWriter error)
        {
            LogTextWriter chainedError = new LogTextWriter ();
            chainedError.ChainWriter (monitor.Log);
            chainedError.ChainWriter (error);

            LogTextWriter chainedOutput = new LogTextWriter ();
            chainedOutput.ChainWriter (monitor.Log);
            chainedOutput.ChainWriter (output);

            monitor.Log.WriteLine ("Compiling Java source code ...");

            Process p = Runtime.ProcessService.StartProcess (compiler, args, null, chainedOutput, chainedError, null);
            p.WaitForExit ();
            return p.ExitCode == 0;
        }
        protected override ICompilerResult DoBuild(IProgressMonitor monitor)
        {
            MonoProjectConfiguration conf = (MonoProjectConfiguration) ActiveConfiguration;

            StringWriter output = new StringWriter ();
            LogTextWriter tw = new LogTextWriter ();
            tw.ChainWriter (output);
            tw.ChainWriter (monitor.Log);

            ProcessWrapper proc = Runtime.ProcessService.StartProcess ("make", "PROFILE=" + conf.Profile, conf.OutputDirectory, monitor.Log, tw, null);
            proc.WaitForOutput ();

            CompilerResults cr = new CompilerResults (null);
            string[] lines = output.ToString().Split ('\n');
            foreach (string line in lines) {
                CompilerError err = CreateErrorFromString (line);
                if (err != null) cr.Errors.Add (err);
            }

            return new DefaultCompilerResult (cr, output.ToString());
        }
        void CompileToAssembly(IProgressMonitor monitor, DotNetProjectConfiguration configuration, JavaCompilerParameters compilerparameters, ProjectReferenceCollection references, TextWriter output, TextWriter error)
        {
            monitor.Log.WriteLine ("Generating assembly ...");

            LogTextWriter chainedError = new LogTextWriter ();
            chainedError.ChainWriter (monitor.Log);
            chainedError.ChainWriter (error);

            LogTextWriter chainedOutput = new LogTextWriter ();
            chainedOutput.ChainWriter (monitor.Log);
            chainedOutput.ChainWriter (output);

            string outdir = configuration.OutputDirectory;
            string outclass = Path.Combine (outdir, configuration.OutputAssembly + ".class");
            string asm = Path.GetFileNameWithoutExtension (outclass);

            string opts = "-assembly:" + asm;

            switch (configuration.CompileTarget) {
                case CompileTarget.Exe:
                    opts += " -target:exe";
                    break;
                case CompileTarget.WinExe:
                    opts += " -target:winexe";
                    break;
                case CompileTarget.Library:
                    opts += " -target:library";
                    break;
            }

            if (configuration.DebugMode)
                opts += " -debug";

            opts += " -srcpath:" + configuration.SourceDirectory;

            if (references != null) {
                foreach (ProjectReference lib in references)
                    opts += " -r:" + lib.GetReferencedFileName ();
            }

            string ikvmc = Path.Combine (Path.Combine (JavaLanguageBinding.Properties.IkvmPath, "bin"), "ikvmc.exe");

            string args = String.Format ("-c \"mono {0} {1} {2}\"", ikvmc, "*.class", opts);
            Process p = Runtime.ProcessService.StartProcess ("/bin/sh", args, configuration.OutputDirectory, chainedOutput, chainedError, null);
            p.WaitForExit ();
        }