diff options
-rw-r--r-- | backend/ninja/Ninja.cpp | 5 | ||||
-rw-r--r-- | backend/ninja/Ninja.hpp | 1 | ||||
-rw-r--r-- | src/GlobalLib.cpp | 39 |
3 files changed, 29 insertions, 16 deletions
diff --git a/backend/ninja/Ninja.cpp b/backend/ninja/Ninja.cpp index 20e2374..1185366 100644 --- a/backend/ninja/Ninja.cpp +++ b/backend/ninja/Ninja.cpp @@ -51,6 +51,11 @@ namespace backend sourceFiles.emplace_back(filepath); } + const std::vector<std::string>& Ninja::getSourceFiles() const + { + return sourceFiles; + } + bool Ninja::containsSourceFile(const char *filepath) const { for(const string &sourceFile : sourceFiles) diff --git a/backend/ninja/Ninja.hpp b/backend/ninja/Ninja.hpp index 71b12a5..3ccee1e 100644 --- a/backend/ninja/Ninja.hpp +++ b/backend/ninja/Ninja.hpp @@ -24,6 +24,7 @@ namespace backend Ninja(LibraryType libraryType = LibraryType::EXECUTABLE); void addSourceFile(const char *filepath); + const std::vector<std::string>& getSourceFiles() const; sibs::Result<bool> createBuildFile(const std::string &packageName, const std::vector<sibs::Dependency> &dependencies, const char *savePath, sibs::LinkerFlagCallbackFunc linkerFlagCallbackFunc = nullptr); sibs::Result<bool> build(const char *buildFilePath); private: diff --git a/src/GlobalLib.cpp b/src/GlobalLib.cpp index 44652b8..cbd822e 100644 --- a/src/GlobalLib.cpp +++ b/src/GlobalLib.cpp @@ -124,21 +124,28 @@ namespace sibs } }); - // TODO: Create build path if it doesn't exist - string debugBuildPath = packageDir + "/build/debug"; - Result<bool> buildFileResult = ninja.createBuildFile(sibsConfig.getPackageName(), sibsConfig.getDependencies(), debugBuildPath.c_str(), linkerFlagCallbackFunc); - if(buildFileResult.isErr()) - return Result<string>::Err(buildFileResult.getErrMsg()); - - Result<bool> buildResult = ninja.build(debugBuildPath.c_str()); - if(buildResult.isErr()) - return Result<string>::Err(buildResult.getErrMsg()); - - string staticLibPath = debugBuildPath; - staticLibPath += "/lib"; - staticLibPath += name; - staticLibPath += ".a"; - linkerFlagCallbackFunc(staticLibPath); - return Result<string>::Ok(staticLibPath); + if(ninja.getSourceFiles().empty()) + { + return Result<string>::Ok(""); + } + else + { + // TODO: Create build path if it doesn't exist + string debugBuildPath = packageDir + "/build/debug"; + Result<bool> buildFileResult = ninja.createBuildFile(sibsConfig.getPackageName(), sibsConfig.getDependencies(), debugBuildPath.c_str(), linkerFlagCallbackFunc); + if (buildFileResult.isErr()) + return Result<string>::Err(buildFileResult.getErrMsg()); + + Result<bool> buildResult = ninja.build(debugBuildPath.c_str()); + if (buildResult.isErr()) + return Result<string>::Err(buildResult.getErrMsg()); + + string staticLibPath = debugBuildPath; + staticLibPath += "/lib"; + staticLibPath += name; + staticLibPath += ".a"; + linkerFlagCallbackFunc(staticLibPath); + return Result<string>::Ok(staticLibPath); + } } }
\ No newline at end of file |