Files
2025-09-10 04:09:26 +03:00

44 lines
1.5 KiB
C#

using System;
using System.IO;
using System.Linq;
class Program {
static void Main(string[] args) {
// Resolve vk.xml path
string vkXml =
args.FirstOrDefault(a => a.EndsWith("vk.xml", StringComparison.OrdinalIgnoreCase))
?? GuessVkXmlFromEnv()
?? @"C:\VulkanSDK\1.4.313.0\share\vulkan\registry\vk.xml";
if (!File.Exists(vkXml)) {
Console.Error.WriteLine($"vk.xml not found: {vkXml}");
Environment.Exit(1);
}
// Output dir (.../out/VulkanPP)
string outRoot = args.FirstOrDefault(a => a.StartsWith("--out="))?.Substring("--out=".Length)
?? Path.Combine(Environment.CurrentDirectory, "out");
string outDir = Path.Combine(outRoot, "VulkanPP");
Directory.CreateDirectory(outDir);
Console.WriteLine($"Parsing: {vkXml}");
var spec = VkSpec.Load(vkXml);
// Optional sugar methods (empty by default)
var sugar = Array.Empty<SugarClassSpec>();
Console.WriteLine($"Generating to: {outDir}");
var gen = new Generator(spec, outDir, sugar);
gen.GenerateAll();
Console.WriteLine("Done.");
}
static string? GuessVkXmlFromEnv() {
var sdk = Environment.GetEnvironmentVariable("VULKAN_SDK");
if (string.IsNullOrWhiteSpace(sdk)) return null;
string candidate = Path.Combine(sdk, "share", "vulkan", "registry", "vk.xml");
return File.Exists(candidate) ? candidate : null;
}
}