aboutsummaryrefslogtreecommitdiff
path: root/build/file
blob: 9975e06940f459195dad0305c99170f6de2d82b1 (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// file      : build/file -*- C++ -*-
// copyright : Copyright (c) 2014-2015 Code Synthesis Tools CC
// license   : MIT; see accompanying LICENSE file

#ifndef BUILD_FILE
#define BUILD_FILE

#include <build/path>

namespace build
{
  class scope;

  void
  source (const path& buildfile, scope& root, scope& base);

  // As above but first check if this buildfile has already been
  // sourced for the base scope.
  //
  void
  source_once (const path& buildfile, scope& root, scope& base);

  // As above but checks against the specified scope rather than base.
  //
  void
  source_once (const path& buildfile, scope& root, scope& base, scope& once);

  // Create project's root scope. Only set the src_root variable is the
  // passed src_root value is not empty.
  //
  scope&
  create_root (const path& out_root, const path& src_root);

  // Bootstrap the project's root scope, the out part.
  //
  void
  bootstrap_out (scope& root);

  // Bootstrap the project's root scope, the src part. Return true if
  // we loaded anything.
  //
  bool
  bootstrap_src (scope& root);

  // Load project's root[-pre].build unless already loaded.
  //
  void
  root_pre (scope& root);
}

#include <build/file.ixx>

#endif // BUILD_FILE