unplugged-system/build/bazel/rules/cc/stl_test.bzl

995 lines
33 KiB
Python
Raw Normal View History

# Copyright (C) 2022 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
load("@bazel_skylib//lib:new_sets.bzl", "sets")
load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
load(":stl.bzl", "stl_info_from_attr")
_ANDROID_STATIC_DEPS = ["//external/libcxxabi:libc++demangle"]
_STATIC_DEP = ["//external/libcxx:libc++_static"]
_ANDROID_BINARY_STATIC_DEP = ["//prebuilts/clang/host/linux-x86:libunwind"]
_SHARED_DEP = ["//external/libcxx:libc++"]
_ANDROID_CPPFLAGS = []
_ANDROID_LINKOPTS = []
_LINUX_CPPFLAGS = ["-nostdinc++"]
_LINUX_LINKOPTS = ["-nostdlib++"]
_LINUX_BIONIC_CPPFLAGS = []
_LINUX_BIONIC_LINKOPTS = []
_DARWIN_CPPFLAGS = [
"-nostdinc++",
"-D_LIBCPP_DISABLE_AVAILABILITY",
]
_DARWIN_CPPFLAGS_STL_NONE = ["-nostdinc++"]
_DARWIN_LINKOPTS = ["-nostdlib++"]
_WINDOWS_CPPFLAGS = [
"-nostdinc++",
"-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
"-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
"-D_LIBCPP_HAS_THREAD_API_WIN32",
]
_WINDOWS_CPPFLAGS_STL_NONE = ["-nostdinc++"]
_WINDOWS_LINKOPTS = ["-nostdlib++"]
_StlInfo = provider(fields = ["static", "shared"])
def _stl_impl(ctx):
return [
_StlInfo(
static = ctx.attr.static,
shared = ctx.attr.shared,
),
]
_stl = rule(
implementation = _stl_impl,
attrs = {
"shared": attr.string_list(),
"static": attr.string_list(),
},
)
_StlFlagsInfo = provider(fields = ["cppflags", "linkopts"])
def _stl_flags_impl(ctx):
return [
_StlFlagsInfo(
cppflags = ctx.attr.cppflags,
linkopts = ctx.attr.linkopts,
),
]
_stl_flags = rule(
implementation = _stl_flags_impl,
attrs = {
"cppflags": attr.string_list(),
"linkopts": attr.string_list(),
},
)
def _test_stl(
stl,
is_shared,
is_binary,
android_deps,
non_android_deps,
android_flags,
linux_flags,
linux_bionic_flags,
darwin_flags,
windows_flags):
target_name = _stl_deps_target(stl, is_shared, is_binary)
flags_target_name = _stl_flags_target(stl, is_shared, is_binary)
android_test_name = target_name + "_android_test"
non_android_test_name = target_name + "_non_android_test"
android_flags_test_name = target_name + "_android_flags_test"
linux_flags_test_name = target_name + "_linux_flags_test"
linux_bionic_flags_test_name = target_name + "_linux_bionic_flags_test"
darwin_flags_test_name = target_name + "_darwin_flags_test"
windows_flags_test_name = target_name + "_windows_flags_test"
_stl_deps_android_test(
name = android_test_name,
static = android_deps.static,
shared = android_deps.shared,
target_under_test = target_name,
)
_stl_deps_non_android_test(
name = non_android_test_name,
static = non_android_deps.static,
shared = non_android_deps.shared,
target_under_test = target_name,
)
_stl_flags_android_test(
name = android_flags_test_name,
cppflags = android_flags.cppflags,
linkopts = android_flags.linkopts,
target_under_test = flags_target_name,
)
_stl_flags_linux_test(
name = linux_flags_test_name,
cppflags = linux_flags.cppflags,
linkopts = linux_flags.linkopts,
target_under_test = flags_target_name,
)
_stl_flags_linux_bionic_test(
name = linux_bionic_flags_test_name,
cppflags = linux_bionic_flags.cppflags,
linkopts = linux_bionic_flags.linkopts,
target_under_test = flags_target_name,
)
_stl_flags_darwin_test(
name = darwin_flags_test_name,
cppflags = darwin_flags.cppflags,
linkopts = darwin_flags.linkopts,
target_under_test = flags_target_name,
)
_stl_flags_windows_test(
name = windows_flags_test_name,
cppflags = windows_flags.cppflags,
linkopts = windows_flags.linkopts,
target_under_test = flags_target_name,
)
return [
android_test_name,
non_android_test_name,
android_flags_test_name,
linux_flags_test_name,
linux_bionic_flags_test_name,
darwin_flags_test_name,
windows_flags_test_name,
]
def _stl_deps_target(name, is_shared, is_binary):
target_name = name if name else "empty"
target_name += "_shared" if is_shared else "_static"
target_name += "_bin" if is_binary else "_lib"
info = stl_info_from_attr(name, is_shared, is_binary)
_stl(
name = target_name,
shared = info.shared_deps,
static = info.static_deps,
tags = ["manual"],
)
return target_name
def _stl_deps_test_impl(ctx):
env = analysistest.begin(ctx)
stl_info = analysistest.target_under_test(env)[_StlInfo]
expected_static = sets.make(ctx.attr.static)
actual_static = sets.make(stl_info.static)
asserts.set_equals(
env,
expected = expected_static,
actual = actual_static,
)
expected_shared = sets.make(ctx.attr.shared)
actual_shared = sets.make(stl_info.shared)
asserts.set_equals(
env,
expected = expected_shared,
actual = actual_shared,
)
return analysistest.end(env)
def _stl_flags_target(name, is_shared, is_binary):
target_name = name if name else "empty"
target_name += "_shared" if is_shared else "_static"
target_name += "_bin" if is_binary else "_lib"
target_name += "_flags"
info = stl_info_from_attr(name, is_shared)
_stl_flags(
name = target_name,
cppflags = info.cppflags,
linkopts = info.linkopts,
tags = ["manual"],
)
return target_name
def _stl_flags_test_impl(ctx):
env = analysistest.begin(ctx)
stl_info = analysistest.target_under_test(env)[_StlFlagsInfo]
expected_cppflags = sets.make(ctx.attr.cppflags)
actual_cppflags = sets.make(stl_info.cppflags)
asserts.set_equals(
env,
expected = expected_cppflags,
actual = actual_cppflags,
)
expected_linkopts = sets.make(ctx.attr.linkopts)
actual_linkopts = sets.make(stl_info.linkopts)
asserts.set_equals(
env,
expected = expected_linkopts,
actual = actual_linkopts,
)
return analysistest.end(env)
__stl_flags_android_test = analysistest.make(
impl = _stl_flags_test_impl,
attrs = {
"cppflags": attr.string_list(),
"linkopts": attr.string_list(),
},
)
def _stl_flags_android_test(**kwargs):
__stl_flags_android_test(
target_compatible_with = ["//build/bazel/platforms/os:android"],
**kwargs
)
__stl_flags_linux_test = analysistest.make(
impl = _stl_flags_test_impl,
attrs = {
"cppflags": attr.string_list(),
"linkopts": attr.string_list(),
},
)
def _stl_flags_linux_test(**kwargs):
__stl_flags_linux_test(
target_compatible_with = ["//build/bazel/platforms/os:linux"],
**kwargs
)
__stl_flags_linux_bionic_test = analysistest.make(
impl = _stl_flags_test_impl,
attrs = {
"cppflags": attr.string_list(),
"linkopts": attr.string_list(),
},
)
def _stl_flags_linux_bionic_test(**kwargs):
__stl_flags_linux_bionic_test(
target_compatible_with = ["//build/bazel/platforms/os:linux_bionic"],
**kwargs
)
_stl_flags_windows_test = analysistest.make(
impl = _stl_flags_test_impl,
attrs = {
"cppflags": attr.string_list(),
"linkopts": attr.string_list(),
},
config_settings = {
"//command_line_option:platforms": "@//build/bazel/rules/cc:windows_for_testing",
},
)
_stl_flags_darwin_test = analysistest.make(
impl = _stl_flags_test_impl,
attrs = {
"cppflags": attr.string_list(),
"linkopts": attr.string_list(),
},
config_settings = {
"//command_line_option:platforms": "@//build/bazel/rules/cc:darwin_for_testing",
},
)
__stl_deps_android_test = analysistest.make(
impl = _stl_deps_test_impl,
attrs = {
"static": attr.string_list(),
"shared": attr.string_list(),
},
)
def _stl_deps_android_test(**kwargs):
__stl_deps_android_test(
target_compatible_with = ["//build/bazel/platforms/os:android"],
**kwargs
)
__stl_deps_non_android_test = analysistest.make(
impl = _stl_deps_test_impl,
attrs = {
"static": attr.string_list(),
"shared": attr.string_list(),
},
)
def _stl_deps_non_android_test(**kwargs):
__stl_deps_non_android_test(
target_compatible_with = ["//build/bazel/platforms/os:linux"],
**kwargs
)
def stl_test_suite(name):
native.test_suite(
name = name,
tests =
_test_stl(
stl = "",
is_shared = True,
is_binary = False,
android_deps = struct(
static = _ANDROID_STATIC_DEPS,
shared = _SHARED_DEP,
),
non_android_deps = struct(
static = None,
shared = _SHARED_DEP,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "system",
is_shared = True,
is_binary = False,
android_deps = struct(
static = _ANDROID_STATIC_DEPS,
shared = _SHARED_DEP,
),
non_android_deps = struct(
static = None,
shared = _SHARED_DEP,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "libc++",
is_shared = True,
is_binary = False,
android_deps = struct(
static = _ANDROID_STATIC_DEPS,
shared = _SHARED_DEP,
),
non_android_deps = struct(
static = None,
shared = _SHARED_DEP,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "libc++_static",
is_shared = True,
is_binary = False,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _STATIC_DEP,
shared = None,
),
non_android_deps = struct(
static = _STATIC_DEP,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "none",
is_shared = True,
is_binary = False,
android_deps = struct(
static = None,
shared = None,
),
non_android_deps = struct(
static = None,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS_STL_NONE,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS_STL_NONE,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "",
is_shared = False,
is_binary = False,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _STATIC_DEP,
shared = None,
),
non_android_deps = struct(
static = _STATIC_DEP,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "system",
is_shared = False,
is_binary = False,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _STATIC_DEP,
shared = None,
),
non_android_deps = struct(
static = _STATIC_DEP,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "libc++",
is_shared = False,
is_binary = False,
android_deps = struct(
static = _ANDROID_STATIC_DEPS,
shared = _SHARED_DEP,
),
non_android_deps = struct(
static = None,
shared = _SHARED_DEP,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "libc++_static",
is_shared = False,
is_binary = False,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _STATIC_DEP,
shared = None,
),
non_android_deps = struct(
static = _STATIC_DEP,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "none",
is_shared = False,
is_binary = False,
android_deps = struct(
static = None,
shared = None,
),
non_android_deps = struct(
static = None,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS_STL_NONE,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS_STL_NONE,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "",
is_shared = True,
is_binary = True,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _ANDROID_BINARY_STATIC_DEP,
shared = _SHARED_DEP,
),
non_android_deps = struct(
static = None,
shared = _SHARED_DEP,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "system",
is_shared = True,
is_binary = True,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _ANDROID_BINARY_STATIC_DEP,
shared = _SHARED_DEP,
),
non_android_deps = struct(
static = None,
shared = _SHARED_DEP,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "libc++",
is_shared = True,
is_binary = True,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _ANDROID_BINARY_STATIC_DEP,
shared = _SHARED_DEP,
),
non_android_deps = struct(
static = None,
shared = _SHARED_DEP,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "libc++_static",
is_shared = True,
is_binary = True,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _STATIC_DEP + _ANDROID_BINARY_STATIC_DEP,
shared = None,
),
non_android_deps = struct(
static = _STATIC_DEP,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "none",
is_shared = True,
is_binary = True,
android_deps = struct(
static = None,
shared = None,
),
non_android_deps = struct(
static = None,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS_STL_NONE,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS_STL_NONE,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "",
is_shared = False,
is_binary = True,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _STATIC_DEP + _ANDROID_BINARY_STATIC_DEP,
shared = None,
),
non_android_deps = struct(
static = _STATIC_DEP,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "system",
is_shared = False,
is_binary = True,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _STATIC_DEP + _ANDROID_BINARY_STATIC_DEP,
shared = None,
),
non_android_deps = struct(
static = _STATIC_DEP,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "libc++",
is_shared = False,
is_binary = True,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _ANDROID_BINARY_STATIC_DEP,
shared = _SHARED_DEP,
),
non_android_deps = struct(
static = None,
shared = _SHARED_DEP,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "libc++_static",
is_shared = False,
is_binary = True,
android_deps = struct(
static = _ANDROID_STATIC_DEPS + _STATIC_DEP + _ANDROID_BINARY_STATIC_DEP,
shared = None,
),
non_android_deps = struct(
static = _STATIC_DEP,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS,
linkopts = _WINDOWS_LINKOPTS,
),
) +
_test_stl(
stl = "none",
is_shared = False,
is_binary = True,
android_deps = struct(
static = None,
shared = None,
),
non_android_deps = struct(
static = None,
shared = None,
),
android_flags = struct(
cppflags = _ANDROID_CPPFLAGS,
linkopts = _ANDROID_LINKOPTS,
),
linux_flags = struct(
cppflags = _LINUX_CPPFLAGS,
linkopts = _LINUX_LINKOPTS,
),
linux_bionic_flags = struct(
cppflags = _LINUX_BIONIC_CPPFLAGS,
linkopts = _LINUX_BIONIC_LINKOPTS,
),
darwin_flags = struct(
cppflags = _DARWIN_CPPFLAGS_STL_NONE,
linkopts = _DARWIN_LINKOPTS,
),
windows_flags = struct(
cppflags = _WINDOWS_CPPFLAGS_STL_NONE,
linkopts = _WINDOWS_LINKOPTS,
),
),
)