aboutsummaryrefslogtreecommitdiff
path: root/build_msvc/msbuild
diff options
context:
space:
mode:
Diffstat (limited to 'build_msvc/msbuild')
-rw-r--r--build_msvc/msbuild/tasks/hexdump.targets53
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