blob: 65194fd063fa74eeb546ebe59076a1ca7ae1b077 [file] [log] [blame]
# Copyright 2018 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Flags specified here must not impact ABI. Code compiled with and without these
# opts will be linked together, and in some cases headers compiled with and
# without these options will be part of the same program.
import("//build/config/c++/c++.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build/toolchain/toolchain.gni")
import("//build_overrides/build.gni")
import("//flutter/third_party/abseil-cpp/absl.gni")
config("absl_component_build") {
defines = [ "ABSL_CONSUME_DLL" ]
}
assert(!is_nacl || is_nacl_saigo,
"base must not be built in most nacl toolchains")
component("absl") {
public_deps = [ ":absl_component_deps" ]
if (is_component_build) {
public_configs = [ ":absl_component_build" ]
if (is_win && is_clang) {
if (current_cpu == "x64") {
if (is_debug) {
sources = [ "symbols_x64_dbg.def" ]
} else {
if (is_asan) {
sources = [ "symbols_x64_rel_asan.def" ]
} else {
sources = [ "symbols_x64_rel.def" ]
}
}
}
if (current_cpu == "x86") {
if (is_debug) {
sources = [ "symbols_x86_dbg.def" ]
} else {
sources = [ "symbols_x86_rel.def" ]
}
}
if (current_cpu == "arm64") {
if (is_debug) {
sources = [ "symbols_arm64_dbg.def" ]
} else {
sources = [ "symbols_arm64_rel.def" ]
}
}
}
}
}
group("absl_component_deps") {
public_deps = [
"//flutter/third_party/abseil-cpp/absl/algorithm:container",
"//flutter/third_party/abseil-cpp/absl/base",
"//flutter/third_party/abseil-cpp/absl/base:config",
"//flutter/third_party/abseil-cpp/absl/base:core_headers",
"//flutter/third_party/abseil-cpp/absl/base:no_destructor",
"//flutter/third_party/abseil-cpp/absl/base:nullability",
"//flutter/third_party/abseil-cpp/absl/base:prefetch",
"//flutter/third_party/abseil-cpp/absl/cleanup",
"//flutter/third_party/abseil-cpp/absl/container:btree",
"//flutter/third_party/abseil-cpp/absl/container:fixed_array",
"//flutter/third_party/abseil-cpp/absl/container:flat_hash_map",
"//flutter/third_party/abseil-cpp/absl/container:flat_hash_set",
"//flutter/third_party/abseil-cpp/absl/container:inlined_vector",
"//flutter/third_party/abseil-cpp/absl/container:node_hash_map",
"//flutter/third_party/abseil-cpp/absl/container:node_hash_set",
"//flutter/third_party/abseil-cpp/absl/debugging:failure_signal_handler",
"//flutter/third_party/abseil-cpp/absl/debugging:stacktrace",
"//flutter/third_party/abseil-cpp/absl/debugging:symbolize",
"//flutter/third_party/abseil-cpp/absl/functional:any_invocable",
"//flutter/third_party/abseil-cpp/absl/functional:bind_front",
"//flutter/third_party/abseil-cpp/absl/functional:function_ref",
"//flutter/third_party/abseil-cpp/absl/functional:overload",
"//flutter/third_party/abseil-cpp/absl/hash",
"//flutter/third_party/abseil-cpp/absl/log:absl_check",
"//flutter/third_party/abseil-cpp/absl/log:absl_log",
"//flutter/third_party/abseil-cpp/absl/log:die_if_null",
"//flutter/third_party/abseil-cpp/absl/memory",
"//flutter/third_party/abseil-cpp/absl/meta:type_traits",
"//flutter/third_party/abseil-cpp/absl/numeric:bits",
"//flutter/third_party/abseil-cpp/absl/numeric:int128",
"//flutter/third_party/abseil-cpp/absl/random",
"//flutter/third_party/abseil-cpp/absl/random:distributions",
"//flutter/third_party/abseil-cpp/absl/status",
"//flutter/third_party/abseil-cpp/absl/status:statusor",
"//flutter/third_party/abseil-cpp/absl/strings",
"//flutter/third_party/abseil-cpp/absl/strings:cord",
"//flutter/third_party/abseil-cpp/absl/strings:has_ostream_operator",
"//flutter/third_party/abseil-cpp/absl/strings:str_format",
"//flutter/third_party/abseil-cpp/absl/strings:string_view",
"//flutter/third_party/abseil-cpp/absl/synchronization",
"//flutter/third_party/abseil-cpp/absl/time",
"//flutter/third_party/abseil-cpp/absl/types:optional",
"//flutter/third_party/abseil-cpp/absl/types:span",
"//flutter/third_party/abseil-cpp/absl/types:variant",
"//flutter/third_party/abseil-cpp/absl/utility",
]
# The following dependencies currently don't build with NaCl.
# TODO(https://crbug.com/1114625): Fix build errors and remove this section.
if (is_nacl) {
public_deps -=
[ "//flutter/third_party/abseil-cpp/absl/debugging:failure_signal_handler" ]
}
visibility = [ ":absl" ]
}
config("absl_include_config") {
include_dirs = [ "." ]
cflags_cc = [
"-Wno-unknown-warning-option",
"-Wno-deprecated-builtins",
]
cflags_objcc = [
"-Wno-unknown-warning-option",
"-Wno-deprecated-builtins",
]
}
config("absl_define_config") {
defines = [ "ABSL_ALLOCATOR_NOTHROW=1" ]
if (is_win && !use_custom_libcxx) {
defines += [
# See crbug.com/1101367: Acknowledge extended alignment when using
# MSVC's standard library.
"_ENABLE_EXTENDED_ALIGNED_STORAGE",
]
}
}
config("absl_default_cflags_cc") {
cflags_cc = []
if (is_clang) {
cflags_cc += [
# TODO(crbug.com/588506): Explicitly enable conversion warnings.
"-Wbool-conversion",
"-Wconstant-conversion",
"-Wenum-conversion",
"-Wint-conversion",
"-Wliteral-conversion",
"-Wnon-literal-null-conversion",
"-Wnull-conversion",
"-Wobjc-literal-conversion",
"-Wstring-conversion",
]
if (!is_nacl) {
cflags_cc += [ "-Wbitfield-enum-conversion" ]
}
}
}
config("absl_test_cflags_cc") {
cflags_cc = []
if (is_clang || !is_win) {
cflags_cc += [
"-Wno-conversion-null",
"-Wno-missing-declarations",
"-Wno-unused-function",
"-Wno-unused-parameter",
"-Wno-unused-private-field",
]
}
if (is_win) {
cflags_cc += [
"/wd4101", # unreferenced local variable
]
}
}
config("absl_test_config") {
cflags_cc = []
if (is_win && !is_clang) {
cflags_cc += [ "/wd4996" ]
}
if (is_clang) {
cflags_cc += [
"-Wno-deprecated-declarations",
"-Wno-implicit-const-int-float-conversion",
"-Wno-unused-private-field",
"-Wno-unused-function",
]
}
}
if (build_with_chromium) {
import("//testing/test.gni")
if (!is_component_build) {
test("absl_tests") {
testonly = true
deps = [
"absl/algorithm:algorithm_test",
"absl/algorithm:container_test",
"absl/base:config_test",
"absl/base:no_destructor_test",
"absl/base:nullability_test",
"absl/base:prefetch_test",
"absl/cleanup:cleanup_test",
# TODO(mbonadei): Fix issue with EXPECT_DEATH and uncomment.
# "absl/container:btree_test",
"absl/container:common_policy_traits_test",
"absl/container:fixed_array_test",
"absl/container:flat_hash_map_test",
"absl/container:flat_hash_set_test",
"absl/container:hash_function_defaults_test",
"absl/container:inlined_vector_test",
"absl/container:node_slot_policy_test",
"absl/container:raw_hash_set_allocator_test",
"absl/container:raw_hash_set_test",
"absl/container:sample_element_size_test",
"absl/crc:crc32c_test",
"absl/crc:crc_cord_state_test",
"absl/crc:crc_memcpy_test",
"absl/crc:non_temporal_memcpy_test",
"absl/debugging:stacktrace_test",
"absl/flags:flag_test",
"absl/functional:any_invocable_test",
"absl/functional:function_ref_test",
"absl/functional:overload_test",
"absl/hash:hash_instantiated_test",
"absl/hash:hash_test",
"absl/hash:low_level_hash_test",
"absl/log:absl_check_test",
"absl/log:absl_log_basic_test",
"absl/log:die_if_null_test",
"absl/log:flags_test",
"absl/log:globals_test",
"absl/log:log_entry_test",
"absl/log:log_format_test",
"absl/log:log_macro_hygiene_test",
"absl/log:log_modifier_methods_test",
"absl/log:log_sink_test",
"absl/log:log_streamer_test",
"absl/log:scoped_mock_log_test",
"absl/log:stripping_test",
"absl/log:vlog_is_on_test",
"absl/log/internal:fnmatch_test",
"absl/log/internal:stderr_log_sink_test",
"absl/memory:memory_test",
"absl/meta:type_traits_test",
"absl/numeric:int128_test",
"absl/profiling:exponential_biased_test",
"absl/profiling:periodic_sampler_test",
"absl/status:status_test",
"absl/status:statusor_test",
"absl/strings:ascii_test",
"absl/strings:char_formatting_test",
"absl/strings:charset_test",
"absl/strings:cord_buffer_test",
"absl/strings:cord_data_edge_test",
"absl/strings:cord_rep_btree_navigator_test",
"absl/strings:cord_rep_btree_reader_test",
"absl/strings:cord_rep_btree_test",
"absl/strings:cord_rep_crc_test",
"absl/strings:cordz_functions_test",
"absl/strings:cordz_info_statistics_test",
"absl/strings:cordz_info_test",
"absl/strings:cordz_test",
"absl/strings:cordz_update_scope_test",
"absl/strings:cordz_update_tracker_test",
"absl/strings:damerau_levenshtein_distance_test",
"absl/strings:has_absl_stringify_test",
"absl/strings:has_ostream_operator_test",
"absl/strings:match_test",
"absl/strings:str_format_arg_test",
"absl/strings:str_format_bind_test",
"absl/strings:str_format_checker_test",
"absl/strings:str_format_convert_test",
"absl/strings:str_format_extension_test",
"absl/strings:str_format_output_test",
"absl/strings:str_format_parser_test",
"absl/strings:str_format_test",
"absl/strings:str_replace_test",
"absl/strings:string_view_test",
"absl/synchronization:kernel_timeout_internal_test",
"absl/synchronization:waiter_test",
"absl/time:time_test",
"absl/types:optional_test",
"absl/types:variant_test",
"absl/utility:if_constexpr_test",
"//third_party/googletest:gtest_main",
]
}
}
test("absl_hardening_tests") {
testonly = true
sources = [ "absl_hardening_test.cc" ]
deps = [
":absl",
"//base/test:run_all_unittests",
"//third_party/googletest:gtest",
]
}
}