From a8038c20ff5b49a8cb9d2ef2f57767fed11b4dd6 Mon Sep 17 00:00:00 2001 From: Justin Paupore Date: Fri, 12 Feb 2021 09:54:42 +0000 Subject: [PATCH] Add Android stlport and default toolchains to BUILD. These are additional possibilities for --crosstool_top for Android NDK compilation. Since the NDK doesn't have -lpthread, getting these flags wrong leads to a linker error. Fixes: 180084220 --- BUILD | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/BUILD b/BUILD index 078f9434e44..41711fa2477 100644 --- a/BUILD +++ b/BUILD @@ -69,6 +69,13 @@ create_compiler_config_setting( ], ) +# Android NDK builds can specify different crosstool_top flags to choose which +# STL they use for C++. We need these multiple variants to catch all of those +# versions of crosstool_top and reliably detect Android. +# +# For more info on the various crosstool_tops used by NDK Bazel builds, see: +# https://docs.bazel.build/versions/master/android-ndk.html#configuring-the-stl + config_setting( name = "android", values = { @@ -80,6 +87,17 @@ config_setting( ], ) +config_setting( + name = "android-stlport", + values = { + "crosstool_top": "@androidndk//:toolchain-stlport", + }, + visibility = [ + # Public, but Protobuf only visibility. + "//:__subpackages__", + ], +) + config_setting( name = "android-libcpp", values = { @@ -102,11 +120,24 @@ config_setting( ], ) +config_setting( + name = "android-default", + values = { + "crosstool_top": "@androidndk//:default_crosstool", + }, + visibility = [ + # Public, but Protobuf only visibility. + "//:__subpackages__", + ], +) + # Android and MSVC builds do not need to link in a separate pthread library. LINK_OPTS = select({ ":android": [], + ":android-stlport": [], ":android-libcpp": [], ":android-gnu-libstdcpp": [], + ":android-default": [], ":msvc": [ # Suppress linker warnings about files with no symbols defined. "-ignore:4221",