aboutsummaryrefslogtreecommitdiff
path: root/build2/prerequisite.ixx
blob: 38740116f0c57e706dd0314d416143be973b4ac2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// file      : build2/prerequisite.ixx -*- C++ -*-
// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
// license   : MIT; see accompanying LICENSE file
namespace build2
{
  include_type
  include_impl (action,
                const target&,
                const string&,
                const prerequisite&,
                const target*);

  extern const variable* var_include; // context.cxx

  inline include_type
  include (action a, const target& t, const prerequisite& p, const target* m)
  {
    // Most of the time this variable will not be specified, so let's optimize
    // for that.
    //
    if (p.vars.empty ())
      return true;

    const string* v (cast_null<string> (p.vars[var_include]));

    if (v == nullptr)
      return true;

    return include_impl (a, t, *v, p, m);
  }
}