From dea9b63ed255d7ff4727f67cbb14f58b7af99c9d Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Sun, 1 Mar 2026 02:37:02 +0100 Subject: [PATCH] std.pcm target --- implementations/Crafter.Build-Configuration.cpp | 8 ++++++++ implementations/Crafter.Build-Project.cpp | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/implementations/Crafter.Build-Configuration.cpp b/implementations/Crafter.Build-Configuration.cpp index 114de04..94fab7b 100644 --- a/implementations/Crafter.Build-Configuration.cpp +++ b/implementations/Crafter.Build-Configuration.cpp @@ -27,6 +27,7 @@ import :Project; //import :Dependency; import :Shader; import :Module; +import :Command; namespace fs = std::filesystem; @@ -59,6 +60,9 @@ namespace Crafter { } if(config.contains("target")) { target = config["target"].get(); + } else { + target = RunCommand("clang -print-target-triple"); + target.pop_back(); } if(config.contains("debug")) { debug = config["debug"].get(); @@ -267,6 +271,10 @@ namespace Crafter { self[count] = '\0'; const fs::path cacheDir = (fs::path(self).parent_path().parent_path() / "cloneCache").string(); + if (!fs::exists(cacheDir)) { + fs::create_directories(cacheDir); + } + if (!fs::exists(cacheDir/depFolder)) { std::string cloneCommand = std::format("cd {} && git clone {} && cd {}", cacheDir.string(), path.string(), depFolder); diff --git a/implementations/Crafter.Build-Project.cpp b/implementations/Crafter.Build-Project.cpp index ae615f4..9551456 100644 --- a/implementations/Crafter.Build-Project.cpp +++ b/implementations/Crafter.Build-Project.cpp @@ -330,7 +330,7 @@ namespace Crafter { fs::path stdCc = fs::path(std::format("/usr/x86_64-w64-mingw32/include/c++/{}/bits/std.cc", mingWversion)); if(!fs::exists(stdPcm) || fs::last_write_time(stdPcm) < fs::last_write_time(stdCc)) { - std::string result = RunCommand(std::format("cp {} {}/std.cppm\nclang++ --target={} -std=c++26 -Wno-reserved-identifier -Wno-reserved-module-identifier --precompile {}/std.cppm -o {}", stdCc.string(), exeDir.string(), config.target, exeDir.string(), stdPcm)); + std::string result = RunCommand(std::format("cp {} {}/{}/std.cppm\nclang++ --target={} -std=c++26 -Wno-reserved-identifier -Wno-reserved-module-identifier --precompile {}/{}/std.cppm -o {}", stdCc.string(), exeDir.string(), config.target, config.target, exeDir.string(), config.target, stdPcm)); if(result != "") { throw std::runtime_error(result); } @@ -363,7 +363,7 @@ namespace Crafter { fs::path stdCc = fs::path(std::format("/usr/include/c++/{}/bits/std.cc", gccVersion)); if(!fs::exists(stdPcm) || fs::last_write_time(stdPcm) < fs::last_write_time(stdCc)) { - std::string result = RunCommand(std::format("cp {} {}/std.cppm\nclang++ --target={} -std=c++26 -Wno-reserved-identifier -Wno-reserved-module-identifier --precompile {}/std.cppm -o {}", config.target, stdCc.string(), exeDir.string(), config.target, exeDir.string(), stdPcm)); + std::string result = RunCommand(std::format("cp {} {}/{}/std.cppm\nclang++ --target={} -std=c++26 -Wno-reserved-identifier -Wno-reserved-module-identifier --precompile {}/{}/std.cppm -o {}", stdCc.string(), exeDir.string(), config.target, config.target, exeDir.string(), config.target, stdPcm)); if(result != "") { throw std::runtime_error(result); }