perfetto: switch to C++17 with temporary C++11 opt-out
* make all targets build with C++17
* make it an error to compile with C++11 without defining an opt-out
flag. The error makes it clear that any objections need to be
discussed very soon
* Keep the debug CI bot compiling with C++11 to prevent accidental
use of C++14/17 features in the transition period
Bug: b/257064316
Change-Id: I32c227944f9d65a110d4f613b1ea17a823567822
diff --git a/src/base/metatrace.cc b/src/base/metatrace.cc
index c676d80..1464ed3 100644
--- a/src/base/metatrace.cc
+++ b/src/base/metatrace.cc
@@ -29,7 +29,6 @@
std::atomic<uint64_t> g_enabled_timestamp{0};
// static members
-constexpr size_t RingBuffer::kCapacity;
std::array<Record, RingBuffer::kCapacity> RingBuffer::records_;
std::atomic<bool> RingBuffer::read_task_queued_;
std::atomic<uint64_t> RingBuffer::wr_index_;
@@ -37,9 +36,12 @@
std::atomic<bool> RingBuffer::has_overruns_;
Record RingBuffer::bankruptcy_record_;
+#if !PERFETTO_IS_AT_LEAST_CPP17()
+constexpr size_t RingBuffer::kCapacity;
constexpr uint16_t Record::kTypeMask;
constexpr uint16_t Record::kTypeCounter;
constexpr uint16_t Record::kTypeEvent;
+#endif
namespace {
diff --git a/src/protozero/packed_repeated_fields.cc b/src/protozero/packed_repeated_fields.cc
index b0e23c5..16d4539 100644
--- a/src/protozero/packed_repeated_fields.cc
+++ b/src/protozero/packed_repeated_fields.cc
@@ -20,8 +20,10 @@
namespace protozero {
+#if !PERFETTO_IS_AT_LEAST_CPP17()
// static
constexpr size_t PackedBufferBase::kOnStackStorageSize;
+#endif
void PackedBufferBase::GrowSlowpath() {
size_t write_off = static_cast<size_t>(write_ptr_ - storage_begin_);
diff --git a/src/trace_processor/containers/string_pool.cc b/src/trace_processor/containers/string_pool.cc
index 0189054..0ca5d0b 100644
--- a/src/trace_processor/containers/string_pool.cc
+++ b/src/trace_processor/containers/string_pool.cc
@@ -24,6 +24,7 @@
namespace perfetto {
namespace trace_processor {
+#if !PERFETTO_IS_AT_LEAST_CPP17()
// static
constexpr size_t StringPool::kNumBlockIndexBits;
// static
@@ -38,6 +39,7 @@
constexpr size_t StringPool::kBlockSizeBytes;
// static
constexpr size_t StringPool::kMinLargeStringSizeBytes;
+#endif
StringPool::StringPool() {
static_assert(
diff --git a/src/trace_processor/importers/common/args_translation_table.cc b/src/trace_processor/importers/common/args_translation_table.cc
index 1e4e22f..b35f427 100644
--- a/src/trace_processor/importers/common/args_translation_table.cc
+++ b/src/trace_processor/importers/common/args_translation_table.cc
@@ -49,6 +49,7 @@
} // namespace
+#if !PERFETTO_IS_AT_LEAST_CPP17()
constexpr char ArgsTranslationTable::kChromeHistogramHashKey[];
constexpr char ArgsTranslationTable::kChromeHistogramNameKey[];
@@ -65,6 +66,7 @@
constexpr char ArgsTranslationTable::kMojoMethodRelPcKey[];
constexpr char ArgsTranslationTable::kMojoMethodNameKey[];
constexpr char ArgsTranslationTable::kMojoIntefaceTagKey[];
+#endif
ArgsTranslationTable::ArgsTranslationTable(TraceStorage* storage)
: storage_(storage),
diff --git a/src/trace_processor/importers/proto/track_event_tracker.cc b/src/trace_processor/importers/proto/track_event_tracker.cc
index 6497df1..c37eccd 100644
--- a/src/trace_processor/importers/proto/track_event_tracker.cc
+++ b/src/trace_processor/importers/proto/track_event_tracker.cc
@@ -24,8 +24,10 @@
namespace perfetto {
namespace trace_processor {
+#if !PERFETTO_IS_AT_LEAST_CPP17()
// static
constexpr uint64_t TrackEventTracker::kDefaultDescriptorTrackUuid;
+#endif
TrackEventTracker::TrackEventTracker(TraceProcessorContext* context)
: source_key_(context->storage->InternString("source")),
diff --git a/src/trace_processor/sqlite/sqlite_utils_unittest.cc b/src/trace_processor/sqlite/sqlite_utils_unittest.cc
index 5d85383..1d1de13 100644
--- a/src/trace_processor/sqlite/sqlite_utils_unittest.cc
+++ b/src/trace_processor/sqlite/sqlite_utils_unittest.cc
@@ -16,7 +16,6 @@
#include "src/trace_processor/sqlite/sqlite_utils.h"
-#include "gtest/gtest.h"
#include "test/gtest_and_gmock.h"
namespace perfetto {
diff --git a/src/trace_processor/trace_sorter_queue_unittest.cc b/src/trace_processor/trace_sorter_queue_unittest.cc
index b233fe7..d013c91 100644
--- a/src/trace_processor/trace_sorter_queue_unittest.cc
+++ b/src/trace_processor/trace_sorter_queue_unittest.cc
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "src/trace_processor/trace_sorter_queue.h"
-#include "gtest/gtest.h"
+
#include "src/trace_processor/types/variadic.h"
#include "test/gtest_and_gmock.h"
diff --git a/src/trace_processor/types/variadic.cc b/src/trace_processor/types/variadic.cc
index 837bfeb..9a26bd5 100644
--- a/src/trace_processor/types/variadic.cc
+++ b/src/trace_processor/types/variadic.cc
@@ -19,7 +19,9 @@
namespace perfetto {
namespace trace_processor {
+#if !PERFETTO_IS_AT_LEAST_CPP17()
constexpr const char* Variadic::kTypeNames[];
+#endif
} // namespace trace_processor
} // namespace perfetto
diff --git a/src/tracing/core/metatrace_writer.cc b/src/tracing/core/metatrace_writer.cc
index f6acfa0..c270632 100644
--- a/src/tracing/core/metatrace_writer.cc
+++ b/src/tracing/core/metatrace_writer.cc
@@ -26,8 +26,10 @@
namespace perfetto {
+#if !PERFETTO_IS_AT_LEAST_CPP17()
// static
constexpr char MetatraceWriter::kDataSourceName[];
+#endif
MetatraceWriter::MetatraceWriter() : weak_ptr_factory_(this) {}
diff --git a/src/tracing/core/shared_memory_abi.cc b/src/tracing/core/shared_memory_abi.cc
index 9461848..0c4694b 100644
--- a/src/tracing/core/shared_memory_abi.cc
+++ b/src/tracing/core/shared_memory_abi.cc
@@ -69,6 +69,7 @@
} // namespace
+#if !PERFETTO_IS_AT_LEAST_CPP17()
// static
constexpr uint32_t SharedMemoryABI::kNumChunksForLayout[];
constexpr const char* SharedMemoryABI::kChunkStateStr[];
@@ -76,6 +77,7 @@
constexpr const size_t SharedMemoryABI::kMinPageSize;
constexpr const size_t SharedMemoryABI::kMaxPageSize;
constexpr const size_t SharedMemoryABI::kPacketSizeDropPacket;
+#endif
SharedMemoryABI::SharedMemoryABI() = default;
diff --git a/src/tracing/core/shared_memory_arbiter_impl.cc b/src/tracing/core/shared_memory_arbiter_impl.cc
index 7928676..f1b830a 100644
--- a/src/tracing/core/shared_memory_arbiter_impl.cc
+++ b/src/tracing/core/shared_memory_arbiter_impl.cc
@@ -52,8 +52,10 @@
SharedMemoryABI::PageLayout SharedMemoryArbiterImpl::default_page_layout =
SharedMemoryABI::PageLayout::kPageDiv1;
+#if !PERFETTO_IS_AT_LEAST_CPP17()
// static
constexpr BufferID SharedMemoryArbiterImpl::kInvalidBufferId;
+#endif
// static
std::unique_ptr<SharedMemoryArbiter> SharedMemoryArbiter::CreateInstance(
diff --git a/src/tracing/core/trace_buffer.cc b/src/tracing/core/trace_buffer.cc
index 41633aa..c0527ad 100644
--- a/src/tracing/core/trace_buffer.cc
+++ b/src/tracing/core/trace_buffer.cc
@@ -42,8 +42,10 @@
SharedMemoryABI::ChunkHeader::kChunkNeedsPatching;
} // namespace.
+#if !PERFETTO_IS_AT_LEAST_CPP17()
constexpr size_t TraceBuffer::ChunkRecord::kMaxSize;
-constexpr size_t TraceBuffer::InlineChunkHeaderSize = sizeof(ChunkRecord);
+#endif
+const size_t TraceBuffer::InlineChunkHeaderSize = sizeof(ChunkRecord);
// static
std::unique_ptr<TraceBuffer> TraceBuffer::Create(size_t size_in_bytes,
diff --git a/src/tracing/core/tracing_service_impl.cc b/src/tracing/core/tracing_service_impl.cc
index f910a90..da4e34c 100644
--- a/src/tracing/core/tracing_service_impl.cc
+++ b/src/tracing/core/tracing_service_impl.cc
@@ -312,10 +312,12 @@
} // namespace
+#if !PERFETTO_IS_AT_LEAST_CPP17()
// These constants instead are defined in the header because are used by tests.
constexpr size_t TracingServiceImpl::kMaxShmSize;
constexpr uint32_t TracingServiceImpl::kDataSourceStopTimeoutMs;
constexpr uint8_t TracingServiceImpl::kSyncMarker[];
+#endif
std::string GetBugreportPath() {
#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) && \
diff --git a/src/tracing/core/virtual_destructors.cc b/src/tracing/core/virtual_destructors.cc
index 3bcedce..ad9522e 100644
--- a/src/tracing/core/virtual_destructors.cc
+++ b/src/tracing/core/virtual_destructors.cc
@@ -36,7 +36,9 @@
SharedMemory::Factory::~Factory() = default;
SharedMemoryArbiter::~SharedMemoryArbiter() = default;
+#if !PERFETTO_IS_AT_LEAST_CPP17()
constexpr size_t TracingService::kDefaultShmSize;
constexpr size_t TracingService::kDefaultShmPageSize;
+#endif
} // namespace perfetto
diff --git a/src/tracing/test/api_integrationtest_main.cc b/src/tracing/test/api_integrationtest_main.cc
index 49fb0d4..5073244 100644
--- a/src/tracing/test/api_integrationtest_main.cc
+++ b/src/tracing/test/api_integrationtest_main.cc
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-#include <gtest/gtest.h>
+#include "test/gtest_and_gmock.h"
#include "perfetto/tracing.h"