aboutsummaryrefslogtreecommitdiff
path: root/build2/prerequisite.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'build2/prerequisite.cxx')
-rw-r--r--build2/prerequisite.cxx120
1 files changed, 0 insertions, 120 deletions
diff --git a/build2/prerequisite.cxx b/build2/prerequisite.cxx
deleted file mode 100644
index 2eee32b..0000000
--- a/build2/prerequisite.cxx
+++ /dev/null
@@ -1,120 +0,0 @@
-// file : build2/prerequisite.cxx -*- C++ -*-
-// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#include <build2/prerequisite.hxx>
-
-#include <build2/scope.hxx>
-#include <build2/target.hxx>
-#include <build2/context.hxx>
-#include <build2/diagnostics.hxx>
-
-using namespace std;
-
-namespace build2
-{
- // prerequisite_key
- //
- ostream&
- operator<< (ostream& os, const prerequisite_key& pk)
- {
- if (pk.proj)
- os << *pk.proj << '%';
- //
- // Don't print scope if we are project-qualified or the prerequisite's
- // directory is absolute. In both these cases the scope is not used to
- // resolve it to target.
- //
- else if (!pk.tk.dir->absolute ())
- {
- // Avoid printing './' in './:...', similar to what we do for the
- // directory in target_key.
- //
- const dir_path& s (pk.scope->out_path ());
-
- if (stream_verb (os).path < 1)
- {
- const string& r (diag_relative (s, false));
-
- if (!r.empty ())
- os << r << ':';
- }
- else
- os << s << ':';
- }
-
- return os << pk.tk;
- }
-
- // prerequisite
- //
- static inline optional<string>
- to_ext (const string* e)
- {
- return e != nullptr ? optional<string> (*e) : nullopt;
- }
-
- prerequisite::
- prerequisite (const target_type& t)
- : proj (nullopt),
- type (t.type ()),
- dir (t.dir),
- out (t.out), // @@ If it's empty, then we treat as undetermined?
- name (t.name),
- ext (to_ext (t.ext ())),
- scope (t.base_scope ()),
- target (&t),
- vars (false /* global */)
- {
- }
-
- bool prerequisite::
- belongs (const target_type& t) const
- {
- const auto& p (t.prerequisites ());
- return !(p.empty () || this < &p.front () || this > &p.back ());
- }
-
- value& prerequisite::
- append (const variable& var, const target_type& t)
- {
- if (value* r = vars.find_to_modify (var).first)
- return *r;
-
- value& r (assign (var)); // NULL.
-
- // Note: pretty similar logic to target::append().
- //
- lookup l (t.find_original (var).first);
-
- if (l.defined ())
- r = *l; // Copy value (and type) from the target/outer scope.
-
- return r;
- }
-
- // include()
- //
- include_type
- include_impl (action a,
- const target& t,
- const string& v,
- const prerequisite& p,
- const target* m)
- {
- include_type r (false);
-
- if (v == "false") r = include_type::excluded;
- else if (v == "adhoc") r = include_type::adhoc;
- else if (v == "true") r = include_type::normal;
- else
- fail << "invalid " << var_include->name << " variable value "
- << "'" << v << "' specified for prerequisite " << p;
-
- // Call the meta-operation override, if any (currently used by dist).
- //
- return current_mif->include == nullptr
- ? r
- : current_mif->include (a, t, prerequisite_member {p, m}, r);
- }
-}