Index: visual_studio/NativeClientVSAddIn/NaCl.Build.CPPTasks/DependencyParser.cs |
diff --git a/visual_studio/NativeClientVSAddIn/NaCl.Build.CPPTasks/DependencyParser.cs b/visual_studio/NativeClientVSAddIn/NaCl.Build.CPPTasks/DependencyParser.cs |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9a516605a234e7950b893d7a5420afbbfe7d3507 |
--- /dev/null |
+++ b/visual_studio/NativeClientVSAddIn/NaCl.Build.CPPTasks/DependencyParser.cs |
@@ -0,0 +1,53 @@ |
+using System; |
+using System.Collections.Generic; |
+using System.Linq; |
+using System.Text; |
+ |
+using System.IO; |
+ |
+namespace NaCl.Build.CPPTasks |
+{ |
+ class DependencyParser |
+ { |
+ private static char[] elementEndings = new char[] { ' ', '\n', '\\' }; |
+ private List<string> m_dependencies; |
+ public List<String> Dependencies |
+ { |
+ get |
+ { |
+ return m_dependencies; |
+ } |
+ } |
+ |
+ public DependencyParser(string filename) |
+ { |
+ m_dependencies = new List<string>(); |
+ |
+ using (StreamReader reader = new StreamReader(filename, Encoding.ASCII)) |
+ { |
+ while (!reader.EndOfStream) |
+ { |
+ string str = reader.ReadLine(); |
+ ParseLine(str); |
+ } |
+ reader.Close(); |
+ } |
+ } |
+ |
+ private void ParseLine(string line) |
+ { |
+ string[] paths = line.Split(elementEndings, StringSplitOptions.RemoveEmptyEntries); |
+ |
+ foreach (string path in paths) |
+ { |
+ // ignore the source object file |
+ // assumes .o file is only possible file ending with 'o' |
+ if (path.ElementAt(path.Length - 1) != 'o' && path.ElementAt(path.Length - 1) != ':') |
+ { |
+ string newDependency = GCCUtilities.Convert_Path_Posix_To_Windows(path); |
+ m_dependencies.Add(newDependency); |
+ } |
+ } |
+ } |
+ } |
+} |