Cosmos/source2/Build/Cosmos.Build.MSBuild/IL2CPU.cs
mterwoord_cp fab8765053
2011-02-17 18:49:42 +00:00

114 lines
No EOL
2.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Build.Utilities;
using Microsoft.Build.Framework;
using System.Reflection;
using Cosmos.Compiler.Assembler;
using Cosmos.Compiler.Assembler.X86;
using System.IO;
using Cosmos.Build.Common;
using Microsoft.Win32;
using Cosmos.IL2CPU.X86;
using Cosmos.IL2CPU;
using System.Reflection.Emit;
using System.Diagnostics;
namespace Cosmos.Build.MSBuild
{
public class IL2CPU : AppDomainIsolatedTask
{
protected IL2CPUTask mTask = new IL2CPUTask();
[Required]
public string DebugMode
{
get;
set;
}
public string TraceAssemblies
{
get;
set;
}
public byte DebugCom
{
get;
set;
}
[Required]
public bool UseNAsm
{
get;
set;
}
[Required]
public ITaskItem[] References
{
get;
set;
}
[Required]
public string OutputFilename
{
get;
set;
}
public bool EnableLogging
{
get;
set;
}
public bool EmitDebugSymbols
{
get;
set;
}
protected void LogMessage(string aMsg) {
Log.LogMessage(aMsg);
}
protected void LogError(string aMsg) {
Log.LogMessage(aMsg);
}
protected void LogException(Exception e) {
Log.LogErrorFromException(e, true);
}
public override bool Execute() {
var xSW = Stopwatch.StartNew();
try
{
mTask.OnLogMessage = LogMessage;
mTask.OnLogError = LogError;
mTask.OnLogException = LogException;
mTask.DebugMode = DebugMode;
mTask.TraceAssemblies = TraceAssemblies;
mTask.DebugCom = DebugCom;
mTask.UseNAsm = UseNAsm;
mTask.References = References;
mTask.OutputFilename = OutputFilename;
mTask.EnableLogging = EnableLogging;
mTask.EmitDebugSymbols = EmitDebugSymbols;
return mTask.Execute();
}
finally
{
xSW.Stop();
Log.LogWarning("IL2CPU task took {0}", xSW.Elapsed);
}
}
}
}