From 13b8ea3b4dc6b63f4b77fc0e6f254a2ce9ca7389 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Wed, 14 Jan 2026 10:49:18 +0100 Subject: Only overwrite config.h if the contents changed - avoiding unnecessary rebuilds of project sorces that includes config.h. --- src/configure.cc | 29 ++++++++++++++++++++++------- 1 file 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 #include #include +#include #include #include #include @@ -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 \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; -- cgit v1.2.3