From c99ff40b213d6b3d207dae66c9692ed1b8a0a2f0 Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Tue, 16 Jul 2024 09:38:19 -0400 Subject: [PATCH] Unity: refactor unity extension logic to single function --- Source/cmLocalGenerator.cxx | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index e6d56d31f9..7b0bf4ecaa 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -3154,6 +3154,23 @@ void cmLocalGenerator::WriteUnitySourceInclude( unity_file << "\n"; } +namespace { +std::string unity_file_extension(std::string const& lang) +{ + std::string extension; + if (lang == "C") { + extension = "_c.c"; + } else if (lang == "CXX") { + extension = "_cxx.cxx"; + } else if (lang == "OBJC") { + extension = "_m.m"; + } else if (lang == "OBJCXX") { + extension = "_mm.mm"; + } + return extension; +} +} + std::vector cmLocalGenerator::AddUnityFilesModeAuto( cmGeneratorTarget* target, std::string const& lang, @@ -3172,17 +3189,8 @@ cmLocalGenerator::AddUnityFilesModeAuto( chunk = std::min(itemsLeft, batchSize); - std::string extension; - if (lang == "C") { - extension = "_c.c"; - } else if (lang == "CXX") { - extension = "_cxx.cxx"; - } else if (lang == "OBJC") { - extension = "_m.m"; - } else if (lang == "OBJCXX") { - extension = "_mm.mm"; - } - std::string filename = cmStrCat(filename_base, "unity_", batch, extension); + std::string filename = + cmStrCat(filename_base, "unity_", batch, unity_file_extension(lang)); auto const begin = filtered_sources.begin() + batch * batchSize; auto const end = begin + chunk; unity_files.emplace_back(this->WriteUnitySource( @@ -3220,8 +3228,8 @@ cmLocalGenerator::AddUnityFilesModeGroup( for (auto const& item : explicit_mapping) { auto const& name = item.first; - std::string filename = cmStrCat(filename_base, "unity_", name, - (lang == "C") ? "_c.c" : "_cxx.cxx"); + std::string filename = + cmStrCat(filename_base, "unity_", name, unity_file_extension(lang)); unity_files.emplace_back(this->WriteUnitySource( target, configs, cmMakeRange(item.second), beforeInclude, afterInclude, std::move(filename)));