1*d9f75844SAndroid Build Coastguard Worker# Copyright 2018 The Chromium Authors 2*d9f75844SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*d9f75844SAndroid Build Coastguard Worker# found in the LICENSE file. 4*d9f75844SAndroid Build Coastguard Worker 5*d9f75844SAndroid Build Coastguard Worker# Flags specified here must not impact ABI. Code compiled with and without these 6*d9f75844SAndroid Build Coastguard Worker# opts will be linked together, and in some cases headers compiled with and 7*d9f75844SAndroid Build Coastguard Worker# without these options will be part of the same program. 8*d9f75844SAndroid Build Coastguard Worker 9*d9f75844SAndroid Build Coastguard Workerimport("//build/config/c++/c++.gni") 10*d9f75844SAndroid Build Coastguard Workerimport("//build/config/nacl/config.gni") 11*d9f75844SAndroid Build Coastguard Workerimport("//build/config/sanitizers/sanitizers.gni") 12*d9f75844SAndroid Build Coastguard Workerimport("//build/toolchain/toolchain.gni") 13*d9f75844SAndroid Build Coastguard Workerimport("//build_overrides/build.gni") 14*d9f75844SAndroid Build Coastguard Workerimport("//third_party/abseil-cpp/absl.gni") 15*d9f75844SAndroid Build Coastguard Worker 16*d9f75844SAndroid Build Coastguard Workerconfig("absl_component_build") { 17*d9f75844SAndroid Build Coastguard Worker defines = [ "ABSL_CONSUME_DLL" ] 18*d9f75844SAndroid Build Coastguard Worker} 19*d9f75844SAndroid Build Coastguard Worker 20*d9f75844SAndroid Build Coastguard Workerassert(!is_nacl || is_nacl_saigo, 21*d9f75844SAndroid Build Coastguard Worker "base must not be built in most nacl toolchains") 22*d9f75844SAndroid Build Coastguard Worker 23*d9f75844SAndroid Build Coastguard Workercomponent("absl") { 24*d9f75844SAndroid Build Coastguard Worker public_deps = [ ":absl_component_deps" ] 25*d9f75844SAndroid Build Coastguard Worker if (is_component_build) { 26*d9f75844SAndroid Build Coastguard Worker public_configs = [ ":absl_component_build" ] 27*d9f75844SAndroid Build Coastguard Worker 28*d9f75844SAndroid Build Coastguard Worker if (is_win && is_clang) { 29*d9f75844SAndroid Build Coastguard Worker if (current_cpu == "x64") { 30*d9f75844SAndroid Build Coastguard Worker if (is_debug) { 31*d9f75844SAndroid Build Coastguard Worker sources = [ "symbols_x64_dbg.def" ] 32*d9f75844SAndroid Build Coastguard Worker } else { 33*d9f75844SAndroid Build Coastguard Worker if (is_asan) { 34*d9f75844SAndroid Build Coastguard Worker sources = [ "symbols_x64_rel_asan.def" ] 35*d9f75844SAndroid Build Coastguard Worker } else { 36*d9f75844SAndroid Build Coastguard Worker sources = [ "symbols_x64_rel.def" ] 37*d9f75844SAndroid Build Coastguard Worker } 38*d9f75844SAndroid Build Coastguard Worker } 39*d9f75844SAndroid Build Coastguard Worker } 40*d9f75844SAndroid Build Coastguard Worker if (current_cpu == "x86") { 41*d9f75844SAndroid Build Coastguard Worker if (is_debug) { 42*d9f75844SAndroid Build Coastguard Worker sources = [ "symbols_x86_dbg.def" ] 43*d9f75844SAndroid Build Coastguard Worker } else { 44*d9f75844SAndroid Build Coastguard Worker sources = [ "symbols_x86_rel.def" ] 45*d9f75844SAndroid Build Coastguard Worker } 46*d9f75844SAndroid Build Coastguard Worker } 47*d9f75844SAndroid Build Coastguard Worker if (current_cpu == "arm64") { 48*d9f75844SAndroid Build Coastguard Worker if (is_debug) { 49*d9f75844SAndroid Build Coastguard Worker sources = [ "symbols_arm64_dbg.def" ] 50*d9f75844SAndroid Build Coastguard Worker } else { 51*d9f75844SAndroid Build Coastguard Worker sources = [ "symbols_arm64_rel.def" ] 52*d9f75844SAndroid Build Coastguard Worker } 53*d9f75844SAndroid Build Coastguard Worker } 54*d9f75844SAndroid Build Coastguard Worker } 55*d9f75844SAndroid Build Coastguard Worker } 56*d9f75844SAndroid Build Coastguard Worker} 57*d9f75844SAndroid Build Coastguard Worker 58*d9f75844SAndroid Build Coastguard Workergroup("absl_component_deps") { 59*d9f75844SAndroid Build Coastguard Worker public_deps = [ 60*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/algorithm:container", 61*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/base", 62*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/base:config", 63*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/base:core_headers", 64*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/cleanup", 65*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/container:btree", 66*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/container:fixed_array", 67*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/container:flat_hash_map", 68*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/container:flat_hash_set", 69*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/container:inlined_vector", 70*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/container:node_hash_map", 71*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/container:node_hash_set", 72*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/debugging:failure_signal_handler", 73*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/debugging:stacktrace", 74*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/debugging:symbolize", 75*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/functional:any_invocable", 76*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/functional:bind_front", 77*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/functional:function_ref", 78*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/hash", 79*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/log:die_if_null", 80*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/memory", 81*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/meta:type_traits", 82*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/numeric:bits", 83*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/numeric:int128", 84*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/random", 85*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/random:distributions", 86*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/status", 87*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/status:statusor", 88*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/strings", 89*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/strings:cord", 90*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/strings:str_format", 91*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/synchronization", 92*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/time", 93*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/types:optional", 94*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/types:span", 95*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/types:variant", 96*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/utility", 97*d9f75844SAndroid Build Coastguard Worker ] 98*d9f75844SAndroid Build Coastguard Worker 99*d9f75844SAndroid Build Coastguard Worker # The following dependencies currently don't build with NaCl. 100*d9f75844SAndroid Build Coastguard Worker # TODO(https://crbug.com/1114625): Fix build errors and remove this section. 101*d9f75844SAndroid Build Coastguard Worker if (is_nacl) { 102*d9f75844SAndroid Build Coastguard Worker public_deps -= 103*d9f75844SAndroid Build Coastguard Worker [ "//third_party/abseil-cpp/absl/debugging:failure_signal_handler" ] 104*d9f75844SAndroid Build Coastguard Worker } 105*d9f75844SAndroid Build Coastguard Worker 106*d9f75844SAndroid Build Coastguard Worker visibility = [ ":absl" ] 107*d9f75844SAndroid Build Coastguard Worker} 108*d9f75844SAndroid Build Coastguard Worker 109*d9f75844SAndroid Build Coastguard Workergroup("default") { 110*d9f75844SAndroid Build Coastguard Worker deps = [ 111*d9f75844SAndroid Build Coastguard Worker "absl/types:any", 112*d9f75844SAndroid Build Coastguard Worker "absl/types:bad_any_cast", 113*d9f75844SAndroid Build Coastguard Worker "absl/types:bad_optional_access", 114*d9f75844SAndroid Build Coastguard Worker "absl/types:optional", 115*d9f75844SAndroid Build Coastguard Worker "absl/types:span", 116*d9f75844SAndroid Build Coastguard Worker ] 117*d9f75844SAndroid Build Coastguard Worker} 118*d9f75844SAndroid Build Coastguard Worker 119*d9f75844SAndroid Build Coastguard Workerconfig("absl_include_config") { 120*d9f75844SAndroid Build Coastguard Worker include_dirs = [ "." ] 121*d9f75844SAndroid Build Coastguard Worker} 122*d9f75844SAndroid Build Coastguard Worker 123*d9f75844SAndroid Build Coastguard Workerconfig("absl_define_config") { 124*d9f75844SAndroid Build Coastguard Worker defines = [ "ABSL_ALLOCATOR_NOTHROW=1" ] 125*d9f75844SAndroid Build Coastguard Worker 126*d9f75844SAndroid Build Coastguard Worker if (is_win && !use_custom_libcxx) { 127*d9f75844SAndroid Build Coastguard Worker defines += [ 128*d9f75844SAndroid Build Coastguard Worker # See crbug.com/1101367: Acknowledge extended alignment when using 129*d9f75844SAndroid Build Coastguard Worker # MSVC's standard library. 130*d9f75844SAndroid Build Coastguard Worker "_ENABLE_EXTENDED_ALIGNED_STORAGE", 131*d9f75844SAndroid Build Coastguard Worker ] 132*d9f75844SAndroid Build Coastguard Worker } 133*d9f75844SAndroid Build Coastguard Worker} 134*d9f75844SAndroid Build Coastguard Worker 135*d9f75844SAndroid Build Coastguard Workerconfig("absl_default_cflags_cc") { 136*d9f75844SAndroid Build Coastguard Worker cflags_cc = [] 137*d9f75844SAndroid Build Coastguard Worker if (is_clang) { 138*d9f75844SAndroid Build Coastguard Worker cflags_cc += [ 139*d9f75844SAndroid Build Coastguard Worker # TODO(crbug.com/588506): Explicitly enable conversion warnings. 140*d9f75844SAndroid Build Coastguard Worker "-Wbool-conversion", 141*d9f75844SAndroid Build Coastguard Worker "-Wconstant-conversion", 142*d9f75844SAndroid Build Coastguard Worker "-Wenum-conversion", 143*d9f75844SAndroid Build Coastguard Worker "-Wint-conversion", 144*d9f75844SAndroid Build Coastguard Worker "-Wliteral-conversion", 145*d9f75844SAndroid Build Coastguard Worker "-Wnon-literal-null-conversion", 146*d9f75844SAndroid Build Coastguard Worker "-Wnull-conversion", 147*d9f75844SAndroid Build Coastguard Worker "-Wobjc-literal-conversion", 148*d9f75844SAndroid Build Coastguard Worker "-Wstring-conversion", 149*d9f75844SAndroid Build Coastguard Worker ] 150*d9f75844SAndroid Build Coastguard Worker if (!is_nacl) { 151*d9f75844SAndroid Build Coastguard Worker cflags_cc += [ "-Wbitfield-enum-conversion" ] 152*d9f75844SAndroid Build Coastguard Worker } 153*d9f75844SAndroid Build Coastguard Worker } 154*d9f75844SAndroid Build Coastguard Worker} 155*d9f75844SAndroid Build Coastguard Worker 156*d9f75844SAndroid Build Coastguard Workerconfig("absl_test_cflags_cc") { 157*d9f75844SAndroid Build Coastguard Worker cflags_cc = [] 158*d9f75844SAndroid Build Coastguard Worker if (is_clang || !is_win) { 159*d9f75844SAndroid Build Coastguard Worker cflags_cc += [ 160*d9f75844SAndroid Build Coastguard Worker "-Wno-conversion-null", 161*d9f75844SAndroid Build Coastguard Worker "-Wno-missing-declarations", 162*d9f75844SAndroid Build Coastguard Worker "-Wno-unused-function", 163*d9f75844SAndroid Build Coastguard Worker "-Wno-unused-parameter", 164*d9f75844SAndroid Build Coastguard Worker "-Wno-unused-private-field", 165*d9f75844SAndroid Build Coastguard Worker ] 166*d9f75844SAndroid Build Coastguard Worker } 167*d9f75844SAndroid Build Coastguard Worker if (is_win) { 168*d9f75844SAndroid Build Coastguard Worker cflags_cc += [ 169*d9f75844SAndroid Build Coastguard Worker "/wd4101", # unreferenced local variable 170*d9f75844SAndroid Build Coastguard Worker ] 171*d9f75844SAndroid Build Coastguard Worker } 172*d9f75844SAndroid Build Coastguard Worker} 173*d9f75844SAndroid Build Coastguard Worker 174*d9f75844SAndroid Build Coastguard Workerconfig("absl_test_config") { 175*d9f75844SAndroid Build Coastguard Worker cflags_cc = [] 176*d9f75844SAndroid Build Coastguard Worker if (is_win && !is_clang) { 177*d9f75844SAndroid Build Coastguard Worker cflags_cc += [ "/wd4996" ] 178*d9f75844SAndroid Build Coastguard Worker } 179*d9f75844SAndroid Build Coastguard Worker if (is_clang) { 180*d9f75844SAndroid Build Coastguard Worker cflags_cc += [ 181*d9f75844SAndroid Build Coastguard Worker "-Wno-deprecated-declarations", 182*d9f75844SAndroid Build Coastguard Worker "-Wno-unused-private-field", 183*d9f75844SAndroid Build Coastguard Worker "-Wno-unused-function", 184*d9f75844SAndroid Build Coastguard Worker ] 185*d9f75844SAndroid Build Coastguard Worker } 186*d9f75844SAndroid Build Coastguard Worker} 187*d9f75844SAndroid Build Coastguard Worker 188*d9f75844SAndroid Build Coastguard Workerif (build_with_chromium) { 189*d9f75844SAndroid Build Coastguard Worker import("//testing/test.gni") 190*d9f75844SAndroid Build Coastguard Worker 191*d9f75844SAndroid Build Coastguard Worker if (!is_component_build) { 192*d9f75844SAndroid Build Coastguard Worker test("absl_tests") { 193*d9f75844SAndroid Build Coastguard Worker testonly = true 194*d9f75844SAndroid Build Coastguard Worker deps = [ 195*d9f75844SAndroid Build Coastguard Worker "absl/algorithm:algorithm_test", 196*d9f75844SAndroid Build Coastguard Worker "absl/algorithm:container_test", 197*d9f75844SAndroid Build Coastguard Worker "absl/base:config_test", 198*d9f75844SAndroid Build Coastguard Worker "absl/base:prefetch_test", 199*d9f75844SAndroid Build Coastguard Worker "absl/cleanup:cleanup_test", 200*d9f75844SAndroid Build Coastguard Worker "absl/container:common_policy_traits_test", 201*d9f75844SAndroid Build Coastguard Worker "absl/container:inlined_vector_test", 202*d9f75844SAndroid Build Coastguard Worker "absl/container:node_slot_policy_test", 203*d9f75844SAndroid Build Coastguard Worker "absl/container:sample_element_size_test", 204*d9f75844SAndroid Build Coastguard Worker "absl/functional:any_invocable_test", 205*d9f75844SAndroid Build Coastguard Worker "absl/hash:hash_test", 206*d9f75844SAndroid Build Coastguard Worker "absl/hash:low_level_hash_test", 207*d9f75844SAndroid Build Coastguard Worker "absl/log:basic_log_test", 208*d9f75844SAndroid Build Coastguard Worker "absl/log:check_test", 209*d9f75844SAndroid Build Coastguard Worker "absl/log:die_if_null_test", 210*d9f75844SAndroid Build Coastguard Worker "absl/log:flags_test", 211*d9f75844SAndroid Build Coastguard Worker "absl/log:globals_test", 212*d9f75844SAndroid Build Coastguard Worker "absl/log:log_entry_test", 213*d9f75844SAndroid Build Coastguard Worker "absl/log:log_format_test", 214*d9f75844SAndroid Build Coastguard Worker "absl/log:log_macro_hygiene_test", 215*d9f75844SAndroid Build Coastguard Worker "absl/log:log_modifier_methods_test", 216*d9f75844SAndroid Build Coastguard Worker "absl/log:log_sink_test", 217*d9f75844SAndroid Build Coastguard Worker "absl/log:log_streamer_test", 218*d9f75844SAndroid Build Coastguard Worker "absl/log:scoped_mock_log_test", 219*d9f75844SAndroid Build Coastguard Worker "absl/log:stripping_test", 220*d9f75844SAndroid Build Coastguard Worker "absl/log/internal:stderr_log_sink_test", 221*d9f75844SAndroid Build Coastguard Worker "absl/memory:memory_test", 222*d9f75844SAndroid Build Coastguard Worker "absl/meta:type_traits_test", 223*d9f75844SAndroid Build Coastguard Worker "absl/profiling:exponential_biased_test", 224*d9f75844SAndroid Build Coastguard Worker "absl/profiling:periodic_sampler_test", 225*d9f75844SAndroid Build Coastguard Worker "absl/status:statusor_test", 226*d9f75844SAndroid Build Coastguard Worker "absl/strings:ascii_test", 227*d9f75844SAndroid Build Coastguard Worker "absl/strings:cord_buffer_test", 228*d9f75844SAndroid Build Coastguard Worker "absl/strings:cord_data_edge_test", 229*d9f75844SAndroid Build Coastguard Worker "absl/strings:cord_rep_btree_navigator_test", 230*d9f75844SAndroid Build Coastguard Worker "absl/strings:cord_rep_btree_reader_test", 231*d9f75844SAndroid Build Coastguard Worker "absl/strings:cord_rep_btree_test", 232*d9f75844SAndroid Build Coastguard Worker "absl/strings:cord_rep_crc_test", 233*d9f75844SAndroid Build Coastguard Worker "absl/strings:cordz_functions_test", 234*d9f75844SAndroid Build Coastguard Worker "absl/strings:cordz_info_statistics_test", 235*d9f75844SAndroid Build Coastguard Worker "absl/strings:cordz_info_test", 236*d9f75844SAndroid Build Coastguard Worker "absl/strings:cordz_test", 237*d9f75844SAndroid Build Coastguard Worker "absl/strings:cordz_update_scope_test", 238*d9f75844SAndroid Build Coastguard Worker "absl/strings:cordz_update_tracker_test", 239*d9f75844SAndroid Build Coastguard Worker "absl/strings:damerau_levenshtein_distance_test", 240*d9f75844SAndroid Build Coastguard Worker "absl/strings:match_test", 241*d9f75844SAndroid Build Coastguard Worker "absl/strings:str_replace_test", 242*d9f75844SAndroid Build Coastguard Worker "absl/strings:string_view_test", 243*d9f75844SAndroid Build Coastguard Worker "absl/types:optional_test", 244*d9f75844SAndroid Build Coastguard Worker "absl/types:variant_test", 245*d9f75844SAndroid Build Coastguard Worker "//third_party/googletest:gtest_main", 246*d9f75844SAndroid Build Coastguard Worker ] 247*d9f75844SAndroid Build Coastguard Worker } 248*d9f75844SAndroid Build Coastguard Worker } 249*d9f75844SAndroid Build Coastguard Worker 250*d9f75844SAndroid Build Coastguard Worker test("absl_hardening_tests") { 251*d9f75844SAndroid Build Coastguard Worker testonly = true 252*d9f75844SAndroid Build Coastguard Worker sources = [ "absl_hardening_test.cc" ] 253*d9f75844SAndroid Build Coastguard Worker deps = [ 254*d9f75844SAndroid Build Coastguard Worker "//base/test:run_all_unittests", 255*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/base:config", 256*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/container:fixed_array", 257*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/container:inlined_vector", 258*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/strings", 259*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/types:optional", 260*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/types:span", 261*d9f75844SAndroid Build Coastguard Worker "//third_party/abseil-cpp/absl/types:variant", 262*d9f75844SAndroid Build Coastguard Worker "//third_party/googletest:gtest", 263*d9f75844SAndroid Build Coastguard Worker ] 264*d9f75844SAndroid Build Coastguard Worker } 265*d9f75844SAndroid Build Coastguard Worker} 266