Update `apple_common.link_multi_arch_binary` to gate legacy functionality on `should_lipo = True` (the current default).

This change will allow rules_apple to migrate away from the Java code handling the lipo'ing of universal binaries and other hardcoded assumptions like the `binary_type` and `bundle_loader` attributes. When `should_lipo = False`, those attributes are not assumed to be present on the rule, and it is the calling rule's responsibility to pass the relevant linker flags/inputs into `link_multi_arch_binary` to support dylibs/loadable bundles.

The fields of the `struct` returned by `link_multi_arch_binary` change as follows. A new field is added—`outputs`—which is a list of `struct`s, one element per child configuration. Each element contains the following fields; the first three describe the configuration that was used to link the artifacts in the following four fields:

*   `platform`: a string denoting the target platform (`ios`, `macos`, `tvos`, `watchos`)
*   `architecture`: a string denoting the target CPU architecture (e.g., `x86_64`)
*   `environment`: a string denoting the target environment (`device`, `simulator`, `macabi`)
*   `binary`: the linked single architecture binary
*   `bitcode_symbols`: the single architecture Bitcode symbol map (or `None` if not requested)
*   `dsym_binary`: the single architecture dSYM binary (or `None` if not requested)
*   `linkmap`: the single architecture linkmap (or `None` if not requested)

Furthermore, when `should_lipo = False`, the multi-architecture `binary` and `binary_provider` fields of the top-level result `struct` are **suppressed.**

RELNOTES: None.
PiperOrigin-RevId: 374886744
7 files changed
tree: 95016bb4283cdd0a0ae14ee31ee2b17ae7f59ef1
  1. .bazelci/
  2. examples/
  3. scripts/
  4. site/
  5. src/
  6. third_party/
  7. tools/
  8. .bazelrc
  9. .gitattributes
  10. .gitignore
  11. AUTHORS
  12. BUILD
  13. CHANGELOG.md
  14. CODEBASE.md
  15. CODEOWNERS
  16. combine_distfiles.py
  17. combine_distfiles_to_tar.sh
  18. compile.sh
  19. CONTRIBUTING.md
  20. CONTRIBUTORS
  21. distdir.bzl
  22. distdir_deps.bzl
  23. ISSUE_TEMPLATE.md
  24. LICENSE
  25. README.md
  26. WORKSPACE
README.md

Bazel

{Fast, Correct} - Choose two

Build and test software of any size, quickly and reliably.

  • Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.

  • One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.

  • Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.

  • Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.

Getting Started

Documentation

Contributing to Bazel

See CONTRIBUTING.md

Build status