aboutsummaryrefslogtreecommitdiff
path: root/build/context
diff options
context:
space:
mode:
Diffstat (limited to 'build/context')
-rw-r--r--build/context165
1 files changed, 0 insertions, 165 deletions
diff --git a/build/context b/build/context
deleted file mode 100644
index b0ac6dd..0000000
--- a/build/context
+++ /dev/null
@@ -1,165 +0,0 @@
-// file : build/context -*- C++ -*-
-// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#ifndef BUILD_CONTEXT
-#define BUILD_CONTEXT
-
-#include <string>
-#include <ostream>
-#include <cstdint> // uint64_t
-
-#include <butl/filesystem>
-
-#include <build/types>
-#include <build/utility>
-#include <build/operation>
-
-namespace build
-{
- class scope;
- class file;
-
- extern dir_path work;
- extern dir_path home;
-
- extern string_pool path_pool;
- extern string_pool extension_pool;
- extern string_pool project_name_pool;
-
- // Current action (meta/operation).
- //
- extern const meta_operation_info* current_mif;
- extern const operation_info* current_inner_oif;
- extern const operation_info* current_outer_oif;
-
- extern execution_mode current_mode;
-
- // Total number of dependency relationships in the current action.
- // Together with the target::dependents count it is incremented
- // during the rule search & match phase and is decremented during
- // execution with the expectation of it reaching 0. Used as a sanity
- // check.
- //
- extern std::uint64_t dependency_count;
-
- // Reset the dependency state. In particular, this removes all the
- // targets, scopes, and variable names.
- //
- void
- reset ();
-
- // The dual interface wrapper for the {mk,rm}{file,dir}() functions
- // below that allows you to use it as a true/false return or a more
- // detailed enum from <butl/filesystem>
- //
- template <typename T>
- struct fs_status
- {
- T v;
- fs_status (T v): v (v) {};
- operator T () const {return v;}
- explicit operator bool () const {return v == T::success;}
- };
-
- // Create the directory and print the standard diagnostics. Note that
- // this implementation is not suitable if it is expected that the
- // directory will exist in the majority of case and performance is
- // important. See the fsdir{} rule for details.
- //
- fs_status<butl::mkdir_status>
- mkdir (const dir_path&);
-
- fs_status<butl::mkdir_status>
- mkdir_p (const dir_path&);
-
- // Remove the file and print the standard diagnostics. The second
- // argument is only used in diagnostics, to print the target name.
- // Passing the path for target will result in the relative path
- // being printed.
- //
- template <typename T>
- fs_status<butl::rmfile_status>
- rmfile (const path&, const T& target);
-
- inline fs_status<butl::rmfile_status>
- rmfile (const path& f) {return rmfile (f, f);}
-
- // Similar to rmfile() but for directories.
- //
- template <typename T>
- fs_status<butl::rmdir_status>
- rmdir (const dir_path&, const T& target);
-
- inline fs_status<butl::rmdir_status>
- rmdir (const dir_path& d) {return rmdir (d, d);}
-
- // Note that this function returns not_empty if we try to remove
- // a working directory.
- //
- fs_status<butl::rmdir_status>
- rmdir_r (const dir_path&);
-
- // Return the src/out directory corresponding to the given out/src. The
- // passed directory should be a sub-directory of out/src_root.
- //
- dir_path
- src_out (const dir_path& out, scope&);
-
- dir_path
- src_out (const dir_path& out,
- const dir_path& out_root, const dir_path& src_root);
-
- dir_path
- out_src (const dir_path& src, scope&);
-
- dir_path
- out_src (const dir_path& src,
- const dir_path& out_root, const dir_path& src_root);
-
- // If possible and beneficial, translate an absolute, normalized path
- // into relative to the relative_base directory, which is normally
- // work. Note that if the passed path is the same as relative_base,
- // then this function returns empty path.
- //
- template <typename K>
- basic_path<char, K>
- relative (const basic_path<char, K>&);
-
- // By default this points to work. Setting this to something else
- // should only be done in tightly controlled, non-parallel
- // situations (see dump). If base is empty, then relative()
- // returns the original path.
- //
- extern const dir_path* relative_base;
-
- // In addition to calling relative(), this function also uses shorter
- // notations such as '~/'.
- //
- std::string
- diag_relative (const path&);
-
- // As above but also adds trailing '/'. If the path is the same as
- // base, returns "./" if current is true and empty string otherwise.
- //
- std::string
- diag_relative (const dir_path&, bool current = true);
-
- // Action phrases, e.g., "configure update exe{foo}", "updating exe{foo}",
- // and "updating exe{foo} is configured".
- //
- class target;
-
- std::string
- diag_do (const action&, const target&);
-
- std::string
- diag_doing (const action&, const target&);
-
- std::string
- diag_done (const action&, const target&);
-}
-
-#include <build/context.txx>
-
-#endif // BUILD_CONTEXT