From 76c08dcbfdc6cd99754f70fcf2da10120e42cbbf Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Sun, 1 Mar 2026 16:13:04 +0100 Subject: [PATCH] windows build fixes --- implementations/Crafter.Build-Command.cpp | 42 +++++++++++++++++++ .../Crafter.Build-Configuration.cpp | 2 +- interfaces/Crafter.Build-Command.cppm | 1 + 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/implementations/Crafter.Build-Command.cpp b/implementations/Crafter.Build-Command.cpp index 686e748..20c65de 100644 --- a/implementations/Crafter.Build-Command.cpp +++ b/implementations/Crafter.Build-Command.cpp @@ -175,6 +175,48 @@ namespace Crafter { } } + void AutoDetect() { + std::cout << "bruh 1" << std::endl; + fs::path exeDir = GetPath(); + std::cout << "bruh 2" << std::endl; + fs::create_directories(exeDir/config.target); + std::cout << "bruh 3" << std::endl; + std::string stdPcm = std::format("{}\\{}\\std.pcm", exeDir.string(), config.target); + std::string stdcppm = std::format("{}\\{}\\std.cppm", exeDir.string(), config.target); + + std::cout << stdPcm << std::endl; + std::cout << stdcppm << std::endl; + + std::string directoryPath = RunCommand("C:\\Program Files (x86)\\Microsoft Visual Studio\\Installer\\vswhere.exe -latest -property installationPath") + "\\VC\\Tools"; + + std::cout << directoryPath << std::endl; + + std::vector folders; + + // Iterate through the directory and collect all subdirectories + for (const auto& entry : fs::directory_iterator(directoryPath+"\\MSVC")) { + if (entry.is_directory()) { + folders.push_back(entry.path().filename().string()); + } + } + + std::cout << "bruh 4" << std::endl; + + // Sort the folders by version in descending order + std::sort(folders.begin(), folders.end(), [](const std::string& a, const std::string& b) { + return std::lexicographical_compare(b.begin(), b.end(), a.begin(), a.end()); + }); + + std::cout << "bruh 5" << std::endl; + + std::string msvcVersion = folders.front(); + + std::cout << msvcVersion << std::endl; + + clDir = std::format("{}\\MSVC\\{}\\bin\\Hostx64\\x64", directoryPath, msvcVersion); + clangClDir = std::format("{}\\Llvm\\x64\\bin", directoryPath); + } + #else std::string RunCommand(const std::string_view cmd) { diff --git a/implementations/Crafter.Build-Configuration.cpp b/implementations/Crafter.Build-Configuration.cpp index 31d353a..095967b 100644 --- a/implementations/Crafter.Build-Configuration.cpp +++ b/implementations/Crafter.Build-Configuration.cpp @@ -72,7 +72,7 @@ namespace Crafter { target = RunCommand("clang -print-target-triple"); #endif #if defined(CRAFTER_BUILD_CONFIGURATION_TARGET_x86_64_pc_windows_msvc) || defined(CRAFTER_BUILD_CONFIGURATION_TARGET_x86_64_w64_mingw32) - GetPath(); + AutoDetect(); target = RunCommand(std::format("{}\\clang-cl.exe -print-target-triple", clangClDir)); #endif target.pop_back(); diff --git a/interfaces/Crafter.Build-Command.cppm b/interfaces/Crafter.Build-Command.cppm index 638574d..3b05507 100644 --- a/interfaces/Crafter.Build-Command.cppm +++ b/interfaces/Crafter.Build-Command.cppm @@ -41,6 +41,7 @@ namespace Crafter { #if defined(CRAFTER_BUILD_CONFIGURATION_TARGET_x86_64_pc_windows_msvc) || defined(CRAFTER_BUILD_CONFIGURATION_TARGET_x86_64_w64_mingw32) export std::string clDir; export std::string clangClDir; + export void AutoDetect(); #endif export std::string RunCommand(const std::string_view cmd); export void RunCommandIgnore(const std::string_view cmd);