windows fix
Some checks failed
demo.yaml / windows fix (push) Failing after 0s

This commit is contained in:
Jorijn van der Graaf 2026-03-02 21:10:22 +01:00
commit fba632e745

View file

@ -123,40 +123,21 @@ namespace Crafter {
void BuildMsvcStdPcm(const Project& project, const Configuration& config) {
fs::path exeDir = GetPath();
fs::create_directories(exeDir/config.target);
const char* libcxx = std::getenv("LIBCXX_DIR");
if (!libcxx) {
std::cout << "LIBCXX_DIR environment variable not set" << std::endl;
throw std::runtime_error("LIBCXX_DIR environment variable not set");
}
std::string stdPcm = std::format("{}\\{}\\std.pcm", exeDir.string(), config.target);
std::string stdcppm = std::format("{}\\{}\\std.cppm", exeDir.string(), config.target);
std::string directoryPath = RunCommand("\"C:\\Program Files (x86)\\Microsoft Visual Studio\\Installer\\vswhere.exe\" -latest -property installationPath");
directoryPath.pop_back();
directoryPath += "\\VC\\Tools";
std::vector<std::string> 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());
}
}
// 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::string msvcVersion = folders.front();
std::string sourceFilePath = directoryPath + "\\MSVC\\" + msvcVersion + "\\modules\\std.ixx";
std::string stdcppm = std::format("{}\\modules\\c++\v1\\std.cppm", libcxx)
if(!fs::exists(stdPcm) || fs::last_write_time(stdPcm) < fs::last_write_time(sourceFilePath)) {
fs::copy(sourceFilePath, stdcppm, fs::copy_options::overwrite_existing);
std::string result = RunCommand(std::format("cd {}\\{} && {} && clang-cl.exe /EHsc /MD /std:c++latest --target=x86_64-pc-windows-msvc -Wno-include-angled-in-module-purview -Wno-reserved-identifier -Wno-reserved-module-identifier --precompile std.cppm -o std.pcm", exeDir.string(), config.target, vsVars, stdPcm));
std::string result = RunCommand(std::format("clang++ --target={} -march=native -mtune=native -isystem %LIBCXX_DIR%\\include\\c++\\v1 -nostdinc++ -nostdlib++ -std=c++26 -Wno-reserved-identifier -Wno-reserved-module-identifier --precompile %LIBCXX_DIR%\\modules\\c++\v1\\std.cppm -o {}", config.target stdPcm));
if(result != "") {
throw std::runtime_error(result);
}
result = RunCommand(std::format("cd {}\\{} && {} && cl.exe /std:c++latest /EHsc /nologo /W4 /MD /c \"{}\"", exeDir.string(), config.target, vsVars, sourceFilePath));
}
}