diff options
Diffstat (limited to 'build_msvc/msbuild')
-rw-r--r-- | build_msvc/msbuild/tasks/hexdump.targets | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/build_msvc/msbuild/tasks/hexdump.targets b/build_msvc/msbuild/tasks/hexdump.targets new file mode 100644 index 0000000000..12868a9874 --- /dev/null +++ b/build_msvc/msbuild/tasks/hexdump.targets @@ -0,0 +1,53 @@ +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <UsingTask + TaskName="HeaderFromHexdump" + TaskFactory="CodeTaskFactory" + AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll" > + <ParameterGroup> + <RawFilePath Required="true" /> + <HeaderFilePath Required="true" /> + <SourceHeader Required="true" /> + <SourceFooter Required="true" /> + </ParameterGroup> + <Task> + <Using Namespace="System"/> + <Using Namespace="System.IO"/> + <Code Type="Fragment" Language="cs"> +<![CDATA[ +Log.LogMessage("msbuild inline hexdump task for " + RawFilePath + "."); +if(File.Exists(RawFilePath) == false) { + Log.LogError("hexdump task could not locate " + RawFilePath + "."); +} +else { + FileInfo inFileInfo = new FileInfo(RawFilePath); + FileInfo outFileInfo = new FileInfo(HeaderFilePath); + + if (outFileInfo.Exists == false || inFileInfo.LastWriteTime > outFileInfo.LastWriteTime) + { + using (Stream inStm = File.OpenRead(RawFilePath)) + { + using (StreamWriter sw = new StreamWriter(HeaderFilePath)) + { + sw.WriteLine(SourceHeader); + int count = 0; + int rawChar = inStm.ReadByte(); + while(rawChar != -1) + { + sw.Write("0x{0:x2}, ", rawChar); + count++; + if(count % 8 == 0) + { + sw.WriteLine(); + } + rawChar = inStm.ReadByte(); + } + sw.WriteLine(SourceFooter); + } + } + } +} +]]> + </Code> + </Task> + </UsingTask> +</Project>
\ No newline at end of file |