[fuchsia-controller] Refactor C++ libraries into separate directories

The fuchsia-controller C++ libraries were refactored so that fidl_codec
and fuchsia_controller_internal no longer share a directory and sources.
The creation of the new source_set fuchsia_controller_abi makes this
possible.

The fuchsia_controller_abi source set includes:

- The contents of the former py_header.h which ensures each Python.h
  inclusion is accompanied with the appropriate #define's, i.e.,
  PY_SSIZE_T_CLEAN and Py_LIMITED_API.
- The RAII Object for wrapping a PyObject (from the former
  py_wrapper.h).

Otherwise, the previously shared sources were migrated into fidl_codec's
new utils.h header because they were only used in fidl_codec.

Various clang-tidy lints were fixed as well. None of these fixes result
in functional changes to fuchsia-controller.

Change-Id: Ibb1535deef327e18ea1453570cc63da9618b117b

---

The motivation for this change is to create a clean separation between
fidl_codec and fuchsia_controller_internal to improve the readability of
future planned changes. Those changes will include adding mypy stubs for
fidl_codec, and some simplifying refactors for fidl_codec facilitated by
migrating fuchsia_controller_internal types into fuchsia_controller_abi.

NO_IFTTT=Implementation of fuchsia_controller.h provides an additional
buffer length check to prevent unintentionally removing the check at the
lower level of the implementation.

Fixed: 42085293
Change-Id: Ie7074bf538b2a53d09566de201ab5b56f21a6a4a
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1174755
Reviewed-by: Christopher Johnson <crjohns@google.com>
Reviewed-by: Sam Balana <sbalana@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
Fuchsia-Auto-Submit: Charles Celerier <chcl@google.com>
Reviewed-by: Petr Hosek <phosek@google.com>
34 files changed
tree: 62bc8ce1f9d978431dcf29921ffdaae7f4153519
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. infra/
  7. products/
  8. scripts/
  9. sdk/
  10. src/
  11. third_party/
  12. tools/
  13. zircon/
  14. .clang-format
  15. .clang-tidy
  16. .editorconfig
  17. .git-blame-ignore-revs
  18. .gitattributes
  19. .gitignore
  20. .gitmodules
  21. .gn
  22. .ignore
  23. analysis_options.yaml
  24. AUTHORS
  25. BUILD.gn
  26. CODE_OF_CONDUCT.md
  27. CONTRIBUTING.md
  28. fuchsia.code-workspace
  29. LICENSE
  30. OWNERS
  31. PATENTS
  32. pyproject.toml
  33. pyrightconfig.json
  34. README.md
  35. rustfmt.toml
  36. shac.star
  37. shac.textproto
README.md

Fuchsia

What is Fuchsia?

Fuchsia is an open source, general purpose operating system supporting modern 64-bit Intel and ARM processors.

We expect everyone interacting with our project to respect our code of conduct.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.