aboutsummaryrefslogtreecommitdiff
path: root/build/file
diff options
context:
space:
mode:
Diffstat (limited to 'build/file')
-rw-r--r--build/file144
1 files changed, 0 insertions, 144 deletions
diff --git a/build/file b/build/file
deleted file mode 100644
index c2b2535..0000000
--- a/build/file
+++ /dev/null
@@ -1,144 +0,0 @@
-// file : build/file -*- C++ -*-
-// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#ifndef BUILD_FILE
-#define BUILD_FILE
-
-#include <map>
-#include <string>
-
-#include <build/types>
-#include <build/scope>
-#include <build/variable> // list_value
-
-namespace build
-{
- class target;
- class location;
- class prerequisite_key;
-
- using subprojects = std::map<std::string, dir_path>;
-
- extern const dir_path build_dir; // build
- extern const dir_path bootstrap_dir; // build/bootstrap
-
- extern const path root_file; // build/root.build
- extern const path bootstrap_file; // build/bootstrap.build
- extern const path src_root_file; // build/bootstrap/src-root.build
-
- bool
- is_src_root (const dir_path&);
-
- bool
- is_out_root (const dir_path&);
-
- // Given an src_base directory, look for a project's src_root
- // based on the presence of known special files. Return empty
- // path if not found.
- //
- dir_path
- find_src_root (const dir_path&);
-
- // The same as above but for project's out. Note that we also
- // check whether a directory happens to be src_root, in case
- // this is an in-tree build. The second argument is the out
- // flag that is set to true if this is src_root.
- //
- dir_path
- find_out_root (const dir_path&, bool* src = nullptr);
-
- 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 if the
- // passed src_root value is not empty.
- //
- scope&
- create_root (const dir_path& out_root, const dir_path& src_root);
-
- // Setup root scope. Note that it assume the src_root variable
- // has already been set.
- //
- void
- setup_root (scope&);
-
- // Setup the base scope (set *_base variables, etc).
- //
- scope&
- setup_base (scope_map::iterator,
- const dir_path& out_base,
- const dir_path& src_base);
-
- // 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 (which confirms the src_root is not bogus).
- //
- bool
- bootstrap_src (scope& root);
-
- // Create and bootstrap outer root scopes, if any. Loading is
- // done by load_root_pre() below.
- //
- void
- create_bootstrap_outer (scope& root);
-
- // Create and bootstrap inner root scopes between root and base,
- // if any. Return the innermost created root scope or root if
- // none were created. Loading is done by load_root_pre() below.
- //
- scope&
- create_bootstrap_inner (scope& root, const dir_path& out_base);
-
- // Load project's root[-pre].build unless already loaded. Also
- // make sure all outer root scopes are loaded prior to loading
- // this root scope.
- //
- void
- load_root_pre (scope& root);
-
- // Import has two phases: the first is triggered by the import
- // directive in the buildfile. It will try to find and load the
- // project. Failed that, it will return the project-qualified
- // name of the target which will be used to create a project-
- // qualified prerequisite. This gives the rule that will be
- // searching this prerequisite a chance to do some target-type
- // specific search. For example, a C++ link rule can search
- // for lib{} prerequisites in the C++ compiler default library
- // search paths (so that we end up with functionality identical
- // to -lfoo). If, however, the rule didn't do any of that (or
- // failed to find anything usable), it calls the standard
- // prerequisite search() function which sees this is a project-
- // qualified prerequisite and goes straight to the second phase
- // of import. Here, currently, we simply fail but in the future
- // this will be the place where we can call custom "last resort"
- // import hooks. For example, we can hook a package manager that
- // will say, "Hey, I see you are trying to import foo and I see
- // there is a package foo available in repository bar. Wanna
- // download and use it?"
- //
- names
- import (scope& base, name, const location&);
-
- target&
- import (const prerequisite_key&);
-}
-
-#include <build/file.ixx>
-
-#endif // BUILD_FILE