diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/configure.cc | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/configure.cc b/src/configure.cc index 910b878..0755d42 100644 --- a/src/configure.cc +++ b/src/configure.cc @@ -6,6 +6,7 @@ #include <iostream> #include <filesystem> #include <fstream> +#include <sstream> #include <optional> #include <span> #include <cstring> @@ -746,9 +747,8 @@ int regenerateCache(ctor::settings& settings, ctor::conf_values[ctor::cfg::host_cxx] = host_cxx; ctor::conf_values[ctor::cfg::build_cxx] = build_cxx; - std::cout << "Writing results to: " << configurationFile.string() << "\n"; - { - std::ofstream istr(configurationFile); + std::cout << "Generating configuration: " << configurationFile.string() << "\n"; { + std::stringstream istr; istr << "#include <ctor.h>\n\n"; istr << "const ctor::configuration& ctor::get_configuration()\n"; istr << "{\n"; @@ -900,13 +900,28 @@ int regenerateCache(ctor::settings& settings, istr << " };\n"; istr << " return cfg;\n"; istr << "}\n"; + + auto new_configuration = istr.str(); + auto current_configuration = readFile(configurationFile); + if(current_configuration != new_configuration) + { + std::ofstream configuration_stream(configurationFile); + configuration_stream << new_configuration; + } } { - std::ofstream istr(configHeaderFile); - istr << "#pragma once\n\n"; - istr << "#define HAS_FOO 1\n"; - istr << "//#define HAS_BAR 1\n"; + std::stringstream new_config_stream; + new_config_stream << "#pragma once\n\n"; + new_config_stream << "#define HAS_FOO 1\n"; + new_config_stream << "//#define HAS_BAR 1\n"; + auto new_config = new_config_stream.str(); + auto current_config_content = readFile(configHeaderFile); + if(current_config_content != new_config) + { + std::ofstream config_file_stream(configHeaderFile); + config_file_stream << new_config; + } } return 0; |
