Add host target for perfetto protos on Android host builds

This CL introduces a "perfetto_trace_protos" static_library
target that allows to link the perfetto protobuf code on
host executable builds.
This CL also disentangles some awkward dep between proto:lite
targets and the IPC proto targets, that was indirectly causing
the core tracing target to depend on ipc.
Also fixes a small breakage on mac by removing an unnecessary
include in trace_to_text.

Sample usage:

In the .bp file:
---
cc_binary_host {
  name: "perfetto_proto_test",
  static_libs: [
    "perfetto_trace_protos",
    "libprotobuf-cpp-lite",
  ],
  srcs: [
    "host_test.cc"
  ],
}
---

Where host_test.cc:
---
#include "perfetto/trace/trace.pb.h"

int main(int, char** argv) {
  perfetto::protos::Trace trace;
  return trace.ParseFromString(std::string(argv[1]));
}
---

Bug: 73611302
Change-Id: Ie371e82941890a3a7567c30261befd756147cc1c
Test: manual. Checked that builds on mac.
13 files changed
tree: 9c263d890979a04d52f03b88d46d7af14bacd766
  1. build_overrides/
  2. buildtools/
  3. debian/
  4. docs/
  5. gn/
  6. include/
  7. infra/
  8. protos/
  9. src/
  10. test/
  11. tools/
  12. .clang-format
  13. .gitignore
  14. .gn
  15. .travis.yml
  16. Android.bp
  17. Android.bp.extras
  18. BUILD.gn
  19. codereview.settings
  20. MODULE_LICENSE_APACHE2
  21. NOTICE
  22. OWNERS
  23. perfetto.rc
  24. PRESUBMIT.py
  25. README.chromium
  26. README.md
README.md

Perfetto - Performance instrumentation and logging for POSIX platforms

This project is meant to be built both as part of the Android tree and from a standalone checkout

For internal docs see this page

Supported platforms

Android is the platform targeted in the first milestones. Right now Linux desktop and OSX are maintained best-effort.

Contributing

This project uses Android AOSP Gerrit for code reviews and uses the Google C++ style. Currently targets -std=c++11.

You can use both git cl upload from Chromium depot tools or Android repo to upload patches.

git cl is quite convenient as it supports code auto-formatting via git cl format.

See https://source.android.com/source/contributing for more details about external contributions and CLA signing.

Build instructions

See docs/build_instructions.md

Running Perfetto

See docs/running_perfetto.md

Continuous integration

Continuous build and test coverage is available at perfetto-ci.appspot.com. Trybots: CLs uploaded to gerrit are automatically submitted to TravisCI within one minute and made available on the CI page above. The relevant code lives in the infra/ directory.

Run tests

On the host (Linux / OSX)

$ tools/ninja -C out/default (tracing_unittests | tracing_benchmarks)
$ out/default/tracing_unittests --gtest_help

On Android

Either connect a device in ADB mode or use the bundled emulator.

To start the emulator:
$ tools/run_android_emulator (arm | arm64) &

To run the tests (either on the emulator or physical device):
$ tools/run_android_test out/default tracing_unittests