// file : build2/spec -*- C++ -*- // copyright : Copyright (c) 2014-2017 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file #ifndef BUILD2_SPEC #define BUILD2_SPEC #include #include namespace build2 { class scope; struct targetspec { typedef build2::name name_type; explicit targetspec (name_type n): name (move (n)) {} targetspec (dir_path sb, name_type n) : src_base (move (sb)), name (move (n)) {} dir_path src_base; name_type name; // The rest is calculated and cached. // scope* root_scope = nullptr; dir_path out_base; path buildfile; }; struct opspec: vector { opspec () = default; opspec (string n): name (move (n)) {} string name; }; struct metaopspec: vector { metaopspec () = default; metaopspec (string n): name (move (n)) {} string name; }; typedef vector buildspec; ostream& operator<< (ostream&, const targetspec&); ostream& operator<< (ostream&, const opspec&); ostream& operator<< (ostream&, const metaopspec&); ostream& operator<< (ostream&, const buildspec&); } #endif // BUILD2_SPEC