commit | b6ea0d33d3ab72922c8fb3ec1ff0e437af09584d | [log] [tgz] |
---|---|---|
author | Adam Michael <ajmichael@google.com> | Fri Mar 10 02:40:21 2017 +0000 |
committer | Vladimir Moskva <vladmos@google.com> | Fri Mar 10 10:28:28 2017 +0000 |
tree | 080e65d675791d17d8d761bc70b81b7878c62879 | |
parent | 48e1d5b86c5c32e8b9023518254ac9023c26082f [diff] |
Add the appropriate cxx_builtin_include_directory entries for clang to the Android NDK crosstool created by android_ndk_repository. Also, stop setting -isystem for the builtin include directories in the clang toolchains. Previously, we were incorrectly setting cxx_builtin_include_directory for clang toolchains to the gcc include directories. We were also setting -isystem on these directories, so when an Android build attempted to include an NDK header (like arm_neon.h), clang got gcc's version of that header. A followup change will stop setting -isystem for gcc. Fixes https://github.com/bazelbuild/bazel/issues/2601. Note that I intentionally did not attempt to fix the bug for NDK10. NDK10 is very old, defaults to GCC and contains two separate clang/LLVMs. As such, it would be more complicated to get right and test properly. Also adds an integration test that attempts to compile an NDK header with clang. This change does not entirely fix Tensorflow's Android sample app build with NDK13 (the motivation for https://github.com/bazelbuild/bazel/issues/2601), however I believe that the remaining fixes are on Tensorflow's side. E.g. setting -Wno-c++11-narrowing in copts. -- PiperOrigin-RevId: 149719100 MOS_MIGRATED_REVID=149719100
{Fast, Correct} - Choose two
Bazel is a build tool that builds code quickly and reliably. It is used to build the majority of Google‘s software, and thus it has been designed to handle build problems present in Google’s development environment, including:
A massive, shared code repository, in which all software is built from source. Bazel has been built for speed, using both caching and parallelism to achieve this. Bazel is critical to Google's ability to continue to scale its software development practices as the company grows.
An emphasis on automated testing and releases. Bazel has been built for correctness and reproducibility, meaning that a build performed on a continuous build machine or in a release pipeline will generate bitwise-identical outputs to those generated on a developer's machine.
Language and platform diversity. Bazel's architecture is general enough to support many different programming languages within Google, and can be used to build both client and server software targeting multiple architectures from the same underlying codebase.
Find more background about Bazel in our FAQ.