From af7eb61c3d92ab18f6aa6c139ac7211a908a24ee Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Wed, 12 Feb 2025 21:35:25 +0100 Subject: [PATCH] bugfixes --- Crafter.Build-ModuleFile.cpp | 10 ++++++++-- Crafter.Build-Project.cpp | 28 ++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/Crafter.Build-ModuleFile.cpp b/Crafter.Build-ModuleFile.cpp index f4360b5..2c8d6c9 100644 --- a/Crafter.Build-ModuleFile.cpp +++ b/Crafter.Build-ModuleFile.cpp @@ -100,11 +100,17 @@ void ModuleFile::Compile(std::string clangDir, const Configuration& config, fs:: flags+=flag; } - system(std::format("{} -std={} {}.cppm --precompile -march={} {} -fprebuilt-module-path={} -o {}.pcm {}", clangDir, config.standard, path.generic_string(), config.march, flags, pcmDir.generic_string(), (pcmDir/path.filename()).generic_string(), target).c_str()); + std::string march; + if(config.target != "wasm32-unknown-wasi"){ + march = std::format("-march={}", config.march); + } + + system(std::format("{} -std={} {}.cppm --precompile {} {} -fprebuilt-module-path={} -o {}.pcm {}", clangDir, config.standard, path.generic_string(), march, flags, pcmDir.generic_string(), (pcmDir/path.filename()).generic_string(), target).c_str()); recompiled = true; fileMutex.unlock(); - system(std::format("{} -std={} {}.pcm -fprebuilt-module-path={} -c -O{} -march={} {} -o {}.o {}", clangDir, config.standard, (pcmDir/path.filename()).generic_string(), pcmDir.generic_string(), config.optimizationLevel, config.march, flags, (config.buildDir/path.filename()).generic_string(), target).c_str()); + + system(std::format("{} -std={} {}.pcm -fprebuilt-module-path={} -c -O{} {} {} -o {}.o {}", clangDir, config.standard, (pcmDir/path.filename()).generic_string(), pcmDir.generic_string(), config.optimizationLevel, march, flags, (config.buildDir/path.filename()).generic_string(), target).c_str()); } else { fileMutex.unlock(); } diff --git a/Crafter.Build-Project.cpp b/Crafter.Build-Project.cpp index 9f1bf1b..ae6512f 100644 --- a/Crafter.Build-Project.cpp +++ b/Crafter.Build-Project.cpp @@ -113,13 +113,20 @@ void Project::Build(Configuration config, fs::path outputDir, fs::path binDir) c for(std::int_fast32_t i = 0; i < depThreads.size(); i++) { if(config.dependencies[i].path.ends_with(".git")) { system(std::format("cd {} && git clone {}", config.buildDir, config.dependencies[i].path).c_str()); + config.dependencies[i].path = fs::path(config.dependencies[i].path).filename().replace_extension(); + Project project = Project::LoadFromJSON(fs::path(config.buildDir)/config.dependencies[i].path/"project.json"); + libs+=std::format(" -l{}", project.name); + depThreads[i] = std::thread([i, pcmDir, config, project, binDir]() { + project.Build(config.dependencies[i].configuration, pcmDir, binDir); + }); + } else{ + Project project = Project::LoadFromJSON(config.dependencies[i].path); + libs+=std::format(" -l{}", project.name); + depThreads[i] = std::thread([i, pcmDir, config, project, binDir]() { + project.Build(config.dependencies[i].configuration, pcmDir, binDir); + }); } - config.dependencies[i].path = fs::path(config.dependencies[i].path).filename().replace_extension(); - Project project = Project::LoadFromJSON(fs::path(config.buildDir)/config.dependencies[i].path/"project.json"); - libs+=std::format(" -l{}", project.name); - depThreads[i] = std::thread([i, pcmDir, config, project, binDir]() { - project.Build(config.dependencies[i].configuration, pcmDir, binDir); - }); + } std::string name = this->name; @@ -160,12 +167,17 @@ void Project::Build(Configuration config, fs::path outputDir, fs::path binDir) c // thread.join(); // } + std::string march; + if(config.target != "wasm32-unknown-wasi"){ + march = std::format("-march={}", config.march); + } + std::vector threads; for(std::uint_fast32_t i = 0; i < config.sourceFiles.size(); i++) { files+=std::format("{}_source.o ",(config.buildDir/config.sourceFiles[i].filename()).generic_string()); //if(!fs::exists((config.buildDir/config.sourceFiles[i].filename()).generic_string()+"_source.o") || fs::last_write_time(config.sourceFiles[i].generic_string()+".cpp") > fs::last_write_time((config.buildDir/config.sourceFiles[i].filename()).generic_string()+"_source.o")) { - threads.emplace_back([i, &config, pcmDir, target, clangDir, flags](){ - system(std::format("{} -std={} {}.cpp -fprebuilt-module-path={} -c -O{} -march={} {} -o {}_source.o {}", clangDir, config.standard, config.sourceFiles[i].generic_string(), pcmDir.generic_string(), config.optimizationLevel, config.march, flags, (config.buildDir/config.sourceFiles[i].filename()).generic_string(), target).c_str()); + threads.emplace_back([i, &config, pcmDir, target, clangDir, flags, march](){ + system(std::format("{} -std={} {}.cpp -fprebuilt-module-path={} -c -O{} {} {} -o {}_source.o {}", clangDir, config.standard, config.sourceFiles[i].generic_string(), pcmDir.generic_string(), config.optimizationLevel, march, flags, (config.buildDir/config.sourceFiles[i].filename()).generic_string(), target).c_str()); }); //} }