From 2ed7d0b09caa872e44e2eb09b09b2387e93f9b34 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 9 Dec 2017 17:27:08 +0100 Subject: Add project compilation after ninja file is created --- backend/ninja/Ninja.cpp | 18 +++++++++++++++++- backend/ninja/Ninja.hpp | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'backend/ninja') diff --git a/backend/ninja/Ninja.cpp b/backend/ninja/Ninja.cpp index 683fb67..73a6dc3 100644 --- a/backend/ninja/Ninja.cpp +++ b/backend/ninja/Ninja.cpp @@ -42,7 +42,7 @@ namespace backend int exitCode; }; - Result exec(const char *cmd) + Result exec(const char *cmd, bool print = false) { char buffer[128]; string result; @@ -53,7 +53,11 @@ namespace backend while(!feof(pipe)) { if(fgets(buffer, 128, pipe)) + { result += buffer; + if(print) + printf("%s", buffer); + } } ExecResult execResult; @@ -258,4 +262,16 @@ namespace backend printf("Created ninja build file: %s\n", savePath); return Result::Ok(true); } + + Result Ninja::build(const char *buildFilePath) + { + string command = "ninja -C '"; + command += buildFilePath; + command += "'"; + Result execResult = exec(command.c_str(), true); + if(execResult.isOk()) + return Result::Ok(true); + else + return Result::Err(execResult.getErrMsg()); + } } \ No newline at end of file diff --git a/backend/ninja/Ninja.hpp b/backend/ninja/Ninja.hpp index 1ba20c7..fdaa890 100644 --- a/backend/ninja/Ninja.hpp +++ b/backend/ninja/Ninja.hpp @@ -14,6 +14,7 @@ namespace backend public: void addSourceFile(const char *filepath); sibs::Result createBuildFile(const std::string &packageName, const std::vector &dependencies, const char *savePath); + sibs::Result build(const char *buildFilePath); private: bool containsSourceFile(const char *filepath) const; sibs::Result getLinkerFlags(const std::vector &dependencies) const; -- cgit v1.2.3