From ee825bf2e966a1b565473753adb3f2b74f6d0ce4 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Fri, 11 Jun 2021 21:29:09 +0200 Subject: Flags'n'stuff --- cppbuild.cc | 8 +++++++- libcppbuild.cc | 15 ++++++++++----- task.cc | 7 +++++-- task.h | 3 +++ 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/cppbuild.cc b/cppbuild.cc index b06b082..275512f 100644 --- a/cppbuild.cc +++ b/cppbuild.cc @@ -14,6 +14,12 @@ BuildConfiguration configs() // source files "src/foo.cc", "src/bar.cc", - } + }, + // cxx flags + "-g -Wall -Werror -std=c++17", + // c flags + "-g -Wall -Werror", + // linker flags + "-lm", }; } diff --git a/libcppbuild.cc b/libcppbuild.cc index 46f1bfc..35eff8f 100644 --- a/libcppbuild.cc +++ b/libcppbuild.cc @@ -11,20 +11,23 @@ int main(int argc, const char* argv[]) { Settings settings; + + // TODO: Set from commandline settings.builddir = "build/foo"; + std::filesystem::path builddir(settings.builddir); std::filesystem::create_directories(builddir); - auto project = configs(); - std::string output = builddir / project.target; - const auto& files = project.sources; + auto config = configs(); + std::string output = builddir / config.target; + const auto& files = config.sources; std::vector objects; std::vector tasks; for(const auto& file : files) { - tasks.emplace_back(project, settings, file); + tasks.emplace_back(config, settings, file); objects.push_back(tasks.back().targetFile); } @@ -91,7 +94,9 @@ int main(int argc, const char* argv[]) { objectlist += object + " "; } - std::string compiler = "g++ " + objectlist + " -o " + output; + std::string compiler = "g++ " + objectlist + " " + + config.ldflags + " " + + "-o " + output; std::cout << compiler << "\n"; if(system(compiler.data())) { diff --git a/task.cc b/task.cc index 0b4240f..19e4712 100644 --- a/task.cc +++ b/task.cc @@ -84,6 +84,8 @@ std::vector readDeps(const std::string& depFile) Task::Task(const BuildConfiguration& config, const Settings& settings, const std::string& source) + : config(config) + , settings(settings) { sourceFile = source; targetFile = settings.builddir / sourceFile.stem(); @@ -155,8 +157,9 @@ void Task::start() if(recompile) { std::string cmd = - "g++ -MMD -c " + std::string(sourceFile) + - " -o " + std::string(targetFile); + "g++ -MMD -c " + std::string(sourceFile) + " " + + config.cxxflags + " " + + "-o " + std::string(targetFile); std::cout << cmd << "\n"; if(system(cmd.data())) diff --git a/task.h b/task.h index d788645..ac56e8a 100644 --- a/task.h +++ b/task.h @@ -29,4 +29,7 @@ public: std::filesystem::path depsFile; std::future future; + + const BuildConfiguration& config; + const Settings& settings; }; -- cgit v1.2.3