summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorClemens Wasser <clemens.wasser@gmail.com>2022-01-25 20:27:27 (GMT)
committerClemens Wasser <clemens.wasser@gmail.com>2022-01-26 16:09:21 (GMT)
commitbbdb000c55f82dc12f87a43f68defdfc246c6e51 (patch)
tree3b63fe5688b7a544d3ac55ead5c2ab257432abd7 /Source
parent850bdc4203f4599fceaed2ae9ba21c53e71fd0fb (diff)
downloadCMake-bbdb000c55f82dc12f87a43f68defdfc246c6e51.zip
CMake-bbdb000c55f82dc12f87a43f68defdfc246c6e51.tar.gz
CMake-bbdb000c55f82dc12f87a43f68defdfc246c6e51.tar.bz2
GlobalNinjaGenerator: enlarge file stream buffer
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGlobalNinjaGenerator.cxx13
-rw-r--r--Source/cmGlobalNinjaGenerator.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index 19c4ee3..614cb66 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -1021,6 +1021,19 @@ bool cmGlobalNinjaGenerator::OpenBuildFileStreams()
return false;
}
+ // New buffer size 8 MiB
+ constexpr auto buildFileStreamBufferSize = 8 * 1024 * 1024;
+
+ // Ensure the buffer is allocated
+ if (!this->BuildFileStreamBuffer) {
+ this->BuildFileStreamBuffer =
+ cm::make_unique<char[]>(buildFileStreamBufferSize);
+ }
+
+ // Enlarge the internal buffer of the `BuildFileStream`
+ this->BuildFileStream->rdbuf()->pubsetbuf(this->BuildFileStreamBuffer.get(),
+ buildFileStreamBufferSize);
+
// Write a comment about this file.
*this->BuildFileStream
<< "# This file contains all the build statements describing the\n"
diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h
index 84fc06c..98442bf 100644
--- a/Source/cmGlobalNinjaGenerator.h
+++ b/Source/cmGlobalNinjaGenerator.h
@@ -526,6 +526,7 @@ private:
/// The file containing the build statement. (the relationship of the
/// compilation DAG).
std::unique_ptr<cmGeneratedFileStream> BuildFileStream;
+ std::unique_ptr<char[]> BuildFileStreamBuffer;
/// The file containing the rule statements. (The action attached to each
/// edge of the compilation DAG).
std::unique_ptr<cmGeneratedFileStream> RulesFileStream;