Skip to content

Commit

Permalink
Add Android stlport and default toolchains to BUILD.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
blueshiftlabs committed May 13, 2021
1 parent 45e9707 commit a8038c2
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions BUILD
Expand Up @@ -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 = {
Expand All @@ -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 = {
Expand All @@ -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",
Expand Down

0 comments on commit a8038c2

Please sign in to comment.