#ifndef BACKEND_NINJA_HPP #define BACKEND_NINJA_HPP #include "../../include/Dependency.hpp" #include "../../include/Result.hpp" #include "../../include/Linker.hpp" #include #include #include namespace backend { class Ninja { public: enum class LibraryType { EXECUTABLE, DYNAMIC, STATIC }; Ninja(LibraryType libraryType = LibraryType::EXECUTABLE); void addSourceFile(const char *filepath); sibs::Result createBuildFile(const std::string &packageName, const std::vector &dependencies, const char *savePath, sibs::LinkerFlagCallbackFunc linkerFlagCallbackFunc = nullptr); sibs::Result build(const char *buildFilePath); private: bool containsSourceFile(const char *filepath) const; sibs::Result getLinkerFlags(const std::vector &dependencies, sibs::LinkerFlagCallbackFunc linkerFlagCallbackFunc) const; private: std::vector sourceFiles; LibraryType libraryType; }; } #endif //BACKEND_NINJA_HPP