aboutsummaryrefslogtreecommitdiff
path: root/build2/config/module.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'build2/config/module.hxx')
-rw-r--r--build2/config/module.hxx93
1 files changed, 0 insertions, 93 deletions
diff --git a/build2/config/module.hxx b/build2/config/module.hxx
deleted file mode 100644
index 0c78b18..0000000
--- a/build2/config/module.hxx
+++ /dev/null
@@ -1,93 +0,0 @@
-// file : build2/config/module.hxx -*- C++ -*-
-// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#ifndef BUILD2_CONFIG_MODULE_HXX
-#define BUILD2_CONFIG_MODULE_HXX
-
-#include <map>
-
-#include <libbutl/prefix-map.mxx>
-
-#include <libbuild2/types.hxx>
-#include <libbuild2/utility.hxx>
-
-#include <libbuild2/module.hxx>
-#include <libbuild2/variable.hxx>
-
-namespace build2
-{
- namespace config
- {
- // An ordered list of modules each with an ordered list of list of
- // config.* variables and their "save flags" (see save_variable()) that
- // are used (as opposed to just being specified) in this configuration.
- // Populated by the config utility functions (required(), optional())
- // and saved in the order populated.
- //
- struct saved_variable
- {
- reference_wrapper<const variable> var;
- uint64_t flags;
- };
-
- struct saved_variables: vector<saved_variable>
- {
- // Normally each module only have a handful of config variables and we
- // only do this during configuration so for now we do linear search
- // instead of adding a map.
- //
- const_iterator
- find (const variable& var) const
- {
- return std::find_if (
- begin (),
- end (),
- [&var] (const saved_variable& v) {return var == v.var;});
- }
- };
-
- struct saved_modules: butl::prefix_map<string, saved_variables, '.'>
- {
- // Priority order with INT32_MIN being the highest. Modules with the
- // same priority are saved in the order inserted.
- //
- // Generally, the idea is that we want higher-level modules at the top
- // of the file since that's the configuration that we usualy want to
- // change. So we have the following priority bands/defaults:
- //
- // 101-200/150 - code generators (e.g., yacc, bison)
- // 201-300/250 - compilers (e.g., C, C++),
- // 301-400/350 - binutils (ar, ld)
- //
- std::multimap<std::int32_t, const_iterator> order;
-
- iterator
- insert (string name, int prio = 0)
- {
- auto p (emplace (move (name), saved_variables ()));
-
- if (p.second)
- order.emplace (prio, p.first);
-
- return p.first;
- }
- };
-
- struct module: module_base
- {
- config::saved_modules saved_modules;
-
- void
- save_variable (const variable&, uint64_t flags = 0);
-
- void
- save_module (const char* name, int prio = 0);
-
- static const string name;
- static const uint64_t version;
- };
- }
-}
-
-#endif // BUILD2_CONFIG_MODULE_HXX