#pragma once #include "DepNode.h" #include "BXParser.h" #include "toolchain.h" class CompileStep: public DepNode { public: CompileStep(std::string path, toolchain::FileType type, BXVariables vars): path_(std::move(path)), type_(type), variables_(std::move(vars)) {} private: std::string path_; toolchain::FileType type_; bool checkHasChanged(const std::string &outDir) override; void doBuild(const std::string &outDir) override; void doWriteCompDB(const std::string &outDir, compdb::Writer &w) override; std::vector getPublicLDFlags(const std::string &outDir) override; std::vector getPublicLDLibs(const std::string &outDir) override; std::vector getPublicObjects(const std::string &outDir) override; bool hasVariables_ = false; BXVariables variables_; BXVariables &variables(); bool hasFlags_ = false; std::vector flags_; std::vector &flags(); bool hasCompileCommand_ = false; std::vector compileCommand_; std::vector &compileCommand(const std::string &outDir); std::string confPath(const std::string &outDir) { return outDir + '/' + path_ + ".bx"; } };