commit | 50adefb987351eb3612b2e28240cf0d0697fdf5a | [log] [tgz] |
---|---|---|
author | jmmv <jmmv@google.com> | Fri Oct 02 09:25:34 2020 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Oct 02 09:27:05 2020 -0700 |
tree | d182dc6dfa8866d89c9db84fc6ded07fe8b29cc3 | |
parent | e36e9da96b04945ab26210288b3e68f70b7d3093 [diff] |
Funnel all JNI load requests through JniLoader. To avoid symbol collisions in native dependencies, we can safely only load one shared library to provide our JNI bindings. Unfortunately, we have multiple places that attempt to load JNI code, which gives the illusion that loading more than one library is OK. To clarify this, centralize all JNI loads into a single JniLoader entry point. This change should be a no-op and does not fix any problems with duplicate symbols yet. As part of this change, remove the io.bazel.EnableJni JVM system property that was used to tell Bazel whether to load the JNI code or not... sometimes. We had many call sites that attempted to load JNI and some checked for this property and others didn't. Things worked mostly by chance and were very fragile, and we can do better by being slightly smarter. Note that UnixJniLoader and WindowsJniLoader remain after this change but they are now hidden behind JniLoader. An upcoming change will further merge the code of these three, but I'll do it separately for simplicity reasons. PiperOrigin-RevId: 335040383
{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