diff options
Diffstat (limited to 'build/config/utility')
-rw-r--r-- | build/config/utility | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/build/config/utility b/build/config/utility deleted file mode 100644 index ee5f50b..0000000 --- a/build/config/utility +++ /dev/null @@ -1,128 +0,0 @@ -// file : build/config/utility -*- C++ -*- -// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#ifndef BUILD_CONFIG_UTILITY -#define BUILD_CONFIG_UTILITY - -#include <string> -#include <utility> // pair -#include <functional> // reference_wrapper - -#include <build/types> -#include <build/variable> -#include <build/diagnostics> - -namespace build -{ - class scope; - - namespace config - { - // Set, if necessary, a required config.* variable. - // - // If override is true and the variable doesn't come from this root - // scope or from the command line, then its value is "overridden" - // for this root scope. - // - // Return the reference to the value as well as the indication of - // whether the variable has actually been set. - // - template <typename T> - std::pair<std::reference_wrapper<const value>, bool> - required (scope& root, - const variable&, - const T& default_value, - bool override = false); - - template <typename T> - inline std::pair<std::reference_wrapper<const value>, bool> - required (scope& root, - const std::string& name, - const T& default_value, - bool override = false) - { - return required (root, var_pool.find (name), default_value, override); - } - - inline std::pair<std::reference_wrapper<const value>, bool> - required (scope& root, - const std::string& name, - const char* default_value, - bool override = false) - { - return required (root, name, std::string (default_value), override); - } - - // Set, if necessary, an optional config.* variable. In particular, - // an unspecified variable is set to NULL which is used to distinguish - // between the "configured as unspecified" and "not yet configured" - // cases. - // - // Return the value, which can be NULL. - // - const value& - optional (scope& root, const variable&); - - inline const value& - optional (scope& root, const std::string& var) - { - return optional (root, var_pool.find (var)); - } - - // As above but assumes the value is dir_path and makes it - // absolute if the value specified on the command line is - // relative. - // - const value& - optional_absolute (scope& root, const variable&); - - inline const value& - optional_absolute (scope& root, const std::string& var) - { - return optional_absolute (root, var_pool.find (var)); - } - - // Check whether there are any variables specified from the config - // namespace. The idea is that we can check if there are any, say, - // config.install.* values. If there are none, then we can assume - // this functionality is not (yet) used and omit writing a whole - // bunch of NULL config.install.* values to the config.build file. - // We call it omitted/delayed configuration. - // - // Note that this function detects and ignores the special - // config.*.configured variable which may be used by a module to - // "remember" that it is unconfigured. - // - bool - specified (scope& root, const std::string& ns); - - // @@ Why are these here? - // - - // Add all the values from a variable to the C-string list. T is - // either target or scope. The variable is expected to be of type - // strings. - // - template <typename T> - void - append_options (cstrings& args, T& s, const char* var); - - // As above but from the strings value directly. - // - void - append_options (cstrings& args, const const_strings_value&); - - // Check if a specified option is present in the variable value. - // T is either target or scope. - // - template <typename T> - bool - find_option (const char* option, T& s, const char* var); - } -} - -#include <build/config/utility.txx> -#include <build/config/utility.ixx> - -#endif // BUILD_CONFIG_UTILITY |