diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2014-12-10 10:20:26 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2014-12-10 10:20:26 +0200 |
commit | 5e9eb843f6ccadfb47fa603260783425da9e7805 (patch) | |
tree | 3778f76de37f5258a07a8fae0e58a843b8a49f1d /build/rule | |
parent | 20e3aedeb7df742c38276fb41cae8f3eb027b6dd (diff) |
Add rules
g++-4.9 -std=c++11 -g -I.. -o bd bd.cxx target.cxx native.cxx rule.cxx cxx/rule.cxx cxx/target.cxx process.cxx timestamp.cxx path.cxx
Diffstat (limited to 'build/rule')
-rw-r--r-- | build/rule | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/build/rule b/build/rule new file mode 100644 index 0000000..6bb58fe --- /dev/null +++ b/build/rule @@ -0,0 +1,39 @@ +// file : build/rule -*- C++ -*- +// copyright : Copyright (c) 2014-2015 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#ifndef BUILD_RULE +#define BUILD_RULE + +#include <typeindex> +#include <functional> // reference_wrapper +#include <unordered_map> + +#include <build/target> + +namespace build +{ + class rule + { + public: + virtual recipe + match (target&) const = 0; + }; + + typedef std::unordered_multimap<std::type_index, + std::reference_wrapper<rule>> rule_map; + + extern rule_map rules; + + class default_path_rule: public rule + { + public: + virtual recipe + match (target&) const; + + static target_state + update (target&); + }; +} + +#endif // BUILD_RULE |