[build][lib] Leverage FatLTO when building tests

Since FatLTO binaries ship with both LLVM bitcode and object code, we can
avoid expensive linking operations when building tests by not using
LTO linking for test binaries.

This patch opts C/C++ tests out of a full relink/reoptimization by
telling the linker to choose the object code part of the object file
to when linking. This reduced the Toolchain build time for tests
by around 20% in LTO builds, and we expect similar improvements in
Fuchsia.

Bug: 364615885
Change-Id: I72c91b84c8061af4f59780a0c96ba1c4f0b180e3
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1112477
Owners-Override: James Robinson <jamesr@google.com>
Reviewed-by: Aaron Wood <aaronwood@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
Fuchsia-Auto-Submit: Paul Kirth <paulkirth@google.com>
24 files changed
tree: 6e346046b13b6660a9db27f888f5abb3b46e2097
  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.