Expand bazel->gn script to support absl/container/BUILD.bazel Bug: 524565513 Change-Id: I3ca7f040f7187b1d3aed7f6eebb77fe14a886e73 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8159981 Reviewed-by: Mirko Bonadei <mbonadei@chromium.org> Commit-Queue: Danil Chapovalov <danilchap@chromium.org> Cr-Commit-Position: refs/heads/main@{#1669355} NOKEYCHECK=True GitOrigin-RevId: 1bff30167c211f22dcf561c73390482cde7a4b53
diff --git a/BUILD.gn b/BUILD.gn index a5ff686..86c92f9 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -293,7 +293,12 @@ "absl/container:flat_hash_map_test", "absl/container:flat_hash_set_test", "absl/container:hash_function_defaults_test", + "absl/container:hash_policy_testing_test", + "absl/container:hash_policy_traits_test", + "absl/container:hashtable_control_bytes_test", + "absl/container:hashtablez_sampler_test", "absl/container:inlined_vector_test", + "absl/container:layout_test", "absl/container:linked_hash_map_test", "absl/container:linked_hash_set_test", "absl/container:node_hash_map_test", @@ -302,6 +307,9 @@ "absl/container:raw_hash_set_allocator_test", "absl/container:raw_hash_set_resize_impl_test", "absl/container:sample_element_size_test", + "absl/container:test_instance_tracker_test", + "absl/container:unordered_map_test", + "absl/container:unordered_set_test", "absl/crc:crc32c_test", "absl/crc:crc_cord_state_test", "absl/crc:crc_memcpy_test",
diff --git a/absl/container/BUILD.gn b/absl/container/BUILD.gn index a49dc28..021569a 100644 --- a/absl/container/BUILD.gn +++ b/absl/container/BUILD.gn
@@ -1,6 +1,8 @@ # 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. +# +# Generated file. DO NOT EDIT. import("//third_party/abseil-cpp/absl.gni") @@ -10,7 +12,7 @@ } absl_test("compressed_tuple_test") { - public = [ "internal/compressed_tuple_test.cc" ] + sources = [ "internal/compressed_tuple_test.cc" ] deps = [ ":compressed_tuple", ":test_instance_tracker", @@ -40,7 +42,6 @@ deps = [ ":fixed_array", ":test_allocator", - ":test_instance_tracker", "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/base:exception_testing", "//third_party/abseil-cpp/absl/base:hardening", @@ -50,8 +51,12 @@ ] } +# skipped because chromium doesn't use c++ exceptions +# absl_test("fixed_array_exception_safety_test") + absl_source_set("inlined_vector_internal") { public = [ "internal/inlined_vector.h" ] + visibility = [ ":*" ] deps = [ ":compressed_tuple", "//third_party/abseil-cpp/absl/base:base_internal", @@ -82,11 +87,11 @@ absl_source_set("test_allocator") { testonly = true public = [ "internal/test_allocator.h" ] + visibility = [ ":*" ] deps = [ "//third_party/abseil-cpp/absl/base:config", "//third_party/googletest:gtest", ] - visibility = [ ":*" ] } absl_test("inlined_vector_test") { @@ -107,12 +112,20 @@ ] } +# skipped because chromium doesn't use c++ exceptions +# absl_test("inlined_vector_exception_safety_test") + absl_source_set("test_instance_tracker") { testonly = true sources = [ "internal/test_instance_tracker.cc" ] public = [ "internal/test_instance_tracker.h" ] - deps = [ "//third_party/abseil-cpp/absl/types:compare" ] visibility = [ "//third_party/abseil-cpp/absl/*" ] + deps = [ "//third_party/abseil-cpp/absl/types:compare" ] +} + +absl_test("test_instance_tracker_test") { + sources = [ "internal/test_instance_tracker_test.cc" ] + deps = [ ":test_instance_tracker" ] } absl_source_set("flat_hash_map") { @@ -174,6 +187,7 @@ "//third_party/abseil-cpp/absl/log:check", "//third_party/abseil-cpp/absl/memory", "//third_party/abseil-cpp/absl/strings", + "//third_party/abseil-cpp/absl/strings:string_view", ] } @@ -236,6 +250,7 @@ absl_source_set("container_memory") { public = [ "internal/container_memory.h" ] + visibility = [ "//third_party/abseil-cpp/absl/*" ] deps = [ "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/hash", @@ -246,21 +261,11 @@ } # Disabled because container_memory_test requires -frtti -# absl_test("container_memory_test") { -# sources = [ "internal/container_memory_test.cc" ] -# deps = [ -# ":container_memory", -# ":test_instance_tracker", -# "//third_party/abseil-cpp/absl/base:config", -# "//third_party/abseil-cpp/absl/base:no_destructor", -# "//third_party/abseil-cpp/absl/meta:type_traits", -# "//third_party/abseil-cpp/absl/strings", -# ] -# } +# absl_test("container_memory_test") absl_source_set("hash_function_defaults") { public = [ "internal/hash_function_defaults.h" ] - visibility = [ "//third_party/abseil-cpp/absl/container:*" ] + visibility = [ ":*" ] deps = [ ":common", "//third_party/abseil-cpp/absl/base:config", @@ -291,6 +296,7 @@ "//third_party/abseil-cpp/absl/strings", "//third_party/abseil-cpp/absl/strings:cord", "//third_party/abseil-cpp/absl/strings:cord_test_helpers", + "//third_party/abseil-cpp/absl/strings:string_view", ] } @@ -298,6 +304,7 @@ testonly = true sources = [ "internal/hash_generator_testing.cc" ] public = [ "internal/hash_generator_testing.h" ] + visibility = [ ":*" ] deps = [ ":hash_policy_testing", "//third_party/abseil-cpp/absl/base:config", @@ -305,6 +312,7 @@ "//third_party/abseil-cpp/absl/memory", "//third_party/abseil-cpp/absl/meta:type_traits", "//third_party/abseil-cpp/absl/random", + "//third_party/abseil-cpp/absl/strings", "//third_party/abseil-cpp/absl/strings:string_view", ] } @@ -312,14 +320,22 @@ absl_source_set("hash_policy_testing") { testonly = true public = [ "internal/hash_policy_testing.h" ] + visibility = [ ":*" ] deps = [ "//third_party/abseil-cpp/absl/hash", + "//third_party/abseil-cpp/absl/strings", "//third_party/abseil-cpp/absl/strings:string_view", ] } +absl_test("hash_policy_testing_test") { + sources = [ "internal/hash_policy_testing_test.cc" ] + deps = [ ":hash_policy_testing" ] +} + absl_source_set("hash_policy_traits") { public = [ "internal/hash_policy_traits.h" ] + visibility = [ ":*" ] deps = [ ":common_policy_traits", ":container_memory", @@ -327,9 +343,17 @@ ] } +absl_test("hash_policy_traits_test") { + sources = [ "internal/hash_policy_traits_test.cc" ] + deps = [ + ":container_memory", + ":hash_policy_traits", + ] +} + absl_source_set("common_policy_traits") { public = [ "internal/common_policy_traits.h" ] - visibility = [ "//third_party/abseil-cpp/absl/container:*" ] + visibility = [ ":*" ] deps = [ "//third_party/abseil-cpp/absl/meta:type_traits" ] } @@ -343,20 +367,23 @@ absl_source_set("hashtable_debug") { public = [ "internal/hashtable_debug.h" ] + visibility = [ ":*" ] deps = [ ":hashtable_debug_hooks" ] } absl_source_set("hashtable_debug_hooks") { public = [ "internal/hashtable_debug_hooks.h" ] + visibility = [ ":*" ] deps = [ "//third_party/abseil-cpp/absl/base:config" ] } absl_source_set("hashtablez_sampler") { - public = [ "internal/hashtablez_sampler.h" ] sources = [ "internal/hashtablez_sampler.cc", "internal/hashtablez_sampler_force_weak_definition.cc", ] + public = [ "internal/hashtablez_sampler.h" ] + visibility = [ "//third_party/abseil-cpp/absl/*" ] deps = [ "//third_party/abseil-cpp/absl/base", "//third_party/abseil-cpp/absl/base:config", @@ -373,8 +400,26 @@ ] } +absl_test("hashtablez_sampler_test") { + sources = [ "internal/hashtablez_sampler_test.cc" ] + deps = [ + ":hashtablez_sampler", + "//third_party/abseil-cpp/absl/base:config", + "//third_party/abseil-cpp/absl/base:core_headers", + "//third_party/abseil-cpp/absl/profiling:sample_recorder", + "//third_party/abseil-cpp/absl/random", + "//third_party/abseil-cpp/absl/synchronization", + "//third_party/abseil-cpp/absl/synchronization:thread_pool", + "//third_party/abseil-cpp/absl/time", + ] + if (is_win) { + sources = [] + } +} + absl_source_set("node_slot_policy") { public = [ "internal/node_slot_policy.h" ] + visibility = [ "//third_party/abseil-cpp/absl/*" ] deps = [ "//third_party/abseil-cpp/absl/base:config" ] } @@ -389,6 +434,7 @@ absl_source_set("raw_hash_map") { public = [ "internal/raw_hash_map.h" ] + visibility = [ "//third_party/abseil-cpp/absl/*" ] deps = [ ":common_policy_traits", ":container_memory", @@ -402,6 +448,7 @@ absl_source_set("common") { public = [ "internal/common.h" ] + visibility = [ ":*" ] deps = [ "//third_party/abseil-cpp/absl/meta:type_traits", "//third_party/abseil-cpp/absl/types:optional", @@ -410,6 +457,7 @@ absl_source_set("hashtable_control_bytes") { public = [ "internal/hashtable_control_bytes.h" ] + visibility = [ ":*" ] deps = [ "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/base:core_headers", @@ -418,8 +466,17 @@ ] } +absl_test("hashtable_control_bytes_test") { + sources = [ "internal/hashtable_control_bytes_test.cc" ] + deps = [ + ":hashtable_control_bytes", + "//third_party/abseil-cpp/absl/base:config", + ] +} + absl_source_set("raw_hash_set_resize_impl") { public = [ "internal/raw_hash_set_resize_impl.h" ] + visibility = [ ":*" ] deps = [ "//third_party/abseil-cpp/absl/base:config" ] } @@ -464,6 +521,7 @@ } # raw_hash_set_test uses typeid(), i.e., relies on RTTI. +# absl_test("raw_hash_set_test") absl_test("raw_hash_set_allocator_test") { sources = [ "internal/raw_hash_set_allocator_test.cc" ] @@ -502,6 +560,7 @@ absl_source_set("tracked") { testonly = true public = [ "internal/tracked.h" ] + visibility = [ ":*" ] deps = [ "//third_party/abseil-cpp/absl/base:config" ] } @@ -513,6 +572,7 @@ ":hash_generator_testing", ":hash_policy_testing", "//third_party/abseil-cpp/absl/base:config", + "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] } @@ -524,6 +584,7 @@ deps = [ ":hash_generator_testing", ":hash_policy_testing", + "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] } @@ -535,6 +596,7 @@ deps = [ ":hash_generator_testing", ":hash_policy_testing", + "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] } @@ -548,6 +610,7 @@ ":hash_policy_testing", "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/meta:type_traits", + "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] } @@ -558,6 +621,7 @@ visibility = [ ":*" ] deps = [ "//third_party/abseil-cpp/absl/meta:type_traits", + "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] } @@ -568,6 +632,7 @@ visibility = [ ":*" ] deps = [ "//third_party/abseil-cpp/absl/meta:type_traits", + "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] } @@ -579,6 +644,7 @@ deps = [ ":hash_generator_testing", ":hash_policy_testing", + "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] } @@ -590,12 +656,33 @@ deps = [ ":hash_generator_testing", ":hash_policy_testing", + "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] } +absl_test("unordered_set_test") { + sources = [ "internal/unordered_set_test.cc" ] + deps = [ + ":unordered_set_constructor_test", + ":unordered_set_lookup_test", + ":unordered_set_members_test", + ":unordered_set_modifiers_test", + ] +} + +absl_test("unordered_map_test") { + sources = [ "internal/unordered_map_test.cc" ] + deps = [ + ":unordered_map_constructor_test", + ":unordered_map_lookup_test", + ":unordered_map_members_test", + ":unordered_map_modifiers_test", + ] +} + absl_test("sample_element_size_test") { - public = [ "sample_element_size_test.cc" ] + sources = [ "sample_element_size_test.cc" ] deps = [ ":flat_hash_map", ":flat_hash_set", @@ -628,6 +715,7 @@ "//third_party/abseil-cpp/absl/hash:weakly_mixed_integer", "//third_party/abseil-cpp/absl/memory", "//third_party/abseil-cpp/absl/meta:type_traits", + "//third_party/abseil-cpp/absl/strings", "//third_party/abseil-cpp/absl/strings:cord", "//third_party/abseil-cpp/absl/strings:string_view", "//third_party/abseil-cpp/absl/types:compare", @@ -637,6 +725,7 @@ absl_source_set("btree_test_common") { testonly = true public = [ "btree_test.h" ] + visibility = [ ":*" ] deps = [ ":btree", ":flat_hash_set", @@ -647,24 +736,7 @@ } # TODO(mbonadei): Fix issue with EXPECT_DEATH and uncomment. -# absl_test("btree_test") { -# sources = [ "btree_test.cc" ] -# deps = [ -# ":btree", -# ":btree_test_common", -# ":test_allocator", -# ":test_instance_tracker", -# "//third_party/abseil-cpp/absl/algorithm:container", -# "//third_party/abseil-cpp/absl/base:core_headers", -# "//third_party/abseil-cpp/absl/base:raw_logging_internal", -# "//third_party/abseil-cpp/absl/flags:flag", -# "//third_party/abseil-cpp/absl/hash:hash_testing", -# "//third_party/abseil-cpp/absl/memory", -# "//third_party/abseil-cpp/absl/random", -# "//third_party/abseil-cpp/absl/strings", -# "//third_party/abseil-cpp/absl/types:compare", -# ] -# } +# absl_test("btree_test") absl_source_set("heterogeneous_lookup_testing") { testonly = true @@ -673,6 +745,7 @@ deps = [ "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/container:test_instance_tracker", + "//third_party/googletest:gmock", "//third_party/googletest:gtest", ] } @@ -705,8 +778,6 @@ ] } -# absl_test("linked_hash_set_benchmark") - absl_source_set("linked_hash_map") { public = [ "linked_hash_map.h" ] deps = [ @@ -737,8 +808,6 @@ ] } -# absl_test("linked_hash_map_benchmark") - absl_source_set("chunked_queue") { sources = [ "internal/chunked_queue.h" ] public = [ "chunked_queue.h" ] @@ -762,4 +831,3 @@ "//third_party/abseil-cpp/absl/strings", ] } -# absl_test("chunked_queue_benchmark")
diff --git a/convert_bazel_to_gn.py b/convert_bazel_to_gn.py index 7636e2e..368d7db 100755 --- a/convert_bazel_to_gn.py +++ b/convert_bazel_to_gn.py
@@ -18,6 +18,20 @@ _SKIP_TARGETS = { 'types:any_span_test': 'any_span_test is not ported because relies on RTTI', + 'container:btree_test': + 'TODO(mbonadei): Fix issue with EXPECT_DEATH and uncomment.', + 'container:container_memory_test': + 'Disabled because container_memory_test requires -frtti', + 'container:raw_hash_set_test': + 'raw_hash_set_test uses typeid(), i.e., relies on RTTI.', +} + +# Extra build rules added at the end. The reason they are needed vary per target. +_ADD_CONTENT = { + 'container:hashtablez_sampler_test': + 'if (is_win) { sources = [] }', + 'container:test_allocator': + 'deps = [ "//third_party/abseil-cpp/absl/base:config", "//third_party/googletest:gtest" ]', } def _ast_get_value(node): @@ -65,7 +79,8 @@ parts = vis.split(':') pkg = parts[0] rule = parts[1] if len(parts) > 1 else '' - gn_pkg = '//third_party/abseil-cpp/' + pkg[2:] + gn_pkg = '' if pkg[7:] == self.rel_path else ( + '//third_party/abseil-cpp/' + pkg[2:]) if rule == '__pkg__': result.append(gn_pkg + ':*') elif rule == '__subpackages__': @@ -134,6 +149,7 @@ is_test = bt.get('is_test') rule = 'absl_test' if is_test else 'absl_source_set' + bazel_deps = bt.get('deps', []) target_name = f"{self.rel_path}:{name}" skip = _SKIP_TARGETS.get(target_name) @@ -143,6 +159,13 @@ out.append(f'') continue + if '//absl/base:exception_safety_testing' in bazel_deps: + out.append( + f'# skipped because chromium doesn\'t use c++ exceptions') + out.append(f'# {rule}("{name}")') + out.append(f'') + continue + # Start writing the output. out.append(f'{rule}("{name}") {{') @@ -156,7 +179,7 @@ out.append(f'"{s}",') out.append(']') - hdrs = bt.get('hdrs') + hdrs = bt.get('hdrs', []) + bt.get('textual_hdrs', []) if hdrs: out.append('public = [') for h in sorted(hdrs): @@ -174,7 +197,7 @@ out.append(']') gn_deps = [] - for d in bt.get('deps', []): + for d in bazel_deps: td = self._translate_dep(d) if td: gn_deps.append(td) @@ -190,6 +213,7 @@ out.append(f'"{d}",') out.append(']') + out.append(_ADD_CONTENT.get(target_name, '')) out.append('}') out.append('') @@ -230,6 +254,7 @@ # TODO: crbug.com/524565513: walk the root dir when script is fully ready to handle all edge cases. for folder in [ 'algorithm', + 'container', 'crc', 'functional', 'memory',