From 0c391fdbce5a079cf03e483eb6174dd47806163d Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 7 Aug 2019 21:08:47 +0800 Subject: *misc --- Build/tools/bindingGen/App.config | 6 + Build/tools/bindingGen/Properties/AssemblyInfo.cs | 36 +++ Build/tools/bindingGen/bin/Debug/bindingGen.exe | Bin 0 -> 9216 bytes .../bindingGen/bin/Debug/bindingGen.exe.config | 6 + Build/tools/bindingGen/bin/Release/bindingGen.exe | Bin 0 -> 9216 bytes .../bindingGen/bin/Release/bindingGen.exe.config | 6 + Build/tools/bindingGen/bindingGen.csproj | 53 ++++ Build/tools/bindingGen/bindingGen.csproj.user | 11 + Build/tools/bindingGen/main.cs | 282 +++++++++++++++++++++ .../DesignTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6807 bytes ...tedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...tedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...tedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../Debug/bindingGen.csproj.FileListAbsolute.txt | 10 + .../DesignTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6726 bytes ...tedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...tedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...tedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../bindingGen.csproj.CoreCompileInputs.cache | 1 + .../Release/bindingGen.csproj.FileListAbsolute.txt | 3 + .../bindingGen.csprojAssemblyReference.cache | Bin 0 -> 8077 bytes Build/tools/bindingGen/obj/Release/bindingGen.exe | Bin 0 -> 9216 bytes Build/tools/cembed/cembed.vcxproj | 123 +++++++++ Build/tools/cembed/cembed.vcxproj.filters | 6 + Build/tools/cembed/cembed.vcxproj.user | 4 + 25 files changed, 547 insertions(+) create mode 100644 Build/tools/bindingGen/App.config create mode 100644 Build/tools/bindingGen/Properties/AssemblyInfo.cs create mode 100644 Build/tools/bindingGen/bin/Debug/bindingGen.exe create mode 100644 Build/tools/bindingGen/bin/Debug/bindingGen.exe.config create mode 100644 Build/tools/bindingGen/bin/Release/bindingGen.exe create mode 100644 Build/tools/bindingGen/bin/Release/bindingGen.exe.config create mode 100644 Build/tools/bindingGen/bindingGen.csproj create mode 100644 Build/tools/bindingGen/bindingGen.csproj.user create mode 100644 Build/tools/bindingGen/main.cs create mode 100644 Build/tools/bindingGen/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 Build/tools/bindingGen/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 Build/tools/bindingGen/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 Build/tools/bindingGen/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 Build/tools/bindingGen/obj/Debug/bindingGen.csproj.FileListAbsolute.txt create mode 100644 Build/tools/bindingGen/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 Build/tools/bindingGen/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 Build/tools/bindingGen/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 Build/tools/bindingGen/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 Build/tools/bindingGen/obj/Release/bindingGen.csproj.CoreCompileInputs.cache create mode 100644 Build/tools/bindingGen/obj/Release/bindingGen.csproj.FileListAbsolute.txt create mode 100644 Build/tools/bindingGen/obj/Release/bindingGen.csprojAssemblyReference.cache create mode 100644 Build/tools/bindingGen/obj/Release/bindingGen.exe create mode 100644 Build/tools/cembed/cembed.vcxproj create mode 100644 Build/tools/cembed/cembed.vcxproj.filters create mode 100644 Build/tools/cembed/cembed.vcxproj.user (limited to 'Build/tools') diff --git a/Build/tools/bindingGen/App.config b/Build/tools/bindingGen/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/Build/tools/bindingGen/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Build/tools/bindingGen/Properties/AssemblyInfo.cs b/Build/tools/bindingGen/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1244da3 --- /dev/null +++ b/Build/tools/bindingGen/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("bindingGen")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("bindingGen")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("95cac424-d558-43d0-88b0-c67af1c4ee90")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 +// 方法是按如下所示使用“*”: : +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Build/tools/bindingGen/bin/Debug/bindingGen.exe b/Build/tools/bindingGen/bin/Debug/bindingGen.exe new file mode 100644 index 0000000..ad0ab9e Binary files /dev/null and b/Build/tools/bindingGen/bin/Debug/bindingGen.exe differ diff --git a/Build/tools/bindingGen/bin/Debug/bindingGen.exe.config b/Build/tools/bindingGen/bin/Debug/bindingGen.exe.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/Build/tools/bindingGen/bin/Debug/bindingGen.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Build/tools/bindingGen/bin/Release/bindingGen.exe b/Build/tools/bindingGen/bin/Release/bindingGen.exe new file mode 100644 index 0000000..c61ceae Binary files /dev/null and b/Build/tools/bindingGen/bin/Release/bindingGen.exe differ diff --git a/Build/tools/bindingGen/bin/Release/bindingGen.exe.config b/Build/tools/bindingGen/bin/Release/bindingGen.exe.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/Build/tools/bindingGen/bin/Release/bindingGen.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Build/tools/bindingGen/bindingGen.csproj b/Build/tools/bindingGen/bindingGen.csproj new file mode 100644 index 0000000..c787d56 --- /dev/null +++ b/Build/tools/bindingGen/bindingGen.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {95CAC424-D558-43D0-88B0-C67AF1C4EE90} + Exe + bindingGen + bindingGen + v4.6.1 + 512 + true + + + AnyCPU + true + full + false + ..\..\..\bin\win64\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + ..\..\..\bin\win64\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Build/tools/bindingGen/bindingGen.csproj.user b/Build/tools/bindingGen/bindingGen.csproj.user new file mode 100644 index 0000000..150d1c7 --- /dev/null +++ b/Build/tools/bindingGen/bindingGen.csproj.user @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Build/tools/bindingGen/main.cs b/Build/tools/bindingGen/main.cs new file mode 100644 index 0000000..f58b846 --- /dev/null +++ b/Build/tools/bindingGen/main.cs @@ -0,0 +1,282 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Text.RegularExpressions; +using System.IO; + +namespace bindingGen +{ + /// + /// 输入目录,在目录下生成./binding目录,存放导出的binding代码 + /// + class Program + { + // {0} 文件名 + // {1} 第一个名称空间 + // {2} 第二个名称空间 + // {3} 内容 + static string output = @"#include ""../{0}.h"" + +using namespace std; +using namespace Luax; + +namespace {1} +{{ + namespace {2} + {{ + {3} + }} +}} +"; + + // {0} 类名 + // {1} 内容 + static string registry = @" + LUAX_REGISTRY({0}) + {{ +{1} + }} +"; + + // {0} 类名 + // {1} 内容 + static string postprocess = @" + LUAX_POSTPROCESS({0}) + {{ +{1} + }} +"; + + // {0} 类名 + // {1} 去掉_的函数名 + // {2} 小写的类名 + static string method = @" + // {2}:{1}() + LUAX_IMPL_METHOD({0}, _{1}) + {{ + LUAX_PREPARE(L, {0}); + + return 0; + }} +"; + // {0} 类名 + // {1} 去掉_的函数名 + static string method_new = @" + // {0}.{1}() + LUAX_IMPL_METHOD({0}, _{1}) + {{ + LUAX_STATE(L); + + return 0; + }} +"; + + static string make_register_methods(MatchCollection methods) + { + if (methods.Count == 0) + return ""; + string register_methods = ""; + register_methods += "\t\t\tLUAX_REGISTER_METHODS(state,\n"; + int maxlen = 0; + foreach (var m in methods) + { + string method = m.ToString(); + if (method.Count() > maxlen) + maxlen = method.Count(); + } + for (int i = 0; i < methods.Count; ++i) + { + Match m = methods[i]; + string method = m.ToString(); + register_methods += "\t\t\t\t"; + register_methods += "{ "; + register_methods += ('"' + method.Substring(1, method.Count() - 1) + "\",").PadRight(maxlen + 3, ' '); + register_methods += method.PadRight(maxlen + 1, ' '); + register_methods += "}"; + if (i != methods.Count - 1) + register_methods += ','; + register_methods += '\n'; + } + register_methods += "\t\t\t);"; + return register_methods; + } + + static string make_impl_methods(MatchCollection mc, string cname) + { + if (mc.Count == 0) + return ""; + + string methods = ""; + + foreach (var m in mc) + { + string name = m.ToString(); + if (name != "_New") + { + methods += String.Format(method, cname, name.Substring(1, name.Count() - 1), cname.ToLower()); + } + else + { + methods += String.Format(method_new, cname, name.Substring(1, name.Count() - 1)); + } + } + + return methods; + } + + static int IndexOfChar(string str, char c, int n) + { + int j = 0; + for (int i = 0; i < str.Count(); ++i) + { + char ch = str[i]; + if (ch == c) + { + if (j == n) + return i; + ++j; + } + } + return -1; + } + + static string make_register_enum(MatchCollection mc, string src) + { + if (mc.Count == 0) + return ""; + + string reg_enum_l = @"(?<=enum\s*"; + string reg_enum_r = @"[\s\n]*\{((?!\})[\s\S])*\s)[A-Z_0-9]+(?=[\s\=,]+)"; + string enums = ""; + + // 尝试查找下划线索引号,如果没有,代表这个枚举字符串全部都是key + string reg_under_line_l = @"(?<=LUAX_DECL_ENUM\s*\(\s*"; + string reg_under_line_r = @"\s*,\s*)[0-9]+(?=\s*\))"; + + foreach (var m in mc) + { + string name = m.ToString(); + enums += "\t\t\tLUAX_REGISTER_ENUM(state, "; + enums += "\"E" + name + "\",\n"; + MatchCollection values = Regex.Matches(src, reg_enum_l + name + reg_enum_r); + string[] enames = new string[values.Count]; + string[] keys = new string[values.Count]; + int underline_index = -1; + Match underline = Regex.Match(src, reg_under_line_l + name + reg_under_line_r); + if (underline.Success) + { + underline_index = int.Parse(underline.ToString()); + } + int maxEname = 0, maxKey = 0; + for (int i = 0; i < values.Count; ++i) + { + enames[i] = values[i].ToString(); + if(underline_index != -1) + { + int start = IndexOfChar(enames[i], '_', underline_index) + 1; + keys[i] = enames[i].Substring(start, enames[i].Count() - start); + } + else + { + // 表明全部都是key + keys[i] = enames[i]; + } + if (enames[i].Count() > maxEname) maxEname = enames[i].Count(); + if (keys[i].Count() > maxKey) maxKey = keys[i].Count(); + } + for (int i = 0; i < values.Count; ++i) + { + enums += "\t\t\t\t{ "; + enums += ('"' + keys[i] + "\",").PadRight(maxKey + 4); + enums += enames[i].PadRight(maxEname + 1); + enums += "}"; + if (i != values.Count - 1) + enums += ","; + enums += "\n"; + } + enums += "\t\t\t);\n"; + } + return enums; + } + + /// + /// 用法: + /// bindingGen <目录> + /// + /// + static void Main(string[] args) + { + if (args.Length < 1) + return; + + string dir = args[0]; + + Console.WriteLine("源目录: " + dir); + + if (!Directory.Exists(dir)) + return; + + string reg_class = @"(?<=Portable\<)[0-9a-zA-Z]+(?=\>)"; + string reg_abclass = @"(?<=LUAX_DECL_ABSTRACT_FACTORY\s*\(\s*)[0-9a-zA-Z]+(?=\s*\))"; + string reg_methods = @"(?<=LUAX_DECL_METHOD\()[0-9a-zA-Z_]+(?=\))"; + string reg_enums = @"(?<=LUAX_DECL_ENUM\()[0-9a-zA-Z_]+(?=\s*[\),]+)"; + string reg_namespace = @"(?<=namespace\s)[0-9a-zA-Z]+(?=[\s\n]*\{)"; + + if (!Directory.Exists(dir + "/binding")) + { + Directory.CreateDirectory(dir + "/binding"); + } + + string[] files = Directory.GetFiles(dir); + for (int i = 0; i < files.Count(); ++i) + { + string file = files[i]; + if (!File.Exists(file)) + continue; + file = file.Replace('\\', '/'); + string name = file.Substring(file.LastIndexOf('/') + 1, file.LastIndexOf('.') - file.LastIndexOf('/') - 1); + string bindingFile = dir + "/binding/_" + name + ".cpp"; + if (File.Exists(bindingFile)) + continue; + string code = File.ReadAllText(file); + // 工厂和单例 + Match m = Regex.Match(code, reg_class); + string className = ""; + if (m.Success) + { + className = m.ToString(); + } + if (!m.Success) + { + // 抽象类,不会继承Portable模板 + Match abstract_m = Regex.Match(code, reg_abclass); + if (!abstract_m.Success) + continue; + className = abstract_m.ToString(); + } + MatchCollection mc = Regex.Matches(code, reg_namespace); + // 应该两个名称空间 + if (mc.Count != 2) + { + Console.WriteLine("Error: 源文件没有两个名称空间 " + file); + continue; + } + string namespace1 = mc[0].ToString(); + string namespace2 = mc[1].ToString(); + // 名称空间内的内容 + string content = ""; + mc = Regex.Matches(code, reg_methods); + content += String.Format(registry, className, make_register_methods(mc)); + mc = Regex.Matches(code, reg_enums); + content += String.Format(postprocess, className, make_register_enum(mc, code)); + mc = Regex.Matches(code, reg_methods); + content += make_impl_methods(mc, className); + string binding = String.Format(output, name, namespace1, namespace2, content); + Console.WriteLine("输出: " + bindingFile); + File.WriteAllText(bindingFile, binding); + } + } + } +} diff --git a/Build/tools/bindingGen/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Build/tools/bindingGen/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..78a75d8 Binary files /dev/null and b/Build/tools/bindingGen/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Build/tools/bindingGen/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Build/tools/bindingGen/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Build/tools/bindingGen/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Build/tools/bindingGen/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Build/tools/bindingGen/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Build/tools/bindingGen/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/Build/tools/bindingGen/obj/Debug/bindingGen.csproj.FileListAbsolute.txt b/Build/tools/bindingGen/obj/Debug/bindingGen.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..c868e47 --- /dev/null +++ b/Build/tools/bindingGen/obj/Debug/bindingGen.csproj.FileListAbsolute.txt @@ -0,0 +1,10 @@ +D:\Asura\build\tools\bindingGen\bin\Debug\bindingGen.exe.config +D:\Asura\build\tools\bindingGen\bin\Debug\bindingGen.exe +D:\Asura\build\tools\bindingGen\bin\Debug\bindingGen.pdb +D:\Documents\VisualStudio2017\Projects\Asura\bin\win64\bindingGen.exe.config +D:\Documents\VisualStudio2017\Projects\Asura\bin\win64\bindingGen.exe +D:\Documents\VisualStudio2017\Projects\Asura\bin\win64\bindingGen.pdb +D:\Documents\VisualStudio2017\Projects\Asura\Build\tools\bindingGen\obj\Debug\bindingGen.csprojAssemblyReference.cache +D:\Documents\VisualStudio2017\Projects\Asura\Build\tools\bindingGen\obj\Debug\bindingGen.csproj.CoreCompileInputs.cache +D:\Documents\VisualStudio2017\Projects\Asura\Build\tools\bindingGen\obj\Debug\bindingGen.exe +D:\Documents\VisualStudio2017\Projects\Asura\Build\tools\bindingGen\obj\Debug\bindingGen.pdb diff --git a/Build/tools/bindingGen/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/Build/tools/bindingGen/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..06f4073 Binary files /dev/null and b/Build/tools/bindingGen/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Build/tools/bindingGen/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Build/tools/bindingGen/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Build/tools/bindingGen/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Build/tools/bindingGen/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Build/tools/bindingGen/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Build/tools/bindingGen/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/Build/tools/bindingGen/obj/Release/bindingGen.csproj.CoreCompileInputs.cache b/Build/tools/bindingGen/obj/Release/bindingGen.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..93b7e43 --- /dev/null +++ b/Build/tools/bindingGen/obj/Release/bindingGen.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +76869cb9eeaafde93fc35e764d87dc7f1f272b2f diff --git a/Build/tools/bindingGen/obj/Release/bindingGen.csproj.FileListAbsolute.txt b/Build/tools/bindingGen/obj/Release/bindingGen.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..eb453d0 --- /dev/null +++ b/Build/tools/bindingGen/obj/Release/bindingGen.csproj.FileListAbsolute.txt @@ -0,0 +1,3 @@ +D:\Asura\build\tools\bindingGen\bin\Release\bindingGen.exe.config +D:\Asura\build\tools\bindingGen\bin\Release\bindingGen.exe +D:\Asura\build\tools\bindingGen\bin\Release\bindingGen.pdb diff --git a/Build/tools/bindingGen/obj/Release/bindingGen.csprojAssemblyReference.cache b/Build/tools/bindingGen/obj/Release/bindingGen.csprojAssemblyReference.cache new file mode 100644 index 0000000..d31b6fe Binary files /dev/null and b/Build/tools/bindingGen/obj/Release/bindingGen.csprojAssemblyReference.cache differ diff --git a/Build/tools/bindingGen/obj/Release/bindingGen.exe b/Build/tools/bindingGen/obj/Release/bindingGen.exe new file mode 100644 index 0000000..c61ceae Binary files /dev/null and b/Build/tools/bindingGen/obj/Release/bindingGen.exe differ diff --git a/Build/tools/cembed/cembed.vcxproj b/Build/tools/cembed/cembed.vcxproj new file mode 100644 index 0000000..5ee4263 --- /dev/null +++ b/Build/tools/cembed/cembed.vcxproj @@ -0,0 +1,123 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {68FB36CB-C478-4158-A0BC-905B65340AE9} + cembed + 10.0.17134.0 + + + + Application + true + v141 + MultiByte + + + Application + false + v141 + true + MultiByte + + + Application + true + v141 + MultiByte + + + Application + false + v141 + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + Level3 + Disabled + true + true + + + + + Level3 + Disabled + true + true + + + + + Level3 + MaxSpeed + true + true + true + true + + + true + true + + + + + Level3 + MaxSpeed + true + true + true + true + + + true + true + + + + + + + + + \ No newline at end of file diff --git a/Build/tools/cembed/cembed.vcxproj.filters b/Build/tools/cembed/cembed.vcxproj.filters new file mode 100644 index 0000000..10ff2a3 --- /dev/null +++ b/Build/tools/cembed/cembed.vcxproj.filters @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Build/tools/cembed/cembed.vcxproj.user b/Build/tools/cembed/cembed.vcxproj.user new file mode 100644 index 0000000..be25078 --- /dev/null +++ b/Build/tools/cembed/cembed.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file -- cgit v1.1-26-g67d0