| OLD | NEW |
| 1 using System; | 1 using System; |
| 2 using System.Collections.Generic; | 2 using System.Collections.Generic; |
| 3 using System.Linq; | 3 using System.Linq; |
| 4 using System.Text; | 4 using System.Text; |
| 5 using System.IO; |
| 5 | 6 |
| 6 using Microsoft.Build.Framework; | 7 using Microsoft.Build.Framework; |
| 7 using System.Xaml; | 8 using System.Xaml; |
| 8 using Microsoft.Build.Framework.XamlTypes; | 9 using Microsoft.Build.Framework.XamlTypes; |
| 9 using Microsoft.Build.Utilities; | 10 using Microsoft.Build.Utilities; |
| 10 | 11 |
| 11 namespace NaCl.Build.CPPTasks | 12 namespace NaCl.Build.CPPTasks |
| 12 { | 13 { |
| 13 class XamlParser | 14 class XamlParser |
| 14 { | 15 { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 32 | 33 |
| 33 InitFunctionMap(); | 34 InitFunctionMap(); |
| 34 } | 35 } |
| 35 | 36 |
| 36 private void InitFunctionMap() | 37 private void InitFunctionMap() |
| 37 { | 38 { |
| 38 m_typeFunctionMap = new Dictionary<Type, Action<CommandLineBuilder,
BaseProperty, string>> | 39 m_typeFunctionMap = new Dictionary<Type, Action<CommandLineBuilder,
BaseProperty, string>> |
| 39 { | 40 { |
| 40 { typeof(StringListProperty), GenerateArgumentStringList }, | 41 { typeof(StringListProperty), GenerateArgumentStringList }, |
| 41 { typeof(StringProperty), GenerateArgumentString }, | 42 { typeof(StringProperty), GenerateArgumentString }, |
| 42 { typeof(IntProperty), GenerateArgumentString }, | 43 { typeof(IntProperty), GenerateArgumentInt }, |
| 43 { typeof(BoolProperty), GenerateArgumentBool }, | 44 { typeof(BoolProperty), GenerateArgumentBool }, |
| 44 { typeof(EnumProperty), GenerateArgumentEnum } | 45 { typeof(EnumProperty), GenerateArgumentEnum } |
| 45 }; | 46 }; |
| 46 } | 47 } |
| 47 | 48 |
| 48 public string Parse(ITaskItem taskItem) | 49 public string Parse(ITaskItem taskItem, bool fullOutputName) |
| 49 { | 50 { |
| 50 CommandLineBuilder builder = new CommandLineBuilder(); | 51 CommandLineBuilder builder = new CommandLineBuilder(); |
| 51 | 52 |
| 52 foreach (string name in taskItem.MetadataNames) | 53 foreach (string name in taskItem.MetadataNames) |
| 53 { | 54 { |
| 54 string value = taskItem.GetMetadata(name); | 55 string value = taskItem.GetMetadata(name); |
| 56 if (fullOutputName && name == "ObjectFileName") |
| 57 { |
| 58 if ((File.GetAttributes(value) & FileAttributes.Directory) !
= 0) |
| 59 { |
| 60 value = Path.Combine(value, Path.GetFileName(taskItem.It
emSpec)); |
| 61 value = Path.ChangeExtension(value, ".obj"); |
| 62 } |
| 63 } |
| 55 AppendArgumentForProperty(builder, name, value); | 64 AppendArgumentForProperty(builder, name, value); |
| 56 } | 65 } |
| 57 | 66 |
| 58 string result = builder.ToString(); | 67 string result = builder.ToString(); |
| 59 result = result.Replace('\\', '/'); // posix paths | 68 result = result.Replace('\\', '/'); // posix paths |
| 60 return result; | 69 return result; |
| 61 } | 70 } |
| 62 | 71 |
| 63 private string AppendArgumentForProperty(CommandLineBuilder builder, str
ing name, string value) | 72 private string AppendArgumentForProperty(CommandLineBuilder builder, str
ing name, string value) |
| 64 { | 73 { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 } | 128 } |
| 120 } | 129 } |
| 121 | 130 |
| 122 private void GenerateArgumentString(CommandLineBuilder builder, BaseProp
erty property, string value) | 131 private void GenerateArgumentString(CommandLineBuilder builder, BaseProp
erty property, string value) |
| 123 { | 132 { |
| 124 // could cache this SubType test off in property wrapper or somewher
e if performance were an issue | 133 // could cache this SubType test off in property wrapper or somewher
e if performance were an issue |
| 125 StringProperty casted = (StringProperty)property; | 134 StringProperty casted = (StringProperty)property; |
| 126 AppendStringValue(builder, property, casted.Subtype, value); | 135 AppendStringValue(builder, property, casted.Subtype, value); |
| 127 } | 136 } |
| 128 | 137 |
| 138 private void GenerateArgumentInt(CommandLineBuilder builder, BasePropert
y property, string value) |
| 139 { |
| 140 // Currently we only have one Int property and it doesn't correspond
to a |
| 141 // command line arguemnt (ProcessorNumber) so we ignore it here. |
| 142 } |
| 143 |
| 129 private void GenerateArgumentBool(CommandLineBuilder builder, BaseProper
ty property, string value) | 144 private void GenerateArgumentBool(CommandLineBuilder builder, BaseProper
ty property, string value) |
| 130 { | 145 { |
| 131 if (value == "true") | 146 if (value == "true") |
| 132 { | 147 { |
| 133 builder.AppendSwitchUnquotedIfNotNull(m_parsedBuildRule.SwitchPr
efix, property.Switch); | 148 builder.AppendSwitchUnquotedIfNotNull(m_parsedBuildRule.SwitchPr
efix, property.Switch); |
| 134 } | 149 } |
| 135 else if (value == "false" && ((BoolProperty)property).ReverseSwitch
!= null) | 150 else if (value == "false" && ((BoolProperty)property).ReverseSwitch
!= null) |
| 136 { | 151 { |
| 137 builder.AppendSwitchUnquotedIfNotNull(m_parsedBuildRule.SwitchPr
efix, ((BoolProperty)property).ReverseSwitch); | 152 builder.AppendSwitchUnquotedIfNotNull(m_parsedBuildRule.SwitchPr
efix, ((BoolProperty)property).ReverseSwitch); |
| 138 } | 153 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 151 } // class | 166 } // class |
| 152 | 167 |
| 153 private Rule m_parsedBuildRule; | 168 private Rule m_parsedBuildRule; |
| 154 private Dictionary<string, PropertyWrapper> ToolProperties { get; set; } | 169 private Dictionary<string, PropertyWrapper> ToolProperties { get; set; } |
| 155 | 170 |
| 156 // function mapping for easy property function calling | 171 // function mapping for easy property function calling |
| 157 private Dictionary<Type, Action<CommandLineBuilder, BaseProperty, string
>> m_typeFunctionMap; | 172 private Dictionary<Type, Action<CommandLineBuilder, BaseProperty, string
>> m_typeFunctionMap; |
| 158 } // XamlParser | 173 } // XamlParser |
| 159 } // namespace NaCl.Build.CPPTasks | 174 } // namespace NaCl.Build.CPPTasks |
| 160 | 175 |
| OLD | NEW |