commit | 0643786736dbbe027611cddea112789aa6050cfd | [log] [tgz] |
---|---|---|
author | allevato <allevato@google.com> | Thu May 20 09:23:46 2021 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Thu May 20 09:25:12 2021 -0700 |
tree | 95016bb4283cdd0a0ae14ee31ee2b17ae7f59ef1 | |
parent | bcce6dd026e90336e80616a8c1004a79a2f8640c [diff] |
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
{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.
Follow our tutorials:
See CONTRIBUTING.md