From 33872fc72e40331c23a82f2b5ec3e509c7191d7a Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 16 Dec 2017 18:23:00 +0100 Subject: Modify ninja interface to build after creating build file This setup is needed because we need to build the project before building tests --- backend/ninja/Ninja.cpp | 8 ++++++-- backend/ninja/Ninja.hpp | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'backend') diff --git a/backend/ninja/Ninja.cpp b/backend/ninja/Ninja.cpp index 2402ec1..6e9079a 100644 --- a/backend/ninja/Ninja.cpp +++ b/backend/ninja/Ninja.cpp @@ -196,7 +196,7 @@ namespace backend return Result::Ok(true); } - Result Ninja::createBuildFile(const SibsConfig &config, const char *savePath, LinkerFlagCallbackFunc staticLinkerFlagCallbackFunc, LinkerFlagCallbackFunc dynamicLinkerFlagCallback) + Result Ninja::build(const SibsConfig &config, const char *savePath, LinkerFlagCallbackFunc staticLinkerFlagCallbackFunc, LinkerFlagCallbackFunc dynamicLinkerFlagCallback) { // TODO: Do not quit here if no source files are provided. The source-less project could have dependencies if(sourceFiles.empty()) @@ -368,6 +368,10 @@ namespace backend printf("Created ninja build file: %s\n", ninjaBuildFilePath.c_str()); + Result buildResult = build(savePath); + if(!buildResult) + return buildResult; + Result buildTestResult = buildTests(projectGeneratedBinary); if(!buildTestResult) return buildTestResult; @@ -430,7 +434,7 @@ namespace backend if(!ninja.getSourceFiles().empty()) { string debugBuildPath = testSourceDir + "/sibs-build/debug"; - Result buildFileResult = ninja.createBuildFile(sibsTestConfig, debugBuildPath.c_str()); + Result buildFileResult = ninja.build(sibsTestConfig, debugBuildPath.c_str()); if (!buildFileResult) return buildFileResult; diff --git a/backend/ninja/Ninja.hpp b/backend/ninja/Ninja.hpp index 7013f78..ea73c81 100644 --- a/backend/ninja/Ninja.hpp +++ b/backend/ninja/Ninja.hpp @@ -28,14 +28,14 @@ namespace backend void addTestSourceDir(const char *dir); void addDependency(const std::string &binaryFile); const std::vector& getSourceFiles() const; - sibs::Result createBuildFile(const sibs::SibsConfig &config, const char *savePath, sibs::LinkerFlagCallbackFunc staticLinkerFlagCallbackFunc = nullptr, sibs::LinkerFlagCallbackFunc dynamicLinkerFlagCallback = nullptr); - sibs::Result build(const char *buildFilePath); + sibs::Result build(const sibs::SibsConfig &config, const char *savePath, sibs::LinkerFlagCallbackFunc staticLinkerFlagCallbackFunc = nullptr, sibs::LinkerFlagCallbackFunc dynamicLinkerFlagCallback = nullptr); private: sibs::Result buildTests(const std::string &projectGeneratedBinary); bool containsSourceFile(const std::string &filepath) const; bool containsTestSourceDir(const std::string &dir) const; bool containsDependency(const std::string &dependency) const; sibs::Result getLinkerFlags(const std::vector &dependencies, sibs::LinkerFlagCallbackFunc staticLinkerFlagCallbackFunc, sibs::LinkerFlagCallbackFunc dynamicLinkerFlagCallback) const; + sibs::Result build(const char *buildFilePath); private: std::vector sourceFiles; std::vector testSourceDirs; -- cgit v1.2.3