summaryrefslogtreecommitdiff
path: root/src/configure.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/configure.cc')
-rw-r--r--src/configure.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/configure.cc b/src/configure.cc
index 86538ab..50a7c32 100644
--- a/src/configure.cc
+++ b/src/configure.cc
@@ -32,6 +32,7 @@ namespace ctor
{
std::optional<std::string> includedir;
std::optional<std::string> libdir;
+std::map<std::string, std::string> conf_values;
}
bool hasConfiguration(const std::string& key)
@@ -46,6 +47,11 @@ bool hasConfiguration(const std::string& key)
return true;
}
+ if(ctor::conf_values.find(key) != ctor::conf_values.end())
+ {
+ return true;
+ }
+
const auto& c = configuration();
return c.tools.find(key) != c.tools.end();
}
@@ -63,6 +69,11 @@ const std::string& getConfiguration(const std::string& key,
return *ctor::libdir;
}
+ if(ctor::conf_values.find(key) != ctor::conf_values.end())
+ {
+ return ctor::conf_values[key];
+ }
+
const auto& c = configuration();
if(hasConfiguration(key))
{
@@ -376,6 +387,18 @@ int regenerateCache(const Settings& default_settings,
std::string build_ar = locate(build_arch, ar_prog);
std::string build_ld = locate(build_arch, ld_prog);
+ // Store current values for execution in this execution context.
+ if(!ctor_includedir.empty())
+ {
+ ctor::conf_values[cfg::ctor_includedir] = ctor_includedir;
+ }
+ if(!ctor_libdir.empty())
+ {
+ ctor::conf_values[cfg::ctor_libdir] = ctor_libdir;
+ }
+ ctor::conf_values[cfg::host_cxx] = host_cxx;
+ ctor::conf_values[cfg::build_cxx] = build_cxx;
+
std::cout << "Writing results to: " << configurationFile.string() << "\n";
{
std::ofstream istr(configurationFile);