From c0c85b67516653c181fbce7c61c2df3e31e4edd8 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 18 Dec 2014 07:14:53 +0200 Subject: Initial support for loading dependency info from buildfiles Also a new iteration on the overall architecture. Now, for the first time, build can read the buildfile and build itself. g++-4.9 -std=c++14 -g -I.. -o bd bd.cxx algorithm.cxx scope.cxx parser.cxx lexer.cxx target.cxx prerequisite.cxx rule.cxx native.cxx cxx/target.cxx cxx/rule.cxx process.cxx timestamp.cxx path.cxx g++-4.9 -std=c++14 -g -I../../.. -o driver driver.cxx ../../../build/lexer.cxx g++-4.9 -std=c++14 -g -I../../.. -o driver driver.cxx ../../../build/lexer.cxx ../../../build/parser.cxx ../../../build/scope.cxx ../../../build/target.cxx ../../../build/native.cxx ../../../build/prerequisite.cxx ../../../build/path.cxx ../../../build/timestamp.cxx --- build/prerequisite | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 build/prerequisite (limited to 'build/prerequisite') diff --git a/build/prerequisite b/build/prerequisite new file mode 100644 index 0000000..e58532d --- /dev/null +++ b/build/prerequisite @@ -0,0 +1,53 @@ +// file : build/prerequisite -*- C++ -*- +// copyright : Copyright (c) 2014-2015 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#ifndef BUILD_PREREQUISITE +#define BUILD_PREREQUISITE + +#include +#include +#include +#include // move +#include + +#include + +namespace build +{ + class scope; + class target; + class target_type; + + class prerequisite + { + public: + typedef build::target target_type; + typedef build::target_type target_type_type; + typedef build::scope scope_type; + + prerequisite (const target_type_type& t, + std::string n, + path d, + scope_type& s) + : type (t), name (std::move (n)), directory (std::move (d)), + scope (s), target (0) {} + + public: + const target_type_type& type; + const std::string name; + const path directory; // Normalized absolute or relative (to scope). + scope_type& scope; + target_type* target; // NULL if not yet resolved. + }; + + std::ostream& + operator<< (std::ostream&, const prerequisite&); + + bool + operator< (const prerequisite&, const prerequisite&); + + typedef std::set prerequisite_set; +} + +#endif // BUILD_PREREQUISITE -- cgit v1.1