// file : build/cxx/rule -*- C++ -*- // copyright : Copyright (c) 2014-2015 Code Synthesis Tools CC // license : MIT; see accompanying LICENSE file #ifndef BUILD_CXX_RULE #define BUILD_CXX_RULE #include namespace build { class scope; namespace cxx { class cxx; // @@ Can't we do match(obj&) and then registration code extracts // that. And no virtuals? // class compile: public rule { public: virtual void* match (action, target&, const std::string& hint) const; virtual recipe apply (action, target&, void*) const; static target_state perform_update (action, target&); private: void inject_prerequisites (action, target&, const cxx&, scope&) const; }; class link: public rule { public: enum class type {exe, liba, libso}; virtual void* match (action, target&, const std::string& hint) const; virtual recipe apply (action, target&, void*) const; static target_state perform_update (action, target&); }; } } #endif // BUILD_CXX_RULE