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