summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalGenerator.cxx
diff options
context:
space:
mode:
authorCraig Scott <craig.scott@crascit.com>2020-12-16 12:40:31 (GMT)
committerKitware Robot <kwrobot@kitware.com>2020-12-16 12:40:41 (GMT)
commitd2456b29f44fe612dcfbb0f5b8c5aa8eec67c2c7 (patch)
tree2cb4cb67c82bf90e335a241140cd180a51162fa7 /Source/cmLocalGenerator.cxx
parent34469a4f71c523488682661aafc8d13b054ed5b9 (diff)
parent0fe9c40494be0e15e6603a245f181bc74d8cf481 (diff)
downloadCMake-d2456b29f44fe612dcfbb0f5b8c5aa8eec67c2c7.zip
CMake-d2456b29f44fe612dcfbb0f5b8c5aa8eec67c2c7.tar.gz
CMake-d2456b29f44fe612dcfbb0f5b8c5aa8eec67c2c7.tar.bz2
Merge topic 'unity-anon-ns'
0fe9c40494 Unity Build: Add option for generating per-file unique id Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4784
Diffstat (limited to 'Source/cmLocalGenerator.cxx')
-rw-r--r--Source/cmLocalGenerator.cxx17
1 files changed, 14 insertions, 3 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index d3ede5c..b329e4b 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -2772,8 +2772,15 @@ inline void RegisterUnitySources(cmGeneratorTarget* target, cmSourceFile* sf,
inline void IncludeFileInUnitySources(cmGeneratedFileStream& unity_file,
std::string const& sf_full_path,
cmProp beforeInclude,
- cmProp afterInclude)
+ cmProp afterInclude, cmProp uniqueIdName)
{
+
+ if (uniqueIdName && !uniqueIdName->empty()) {
+ unity_file << "#undef " << *uniqueIdName << "\n"
+ << "#define " << *uniqueIdName << " unity_"
+ << cmSystemTools::ComputeStringMD5(sf_full_path) << "\n";
+ }
+
if (beforeInclude) {
unity_file << *beforeInclude << "\n";
}
@@ -2794,6 +2801,8 @@ std::vector<std::string> AddUnityFilesModeAuto(
batchSize = filtered_sources.size();
}
+ cmProp uniqueIdName = target->GetProperty("UNITY_BUILD_UNIQUE_ID");
+
std::vector<std::string> unity_files;
for (size_t itemsLeft = filtered_sources.size(), chunk, batch = 0;
itemsLeft > 0; itemsLeft -= chunk, ++batch) {
@@ -2817,7 +2826,7 @@ std::vector<std::string> AddUnityFilesModeAuto(
cmSourceFile* sf = filtered_sources[begin];
RegisterUnitySources(target, sf, filename);
IncludeFileInUnitySources(file, sf->ResolveFullPath(), beforeInclude,
- afterInclude);
+ afterInclude, uniqueIdName);
}
}
cmSystemTools::MoveFileIfDifferent(filename_tmp, filename);
@@ -2848,6 +2857,8 @@ std::vector<std::string> AddUnityFilesModeGroup(
}
}
+ cmProp uniqueIdName = target->GetProperty("UNITY_BUILD_UNIQUE_ID");
+
for (auto const& item : explicit_mapping) {
auto const& name = item.first;
std::string filename = cmStrCat(filename_base, "unity_", name,
@@ -2863,7 +2874,7 @@ std::vector<std::string> AddUnityFilesModeGroup(
for (cmSourceFile* sf : item.second) {
RegisterUnitySources(target, sf, filename);
IncludeFileInUnitySources(file, sf->ResolveFullPath(), beforeInclude,
- afterInclude);
+ afterInclude, uniqueIdName);
}
}
cmSystemTools::MoveFileIfDifferent(filename_tmp, filename);