Build example_custom_data_source.cc with gn
With this change, example_custom_data_source.cc can also be built with
gn. It will continue to work with amalgmated SDK against the perfetto.h
source.
Change-Id: Iacb38592de70d55f22913fcbb68fb81d889517a7
diff --git a/examples/sdk/example_custom_data_source.cc b/examples/sdk/example_custom_data_source.cc
index 2d475c1..c39c9f5 100644
--- a/examples/sdk/example_custom_data_source.cc
+++ b/examples/sdk/example_custom_data_source.cc
@@ -16,11 +16,25 @@
// This example demonstrates a custom tracing data source.
+// This source file can be built in two ways:
+// 1. As part of the regular GN build, against standard includes.
+// 2. To test that the amalgmated SDK works, against the perfetto.h source.
+#if defined(PERFETTO_SDK_EXAMPLE_USE_INTERNAL_HEADERS)
+#include "perfetto/tracing.h"
+#include "perfetto/tracing/core/data_source_descriptor.h"
+#include "perfetto/tracing/core/trace_config.h"
+#include "perfetto/tracing/data_source.h"
+#include "perfetto/tracing/tracing.h"
+#include "protos/perfetto/trace/test_event.pbzero.h"
+#else
#include <perfetto.h>
+#endif
#include <fstream>
#include <thread>
+namespace {
+
// The definition of our custom data source. Instances of this class will be
// automatically created and destroyed by Perfetto.
class CustomDataSource : public perfetto::DataSource<CustomDataSource> {
@@ -35,9 +49,6 @@
void OnStop(const StopArgs&) override {}
};
-PERFETTO_DECLARE_DATA_SOURCE_STATIC_MEMBERS(CustomDataSource);
-PERFETTO_DEFINE_DATA_SOURCE_STATIC_MEMBERS(CustomDataSource);
-
void InitializePerfetto() {
perfetto::TracingInitArgs args;
// The backends determine where trace events are recorded. For this example we
@@ -81,12 +92,21 @@
// Note: To save memory with longer traces, you can tell Perfetto to write
// directly into a file by passing a file descriptor into Setup() above.
std::ofstream output;
- output.open("example_custom_data_source.pftrace",
- std::ios::out | std::ios::binary);
- output.write(&trace_data[0], trace_data.size());
+ const char* filename = "example_custom_data_source.pftrace";
+ output.open(filename, std::ios::out | std::ios::binary);
+ output.write(&trace_data[0], static_cast<std::streamsize>(trace_data.size()));
output.close();
+ PERFETTO_LOG(
+ "Trace written in %s file. To read this trace in "
+ "text form, run `./tools/traceconv text %s`",
+ filename, filename);
}
+} // namespace
+
+PERFETTO_DECLARE_DATA_SOURCE_STATIC_MEMBERS(CustomDataSource);
+PERFETTO_DEFINE_DATA_SOURCE_STATIC_MEMBERS(CustomDataSource);
+
int main(int, const char**) {
InitializePerfetto();
auto tracing_session = StartTracing();