| commit | f8e38d1a4b4d8cc6b4855c100971706ba77b7f30 | [log] [tgz] |
|---|---|---|
| author | Keith Smiley <keithbsmiley@gmail.com> | Wed Feb 13 13:33:36 2019 -0800 |
| committer | Copybara-Service <copybara-piper@google.com> | Wed Feb 13 13:35:41 2019 -0800 |
| tree | 8d5ed4343a90bd50b353936ef248fc047e253288 | |
| parent | ce1a64e4a8452f1386254c9bbdb190ff88567471 [diff] |
Support bitcode for Apple platforms
This changes the osx crosstool to support bitcode for all apple
platforms.
The behavior of bitcode is:
- For simulators, never pass any bitcode related linker, or compiler flags
- For devices:
- For embedded bitcode markers
- Pass `-fembed-bitcode-marker` to the compile and link commands
- For embedded bitcode
- Pass `-fembed-bitcode` to the compile and link commands
- Pass `-bitcode_verify` `-bitcode_hide_symbols` `-bitcode_symbol_map` to the link command
- Pass a output file path, wrapped in `BITCODE_TOUCH_SYMBOL_MAP` which is a clang wrapper workaround
With any bitcode link commands, you cannot pass `-headerpad_max_install_names` or you get a warning. You can see the logic for that [here](https://opensource.apple.com/source/ld64/ld64-253.9/src/ld/Options.cpp.auto.html). To make sure that debug and release builds are as close as possible, I've disabled this flag for all builds including the simulator if bitcode is requested.
Fixes https://github.com/bazelbuild/bazel/issues/4982
Closes #7356.
PiperOrigin-RevId: 233818910
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel only rebuilds 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
Bazel is released in ‘Beta’. See the product roadmap to learn about the path toward a stable 1.0 release.