# Copyright (C) 2017 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.

import("../gn/perfetto.gni")
import("../gn/standalone/libc++/libc++.gni")
import("../gn/standalone/sanitizers/vars.gni")

# We should never get here in embedder builds.
assert(perfetto_build_standalone || is_perfetto_build_generator)

# This is to make sure that we don't add accidental dependencies from build
# files in src/ or include/ to buildtools. All deps (outside of /gn/*) should
# go via the groups defined in gn/BUILD.gn, not directly into buildtools. This
# is to allow embedders to re-route targets to their third_party directories.
_buildtools_visibility = [
  "./*",
  "../gn:*",
  "../gn/standalone:*",
]

# Used to suppress warnings coming from googletest macros expansions.
# These suppressions apply both to gtest/gmock haders and to perfetto's
# test translation units. See test/gtest_and_gmock.h for the subset of
# suppressions that apply only to the gmock/gtest headers.
config("test_warning_suppressions") {
  visibility = _buildtools_visibility
  if (is_clang) {
    cflags = [
      "-Wno-covered-switch-default",
      "-Wno-deprecated-copy-dtor",
      "-Wno-global-constructors",
      "-Wno-inconsistent-missing-override",
      "-Wno-language-extension-token",
      "-Wno-suggest-destructor-override",
      "-Wno-suggest-override",
      "-Wno-undef",
      "-Wno-unknown-warning-option",
      "-Wno-unused-member-function",
      "-Wno-used-but-marked-unused",
      "-Wno-weak-vtables",
      "-Wno-zero-as-null-pointer-constant",
    ]
  } else if (!is_win) {
    cflags = [
      "-Wno-unknown-warning-option",
      "-Wno-deprecated-copy",
      "-Wno-uninitialized",
    ]
  }
}

config("libunwindstack_config") {
  visibility = _buildtools_visibility
  cflags = [
    # Using -isystem instead of include_dirs (-I), so we don't need to suppress
    # warnings coming from libunwindstack headers. Doing so would mask warnings
    # in our own code.
    perfetto_isystem_cflag,
    rebase_path("android-unwinding/libunwindstack/include", root_build_dir),
    perfetto_isystem_cflag,
    rebase_path("android-libprocinfo/include", root_build_dir),
    perfetto_isystem_cflag,
    rebase_path("android-libbase/include", root_build_dir),
    perfetto_isystem_cflag,
    rebase_path("android-core/demangle/include", root_build_dir),
    perfetto_isystem_cflag,
    rebase_path("rustc-demangle-capi", root_build_dir),
  ]

  # TODO(rsavitski): figure out how to cleanly depend on bionic's uapi headers
  defines = [
    "NO_LIBDEXFILE_SUPPORT",
    "NT_RISCV_VECTOR=0x901",
    "ELFCOMPRESS_ZSTD=2",
  ]
}

# Config to include gtest.h in test targets.
config("googletest_config") {
  visibility = _buildtools_visibility
  defines = [ "GTEST_LANG_CXX11=1" ]
  include_dirs = [
    "googletest/googletest/include",
    "googletest/googlemock/include",
  ]
  configs = [ ":test_warning_suppressions" ]
}

source_set("gtest") {
  visibility = _buildtools_visibility
  testonly = true
  include_dirs = [ "googletest/googletest" ]
  configs -= [ "//gn/standalone:extra_warnings" ]
  public_configs = [ ":googletest_config" ]
  all_dependent_configs = [ ":googletest_config" ]
  sources = [ "googletest/googletest/src/gtest-all.cc" ]
  deps = [ "//gn:default_deps" ]
}

source_set("gtest_main") {
  visibility = _buildtools_visibility
  testonly = true
  configs -= [ "//gn/standalone:extra_warnings" ]
  configs += [ ":googletest_config" ]
  sources = [ "googletest/googletest/src/gtest_main.cc" ]
  deps = [ "//gn:default_deps" ]
}

source_set("gmock") {
  visibility = _buildtools_visibility
  testonly = true
  include_dirs = [ "googletest/googlemock" ]
  configs -= [ "//gn/standalone:extra_warnings" ]
  public_configs = [ ":googletest_config" ]
  all_dependent_configs = [ ":googletest_config" ]
  sources = [ "googletest/googlemock/src/gmock-all.cc" ]
  deps = [ "//gn:default_deps" ]
}

# Configuration used to build libprotobuf_* and the protoc compiler.
config("protobuf_config") {
  visibility = _buildtools_visibility

  # Apply the lighter supressions and macro definitions from above.
  configs = [ "//gn:protobuf_gen_config" ]

  defines = [ "HAVE_PTHREAD=1" ]
  cflags = []

  # Fixed upstream in:
  # https://github.com/protocolbuffers/protobuf/pull/10112
  # But we don't have that yet.
  if (is_mac) {
    cflags += [ "-Wno-deprecated-declarations" ]
  }
  if (!is_clang && !is_win) {  # implies gcc
    cflags += [ "-Wno-stringop-overread" ]
  }
  if (is_win) {
    cflags += [ "/W0" ]
  }
}

# Configuration propagated to targets depending on protobuf_full.
config("protobuf_full_public_config") {
  visibility = _buildtools_visibility
  cflags = []
  if (is_clang) {
    cflags += [ "-Wno-switch-enum" ]
    if (is_win) {
      cflags += [ "-Wno-undef" ]
    }
  }
}

_protobuf_headers = [
  "protobuf/src/google/protobuf/any.h",
  "protobuf/src/google/protobuf/any.pb.h",
  "protobuf/src/google/protobuf/api.pb.h",
  "protobuf/src/google/protobuf/arena_impl.h",
  "protobuf/src/google/protobuf/arena.h",
  "protobuf/src/google/protobuf/arenastring.h",
  "protobuf/src/google/protobuf/arenaz_sampler.h",
  "protobuf/src/google/protobuf/compiler/importer.h",
  "protobuf/src/google/protobuf/compiler/parser.h",
  "protobuf/src/google/protobuf/descriptor_database.h",
  "protobuf/src/google/protobuf/descriptor.h",
  "protobuf/src/google/protobuf/descriptor.pb.h",
  "protobuf/src/google/protobuf/duration.pb.h",
  "protobuf/src/google/protobuf/dynamic_message.h",
  "protobuf/src/google/protobuf/empty.pb.h",
  "protobuf/src/google/protobuf/endian.h",
  "protobuf/src/google/protobuf/explicitly_constructed.h",
  "protobuf/src/google/protobuf/extension_set_inl.h",
  "protobuf/src/google/protobuf/extension_set.h",
  "protobuf/src/google/protobuf/field_access_listener.h",
  "protobuf/src/google/protobuf/field_mask.pb.h",
  "protobuf/src/google/protobuf/generated_enum_reflection.h",
  "protobuf/src/google/protobuf/generated_enum_util.h",
  "protobuf/src/google/protobuf/generated_message_bases.h",
  "protobuf/src/google/protobuf/generated_message_reflection.h",
  "protobuf/src/google/protobuf/generated_message_tctable_decl.h",
  "protobuf/src/google/protobuf/generated_message_tctable_impl.h",
  "protobuf/src/google/protobuf/generated_message_util.h",
  "protobuf/src/google/protobuf/has_bits.h",
  "protobuf/src/google/protobuf/implicit_weak_message.h",
  "protobuf/src/google/protobuf/inlined_string_field.h",
  "protobuf/src/google/protobuf/io/coded_stream.h",
  "protobuf/src/google/protobuf/io/io_win32.h",
  "protobuf/src/google/protobuf/io/printer.h",
  "protobuf/src/google/protobuf/io/strtod.h",
  "protobuf/src/google/protobuf/io/tokenizer.h",
  "protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h",
  "protobuf/src/google/protobuf/io/zero_copy_stream_impl.h",
  "protobuf/src/google/protobuf/io/zero_copy_stream.h",
  "protobuf/src/google/protobuf/map_entry_lite.h",
  "protobuf/src/google/protobuf/map_entry.h",
  "protobuf/src/google/protobuf/map_field_inl.h",
  "protobuf/src/google/protobuf/map_field_lite.h",
  "protobuf/src/google/protobuf/map_field.h",
  "protobuf/src/google/protobuf/map_type_handler.h",
  "protobuf/src/google/protobuf/map.h",
  "protobuf/src/google/protobuf/message_lite.h",
  "protobuf/src/google/protobuf/message.h",
  "protobuf/src/google/protobuf/metadata_lite.h",
  "protobuf/src/google/protobuf/metadata.h",
  "protobuf/src/google/protobuf/parse_context.h",
  "protobuf/src/google/protobuf/port_def.inc",
  "protobuf/src/google/protobuf/port_undef.inc",
  "protobuf/src/google/protobuf/port.h",
  "protobuf/src/google/protobuf/reflection_internal.h",
  "protobuf/src/google/protobuf/reflection_ops.h",
  "protobuf/src/google/protobuf/reflection.h",
  "protobuf/src/google/protobuf/repeated_field.h",
  "protobuf/src/google/protobuf/repeated_ptr_field.h",
  "protobuf/src/google/protobuf/service.h",
  "protobuf/src/google/protobuf/source_context.pb.h",
  "protobuf/src/google/protobuf/struct.pb.h",
  "protobuf/src/google/protobuf/stubs/bytestream.h",
  "protobuf/src/google/protobuf/stubs/callback.h",
  "protobuf/src/google/protobuf/stubs/casts.h",
  "protobuf/src/google/protobuf/stubs/common.h",
  "protobuf/src/google/protobuf/stubs/hash.h",
  "protobuf/src/google/protobuf/stubs/logging.h",
  "protobuf/src/google/protobuf/stubs/macros.h",
  "protobuf/src/google/protobuf/stubs/map_util.h",
  "protobuf/src/google/protobuf/stubs/mutex.h",
  "protobuf/src/google/protobuf/stubs/once.h",
  "protobuf/src/google/protobuf/stubs/platform_macros.h",
  "protobuf/src/google/protobuf/stubs/port.h",
  "protobuf/src/google/protobuf/stubs/status.h",
  "protobuf/src/google/protobuf/stubs/stl_util.h",
  "protobuf/src/google/protobuf/stubs/stringpiece.h",
  "protobuf/src/google/protobuf/stubs/strutil.h",
  "protobuf/src/google/protobuf/stubs/template_util.h",
  "protobuf/src/google/protobuf/text_format.h",
  "protobuf/src/google/protobuf/timestamp.pb.h",
  "protobuf/src/google/protobuf/type.pb.h",
  "protobuf/src/google/protobuf/unknown_field_set.h",
  "protobuf/src/google/protobuf/util/delimited_message_util.h",
  "protobuf/src/google/protobuf/util/field_comparator.h",
  "protobuf/src/google/protobuf/util/field_mask_util.h",
  "protobuf/src/google/protobuf/util/json_util.h",
  "protobuf/src/google/protobuf/util/message_differencer.h",
  "protobuf/src/google/protobuf/util/time_util.h",
  "protobuf/src/google/protobuf/util/type_resolver_util.h",
  "protobuf/src/google/protobuf/util/type_resolver.h",
  "protobuf/src/google/protobuf/wire_format_lite.h",
  "protobuf/src/google/protobuf/wire_format.h",
  "protobuf/src/google/protobuf/wrappers.pb.h",
]

source_set("protobuf_lite") {
  visibility = _buildtools_visibility
  sources = [
    "protobuf/src/google/protobuf/any_lite.cc",
    "protobuf/src/google/protobuf/arena.cc",
    "protobuf/src/google/protobuf/arenastring.cc",
    "protobuf/src/google/protobuf/arenaz_sampler.cc",
    "protobuf/src/google/protobuf/extension_set.cc",
    "protobuf/src/google/protobuf/generated_enum_util.cc",
    "protobuf/src/google/protobuf/generated_message_tctable_lite.cc",
    "protobuf/src/google/protobuf/generated_message_util.cc",
    "protobuf/src/google/protobuf/implicit_weak_message.cc",
    "protobuf/src/google/protobuf/inlined_string_field.cc",
    "protobuf/src/google/protobuf/io/coded_stream.cc",
    "protobuf/src/google/protobuf/io/io_win32.cc",
    "protobuf/src/google/protobuf/io/strtod.cc",
    "protobuf/src/google/protobuf/io/zero_copy_stream.cc",
    "protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc",
    "protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc",
    "protobuf/src/google/protobuf/map.cc",
    "protobuf/src/google/protobuf/message_lite.cc",
    "protobuf/src/google/protobuf/parse_context.cc",
    "protobuf/src/google/protobuf/repeated_field.cc",
    "protobuf/src/google/protobuf/repeated_ptr_field.cc",
    "protobuf/src/google/protobuf/string_member_robber.h",
    "protobuf/src/google/protobuf/stubs/bytestream.cc",
    "protobuf/src/google/protobuf/stubs/common.cc",
    "protobuf/src/google/protobuf/stubs/int128.cc",
    "protobuf/src/google/protobuf/stubs/int128.h",
    "protobuf/src/google/protobuf/stubs/mathutil.h",
    "protobuf/src/google/protobuf/stubs/status.cc",
    "protobuf/src/google/protobuf/stubs/status_macros.h",
    "protobuf/src/google/protobuf/stubs/statusor.cc",
    "protobuf/src/google/protobuf/stubs/statusor.h",
    "protobuf/src/google/protobuf/stubs/stringpiece.cc",
    "protobuf/src/google/protobuf/stubs/stringprintf.cc",
    "protobuf/src/google/protobuf/stubs/stringprintf.h",
    "protobuf/src/google/protobuf/stubs/structurally_valid.cc",
    "protobuf/src/google/protobuf/stubs/strutil.cc",
    "protobuf/src/google/protobuf/stubs/time.cc",
    "protobuf/src/google/protobuf/stubs/time.h",
    "protobuf/src/google/protobuf/wire_format_lite.cc",
  ]
  sources += _protobuf_headers
  configs -= [ "//gn/standalone:extra_warnings" ]
  if (is_win) {
    # Protobuf has its own #define WIN32_LEAN_AND_MEAN.
    configs -= [ "//gn/standalone:win32_lean_and_mean" ]
  }
  configs += [ ":protobuf_config" ]
  public_configs = [ "//gn:protobuf_gen_config" ]
  deps = [ "//gn:default_deps" ]
}

source_set("protobuf_full") {
  visibility = _buildtools_visibility
  deps = [
    ":protobuf_lite",
    "//gn:default_deps",
  ]
  sources = [
    "protobuf/src/google/protobuf/any.cc",
    "protobuf/src/google/protobuf/any.pb.cc",
    "protobuf/src/google/protobuf/api.pb.cc",
    "protobuf/src/google/protobuf/compiler/importer.cc",
    "protobuf/src/google/protobuf/compiler/parser.cc",
    "protobuf/src/google/protobuf/descriptor.cc",
    "protobuf/src/google/protobuf/descriptor.pb.cc",
    "protobuf/src/google/protobuf/descriptor_database.cc",
    "protobuf/src/google/protobuf/duration.pb.cc",
    "protobuf/src/google/protobuf/dynamic_message.cc",
    "protobuf/src/google/protobuf/empty.pb.cc",
    "protobuf/src/google/protobuf/extension_set_heavy.cc",
    "protobuf/src/google/protobuf/field_mask.pb.cc",
    "protobuf/src/google/protobuf/generated_message_bases.cc",
    "protobuf/src/google/protobuf/generated_message_reflection.cc",
    "protobuf/src/google/protobuf/generated_message_tctable_full.cc",
    "protobuf/src/google/protobuf/io/gzip_stream.cc",
    "protobuf/src/google/protobuf/io/printer.cc",
    "protobuf/src/google/protobuf/io/tokenizer.cc",
    "protobuf/src/google/protobuf/map_field.cc",
    "protobuf/src/google/protobuf/message.cc",
    "protobuf/src/google/protobuf/reflection_ops.cc",
    "protobuf/src/google/protobuf/service.cc",
    "protobuf/src/google/protobuf/source_context.pb.cc",
    "protobuf/src/google/protobuf/struct.pb.cc",
    "protobuf/src/google/protobuf/stubs/substitute.cc",
    "protobuf/src/google/protobuf/stubs/substitute.h",
    "protobuf/src/google/protobuf/text_format.cc",
    "protobuf/src/google/protobuf/timestamp.pb.cc",
    "protobuf/src/google/protobuf/type.pb.cc",
    "protobuf/src/google/protobuf/unknown_field_set.cc",
    "protobuf/src/google/protobuf/util/delimited_message_util.cc",
    "protobuf/src/google/protobuf/util/field_comparator.cc",
    "protobuf/src/google/protobuf/util/field_mask_util.cc",
    "protobuf/src/google/protobuf/util/internal/constants.h",
    "protobuf/src/google/protobuf/util/internal/datapiece.cc",
    "protobuf/src/google/protobuf/util/internal/datapiece.h",
    "protobuf/src/google/protobuf/util/internal/default_value_objectwriter.cc",
    "protobuf/src/google/protobuf/util/internal/default_value_objectwriter.h",
    "protobuf/src/google/protobuf/util/internal/error_listener.cc",
    "protobuf/src/google/protobuf/util/internal/error_listener.h",
    "protobuf/src/google/protobuf/util/internal/expecting_objectwriter.h",
    "protobuf/src/google/protobuf/util/internal/field_mask_utility.cc",
    "protobuf/src/google/protobuf/util/internal/field_mask_utility.h",
    "protobuf/src/google/protobuf/util/internal/json_escaping.cc",
    "protobuf/src/google/protobuf/util/internal/json_escaping.h",
    "protobuf/src/google/protobuf/util/internal/json_objectwriter.cc",
    "protobuf/src/google/protobuf/util/internal/json_objectwriter.h",
    "protobuf/src/google/protobuf/util/internal/json_stream_parser.cc",
    "protobuf/src/google/protobuf/util/internal/json_stream_parser.h",
    "protobuf/src/google/protobuf/util/internal/location_tracker.h",
    "protobuf/src/google/protobuf/util/internal/mock_error_listener.h",
    "protobuf/src/google/protobuf/util/internal/object_location_tracker.h",
    "protobuf/src/google/protobuf/util/internal/object_source.h",
    "protobuf/src/google/protobuf/util/internal/object_writer.cc",
    "protobuf/src/google/protobuf/util/internal/object_writer.h",
    "protobuf/src/google/protobuf/util/internal/proto_writer.cc",
    "protobuf/src/google/protobuf/util/internal/proto_writer.h",
    "protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc",
    "protobuf/src/google/protobuf/util/internal/protostream_objectsource.h",
    "protobuf/src/google/protobuf/util/internal/protostream_objectwriter.cc",
    "protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h",
    "protobuf/src/google/protobuf/util/internal/structured_objectwriter.h",
    "protobuf/src/google/protobuf/util/internal/type_info.cc",
    "protobuf/src/google/protobuf/util/internal/type_info.h",
    "protobuf/src/google/protobuf/util/internal/type_info_test_helper.h",
    "protobuf/src/google/protobuf/util/internal/utility.cc",
    "protobuf/src/google/protobuf/util/internal/utility.h",
    "protobuf/src/google/protobuf/util/json_util.cc",
    "protobuf/src/google/protobuf/util/message_differencer.cc",
    "protobuf/src/google/protobuf/util/time_util.cc",
    "protobuf/src/google/protobuf/util/type_resolver_util.cc",
    "protobuf/src/google/protobuf/wire_format.cc",
    "protobuf/src/google/protobuf/wrappers.pb.cc",
  ]
  sources += _protobuf_headers
  configs -= [ "//gn/standalone:extra_warnings" ]
  if (is_win) {
    # Protobuf has its own #define WIN32_LEAN_AND_MEAN.
    configs -= [ "//gn/standalone:win32_lean_and_mean" ]
  }
  configs += [ ":protobuf_config" ]
  public_configs = [
    "//gn:protobuf_gen_config",
    ":protobuf_full_public_config",
  ]
}

source_set("protoc_lib") {
  visibility = _buildtools_visibility
  deps = [
    ":protobuf_full",
    "//gn:default_deps",
  ]
  sources = [
    "protobuf/src/google/protobuf/compiler/code_generator.cc",
    "protobuf/src/google/protobuf/compiler/code_generator.h",
    "protobuf/src/google/protobuf/compiler/command_line_interface.cc",
    "protobuf/src/google/protobuf/compiler/command_line_interface.h",
    "protobuf/src/google/protobuf/compiler/cpp/cpp_generator.h",
    "protobuf/src/google/protobuf/compiler/cpp/enum.cc",
    "protobuf/src/google/protobuf/compiler/cpp/enum.h",
    "protobuf/src/google/protobuf/compiler/cpp/enum_field.cc",
    "protobuf/src/google/protobuf/compiler/cpp/enum_field.h",
    "protobuf/src/google/protobuf/compiler/cpp/extension.cc",
    "protobuf/src/google/protobuf/compiler/cpp/extension.h",
    "protobuf/src/google/protobuf/compiler/cpp/field.cc",
    "protobuf/src/google/protobuf/compiler/cpp/field.h",
    "protobuf/src/google/protobuf/compiler/cpp/file.cc",
    "protobuf/src/google/protobuf/compiler/cpp/file.h",
    "protobuf/src/google/protobuf/compiler/cpp/generator.cc",
    "protobuf/src/google/protobuf/compiler/cpp/generator.h",
    "protobuf/src/google/protobuf/compiler/cpp/helpers.cc",
    "protobuf/src/google/protobuf/compiler/cpp/helpers.h",
    "protobuf/src/google/protobuf/compiler/cpp/map_field.cc",
    "protobuf/src/google/protobuf/compiler/cpp/map_field.h",
    "protobuf/src/google/protobuf/compiler/cpp/message.cc",
    "protobuf/src/google/protobuf/compiler/cpp/message.h",
    "protobuf/src/google/protobuf/compiler/cpp/message_field.cc",
    "protobuf/src/google/protobuf/compiler/cpp/message_field.h",
    "protobuf/src/google/protobuf/compiler/cpp/message_layout_helper.h",
    "protobuf/src/google/protobuf/compiler/cpp/names.h",
    "protobuf/src/google/protobuf/compiler/cpp/options.h",
    "protobuf/src/google/protobuf/compiler/cpp/padding_optimizer.cc",
    "protobuf/src/google/protobuf/compiler/cpp/padding_optimizer.h",
    "protobuf/src/google/protobuf/compiler/cpp/parse_function_generator.cc",
    "protobuf/src/google/protobuf/compiler/cpp/parse_function_generator.h",
    "protobuf/src/google/protobuf/compiler/cpp/primitive_field.cc",
    "protobuf/src/google/protobuf/compiler/cpp/primitive_field.h",
    "protobuf/src/google/protobuf/compiler/cpp/service.cc",
    "protobuf/src/google/protobuf/compiler/cpp/service.h",
    "protobuf/src/google/protobuf/compiler/cpp/string_field.cc",
    "protobuf/src/google/protobuf/compiler/cpp/string_field.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_doc_comment.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_enum.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_enum.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_enum_field.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_enum_field.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_generator.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_generator.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_map_field.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_map_field.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_message.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_message.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_message_field.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_message_field.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_names.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_options.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_primitive_field.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_reflection_class.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_reflection_class.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_source_generator_base.h",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc",
    "protobuf/src/google/protobuf/compiler/csharp/csharp_wrapper_field.h",
    "protobuf/src/google/protobuf/compiler/java/context.cc",
    "protobuf/src/google/protobuf/compiler/java/context.h",
    "protobuf/src/google/protobuf/compiler/java/doc_comment.cc",
    "protobuf/src/google/protobuf/compiler/java/doc_comment.h",
    "protobuf/src/google/protobuf/compiler/java/enum.cc",
    "protobuf/src/google/protobuf/compiler/java/enum.h",
    "protobuf/src/google/protobuf/compiler/java/enum_field.cc",
    "protobuf/src/google/protobuf/compiler/java/enum_field.h",
    "protobuf/src/google/protobuf/compiler/java/enum_field_lite.cc",
    "protobuf/src/google/protobuf/compiler/java/enum_field_lite.h",
    "protobuf/src/google/protobuf/compiler/java/enum_lite.cc",
    "protobuf/src/google/protobuf/compiler/java/enum_lite.h",
    "protobuf/src/google/protobuf/compiler/java/extension.cc",
    "protobuf/src/google/protobuf/compiler/java/extension.h",
    "protobuf/src/google/protobuf/compiler/java/extension_lite.cc",
    "protobuf/src/google/protobuf/compiler/java/extension_lite.h",
    "protobuf/src/google/protobuf/compiler/java/field.cc",
    "protobuf/src/google/protobuf/compiler/java/field.h",
    "protobuf/src/google/protobuf/compiler/java/file.cc",
    "protobuf/src/google/protobuf/compiler/java/file.h",
    "protobuf/src/google/protobuf/compiler/java/generator.cc",
    "protobuf/src/google/protobuf/compiler/java/generator.h",
    "protobuf/src/google/protobuf/compiler/java/generator_factory.cc",
    "protobuf/src/google/protobuf/compiler/java/generator_factory.h",
    "protobuf/src/google/protobuf/compiler/java/helpers.cc",
    "protobuf/src/google/protobuf/compiler/java/helpers.h",
    "protobuf/src/google/protobuf/compiler/java/java_generator.h",
    "protobuf/src/google/protobuf/compiler/java/kotlin_generator.cc",
    "protobuf/src/google/protobuf/compiler/java/kotlin_generator.h",
    "protobuf/src/google/protobuf/compiler/java/map_field.cc",
    "protobuf/src/google/protobuf/compiler/java/map_field.h",
    "protobuf/src/google/protobuf/compiler/java/map_field_lite.cc",
    "protobuf/src/google/protobuf/compiler/java/map_field_lite.h",
    "protobuf/src/google/protobuf/compiler/java/message.cc",
    "protobuf/src/google/protobuf/compiler/java/message.h",
    "protobuf/src/google/protobuf/compiler/java/message_builder.cc",
    "protobuf/src/google/protobuf/compiler/java/message_builder.h",
    "protobuf/src/google/protobuf/compiler/java/message_builder_lite.cc",
    "protobuf/src/google/protobuf/compiler/java/message_builder_lite.h",
    "protobuf/src/google/protobuf/compiler/java/message_field.cc",
    "protobuf/src/google/protobuf/compiler/java/message_field.h",
    "protobuf/src/google/protobuf/compiler/java/message_field_lite.cc",
    "protobuf/src/google/protobuf/compiler/java/message_field_lite.h",
    "protobuf/src/google/protobuf/compiler/java/message_lite.cc",
    "protobuf/src/google/protobuf/compiler/java/message_lite.h",
    "protobuf/src/google/protobuf/compiler/java/name_resolver.cc",
    "protobuf/src/google/protobuf/compiler/java/name_resolver.h",
    "protobuf/src/google/protobuf/compiler/java/names.h",
    "protobuf/src/google/protobuf/compiler/java/options.h",
    "protobuf/src/google/protobuf/compiler/java/primitive_field.cc",
    "protobuf/src/google/protobuf/compiler/java/primitive_field.h",
    "protobuf/src/google/protobuf/compiler/java/primitive_field_lite.cc",
    "protobuf/src/google/protobuf/compiler/java/primitive_field_lite.h",
    "protobuf/src/google/protobuf/compiler/java/service.cc",
    "protobuf/src/google/protobuf/compiler/java/service.h",
    "protobuf/src/google/protobuf/compiler/java/shared_code_generator.cc",
    "protobuf/src/google/protobuf/compiler/java/shared_code_generator.h",
    "protobuf/src/google/protobuf/compiler/java/string_field.cc",
    "protobuf/src/google/protobuf/compiler/java/string_field.h",
    "protobuf/src/google/protobuf/compiler/java/string_field_lite.cc",
    "protobuf/src/google/protobuf/compiler/java/string_field_lite.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum_field.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_extension.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_extension.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_field.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_field.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_file.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_file.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_generator.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_generator.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_helpers.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_map_field.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_map_field.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_message_field.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_message_field.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_nsobject_methods.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_oneof.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_oneof.h",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc",
    "protobuf/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.h",
    "protobuf/src/google/protobuf/compiler/php/php_generator.cc",
    "protobuf/src/google/protobuf/compiler/php/php_generator.h",
    "protobuf/src/google/protobuf/compiler/plugin.cc",
    "protobuf/src/google/protobuf/compiler/plugin.h",
    "protobuf/src/google/protobuf/compiler/plugin.pb.cc",
    "protobuf/src/google/protobuf/compiler/plugin.pb.h",
    "protobuf/src/google/protobuf/compiler/python/generator.cc",
    "protobuf/src/google/protobuf/compiler/python/generator.h",
    "protobuf/src/google/protobuf/compiler/python/helpers.cc",
    "protobuf/src/google/protobuf/compiler/python/helpers.h",
    "protobuf/src/google/protobuf/compiler/python/pyi_generator.cc",
    "protobuf/src/google/protobuf/compiler/python/pyi_generator.h",
    "protobuf/src/google/protobuf/compiler/python/python_generator.h",
    "protobuf/src/google/protobuf/compiler/ruby/ruby_generator.cc",
    "protobuf/src/google/protobuf/compiler/ruby/ruby_generator.h",
    "protobuf/src/google/protobuf/compiler/scc.h",
    "protobuf/src/google/protobuf/compiler/subprocess.cc",
    "protobuf/src/google/protobuf/compiler/subprocess.h",
    "protobuf/src/google/protobuf/compiler/zip_writer.cc",
    "protobuf/src/google/protobuf/compiler/zip_writer.h",
  ]
  configs -= [ "//gn/standalone:extra_warnings" ]
  if (is_win) {
    # Protobuf does has its own #define WIN32_LEAN_AND_MEAN.
    configs -= [ "//gn/standalone:win32_lean_and_mean" ]
  }
  configs += [ ":protobuf_config" ]
  public_configs = [
    "//gn:protobuf_gen_config",
    ":protobuf_full_public_config",
  ]
}

if (current_toolchain == host_toolchain) {
  executable("protoc") {
    visibility = _buildtools_visibility
    deps = [
      ":protoc_lib",
      "//gn:default_deps",
    ]
    sources = [ "protobuf/src/google/protobuf/compiler/main.cc" ]
    configs -= [ "//gn/standalone:extra_warnings" ]
    if (is_win) {
      # Protobuf does has its own #define WIN32_LEAN_AND_MEAN.
      configs -= [ "//gn/standalone:win32_lean_and_mean" ]
    }
  }
}  # host_toolchain

if (use_custom_libcxx) {
  config("libunwind_config") {
    defines = [ "_LIBUNWIND_IS_NATIVE_ONLY" ]
    cflags = [
      "-fstrict-aliasing",
      "-fPIC",

      # ValueAsBitPattern in Unwind-EHABI.cpp is only used on Debug builds.
      "-Wno-unused-function",

      # libunwind expects to be compiled with unwind tables so it can
      # unwind its own frames.
      "-funwind-tables",
    ]
  }

  source_set("libunwind") {
    visibility = _buildtools_visibility
    sources = [
      # C++ sources
      "libunwind/src/Unwind-EHABI.cpp",
      "libunwind/src/libunwind.cpp",

      # C sources
      "libunwind/src/Unwind-sjlj.c",
      "libunwind/src/UnwindLevel1-gcc-ext.c",
      "libunwind/src/UnwindLevel1.c",

      # ASM sources
      "libunwind/src/UnwindRegistersRestore.S",
      "libunwind/src/UnwindRegistersSave.S",
    ]
    include_dirs = [
      "libunwind/include",
      "libunwind/src",
    ]
    configs -= [
      "//gn/standalone:extra_warnings",
      "//gn/standalone:no_exceptions",
      "//gn/standalone:no_rtti",

      # When building with msan, libunwind itself triggers memory violations
      # that causes msan to get stuck into an infinite loop. Just don't
      # instrument libunwind itself.
      "//gn/standalone/sanitizers:sanitizers_cflags",
    ]
    configs += [
      "//gn/standalone/sanitizers:sanitizer_options_link_helper",

      ":libunwind_config",
    ]
  }

  # Config applied to both libc++ and libc++abi targets below.
  config("libc++config") {
    visibility = _buildtools_visibility
    cflags = [ "-fstrict-aliasing" ]
    if (is_win) {
      cflags += [
        # libc++ wants to redefine the macros WIN32_LEAN_AND_MEAN and
        # _CRT_RAND_S in its implementation.
        "-Wno-macro-redefined",
      ]
    } else {
      cflags += [ "-fPIC" ]
    }
    configs = [ "//gn/standalone:c++20" ]
    defines = [ "_LIBCPP_BUILDING_LIBRARY" ]
  }

  source_set("libc++abi") {
    visibility = _buildtools_visibility

    # Fuchsia builds don't link against any libraries that provide stack
    # unwinding symbols, unlike Linux does with glibc (same applies for
    # Android). Build and link against libunwind manually to get this
    # functionality.
    if (is_fuchsia || is_android) {
      deps = [ ":libunwind" ]
    }

    sources = [
      "libcxxabi/src/abort_message.cpp",
      "libcxxabi/src/cxa_aux_runtime.cpp",
      "libcxxabi/src/cxa_default_handlers.cpp",
      "libcxxabi/src/cxa_exception.cpp",
      "libcxxabi/src/cxa_exception_storage.cpp",
      "libcxxabi/src/cxa_handlers.cpp",

      # This file is supposed to be used in fno-exception builds of
      # libc++abi.  We build lib++/libc++abi with exceptions enabled.
      #"trunk/src/cxa_noexception.cpp",
      "libcxxabi/src/cxa_personality.cpp",
      "libcxxabi/src/cxa_vector.cpp",
      "libcxxabi/src/cxa_virtual.cpp",
      "libcxxabi/src/fallback_malloc.cpp",
      "libcxxabi/src/private_typeinfo.cpp",
      "libcxxabi/src/stdlib_exception.cpp",
      "libcxxabi/src/stdlib_stdexcept.cpp",
      "libcxxabi/src/stdlib_typeinfo.cpp",
    ]

    if (!is_tsan) {
      sources += [ "libcxxabi/src/cxa_guard.cpp" ]
    }

    # See the comment in cxa_demangle_stub.cc for why we don't use LLVM's
    # demangler on android.
    sources += [ "libcxxabi/src/cxa_demangle.cpp" ]

    if (is_fuchsia || is_android || is_linux) {
      sources += [ "libcxxabi/src/cxa_thread_atexit.cpp" ]
    }

    defines = [
      "LIBCXXABI_SILENT_TERMINATE",

      # TODO(crbug.com/1298070) _LIBCPP_CONSTINIT is defined in a libc++
      # revision more recent than the one currently used in Perfetto/Chrome.
      "_LIBCPP_CONSTINIT=constinit",
    ]

    configs -= [
      "//gn/standalone:extra_warnings",
      "//gn/standalone:no_exceptions",
      "//gn/standalone:no_rtti",
      "//gn/standalone:c++17",
    ]
    configs += [
      ":libc++config",
      "//gn/standalone/sanitizers:sanitizer_options_link_helper",
    ]
    if (!custom_libcxx_is_static) {
      configs -= [ "//gn/standalone:visibility_hidden" ]
    }

    # libc++abi depends on libc++ internals.
    include_dirs = [ "libcxx/src" ]
  }

  # Explicitly set version macros to Windows 7 to prevent libc++ from adding a
  # hard dependency on GetSystemTimePreciseAsFileTime, which was introduced in
  # Windows 8.
  config("libc++winver") {
    defines = [
      "NTDDI_VERSION=NTDDI_WIN7",
      "_WIN32_WINNT=_WIN32_WINNT_WIN7",
      "WINVER=_WIN32_WINNT_WIN7",
    ]
  }

  if (custom_libcxx_is_static) {
    libcxx_target_type = "source_set"
  } else {
    libcxx_target_type = "shared_library"
  }

  target(libcxx_target_type, "libc++") {
    visibility = _buildtools_visibility
    visibility += [ "../gn/standalone/libc++:*" ]

    if (is_linux && !is_clang) {
      libs = [ "atomic" ]
    }

    inputs = [
      "libcxx_config/__assertion_handler",
      "libcxx_config/__config_site",
    ]

    sources = [
      "libcxx/src/algorithm.cpp",
      "libcxx/src/any.cpp",
      "libcxx/src/atomic.cpp",
      "libcxx/src/barrier.cpp",
      "libcxx/src/bind.cpp",
      "libcxx/src/call_once.cpp",
      "libcxx/src/charconv.cpp",
      "libcxx/src/chrono.cpp",
      "libcxx/src/condition_variable.cpp",
      "libcxx/src/condition_variable_destructor.cpp",
      "libcxx/src/error_category.cpp",
      "libcxx/src/exception.cpp",
      "libcxx/src/filesystem/directory_iterator.cpp",
      "libcxx/src/filesystem/filesystem_error.cpp",
      "libcxx/src/filesystem/operations.cpp",
      "libcxx/src/filesystem/path.cpp",
      "libcxx/src/functional.cpp",
      "libcxx/src/future.cpp",
      "libcxx/src/hash.cpp",
      "libcxx/src/ios.cpp",
      "libcxx/src/ios.instantiations.cpp",
      "libcxx/src/iostream.cpp",
      "libcxx/src/legacy_pointer_safety.cpp",
      "libcxx/src/locale.cpp",
      "libcxx/src/memory.cpp",
      "libcxx/src/mutex.cpp",
      "libcxx/src/mutex_destructor.cpp",
      "libcxx/src/new_handler.cpp",
      "libcxx/src/new_helpers.cpp",
      "libcxx/src/optional.cpp",
      "libcxx/src/random.cpp",
      "libcxx/src/random_shuffle.cpp",
      "libcxx/src/regex.cpp",
      "libcxx/src/ryu/d2fixed.cpp",
      "libcxx/src/ryu/d2s.cpp",
      "libcxx/src/ryu/f2s.cpp",
      "libcxx/src/shared_mutex.cpp",
      "libcxx/src/stdexcept.cpp",
      "libcxx/src/string.cpp",
      "libcxx/src/strstream.cpp",
      "libcxx/src/system_error.cpp",
      "libcxx/src/thread.cpp",
      "libcxx/src/typeinfo.cpp",
      "libcxx/src/valarray.cpp",
      "libcxx/src/variant.cpp",
      "libcxx/src/vector.cpp",
      "libcxx/src/verbose_abort.cpp",
    ]
    if (!using_sanitizer) {
      # In {a,t,m}san configurations, operator new and operator delete will be
      # provided by the sanitizer runtime library.  Since libc++ defines these
      # symbols with weak linkage, and the *san runtime uses strong linkage, it
      # should technically be OK to include this file, but it's removed to be
      # explicit.
      # We need using_sanitizer rather than is_asan || is_msan ... because in
      # perfetto, when cross-compiling, we build only targets with sanitizers,
      # but not host artifacts, and using_sanitizer is only true for the
      # target toolchain, while is_asan is globally true on all toolchains.
      sources += [ "libcxx/src/new.cpp" ]
    }

    include_dirs = [ "libcxx/src" ]
    if (is_win) {
      sources += [
        "libcxx/src/support/win32/locale_win32.cpp",
        "libcxx/src/support/win32/support.cpp",
        "libcxx/src/support/win32/thread_win32.cpp",
      ]
      configs += [ ":libc++winver" ]
    }
    configs -= [
      "//gn/standalone:extra_warnings",
      "//gn/standalone:no_exceptions",
      "//gn/standalone:no_rtti",
      "//gn/standalone:c++17",
    ]
    if ((is_android || is_mac) && !custom_libcxx_is_static) {
      # Use libc++_perfetto to avoid conflicting with system libc++
      output_name = "libc++_perfettto"
    }
    configs += [
      ":libc++config",
      "//gn/standalone/sanitizers:sanitizer_options_link_helper",
    ]
    if (!custom_libcxx_is_static) {
      configs -= [ "//gn/standalone:visibility_hidden" ]
    }

    defines = []
    if (custom_libcxx_is_static) {
      if (is_mac && is_clang) {
        # We want operator new/delete to be private on Mac, but these functions
        # are implicitly created by the compiler for each translation unit, as
        # specified in the C++ spec 3.7.4p2, which makes them always have
        # default visibility.  This option is needed to force hidden visibility
        # since -fvisibility=hidden doesn't have the desired effect.
        cflags = [ "-fvisibility-global-new-delete-hidden" ]
      } else {
        defines += [
          # This resets the visibility to default only for the various
          # flavors of operator new and operator delete.  These symbols
          # are weak and get overriden by Chromium-provided ones, but if
          # these symbols had hidden visibility, this would make the
          # Chromium symbols hidden too because elf visibility rules
          # require that linkers use the least visible form when merging,
          # and if this is hidden, then when we merge it with tcmalloc's
          # operator new, hidden visibility would win. However, tcmalloc
          # needs a visible operator new to also override operator new
          # references from system libraries.
          # TODO(lld): Ask lld for a --force-public-visibility flag or
          # similar to that overrides the default elf merging rules, and
          # make tcmalloc's gn config pass that to all its dependencies,
          # then remove this override here.
          "_LIBCPP_OVERRIDABLE_FUNC_VIS=__attribute__((__visibility__(\"default\")))",
        ]
      }
    }
    if (!is_mac && using_sanitizer && (is_asan || is_tsan || is_msan)) {
      # In {a,t,m}san configurations, operator new and operator delete will be
      # provided by the sanitizer runtime library.  Since libc++ defines these
      # symbols with weak linkage, and the *san runtime uses strong linkage, it
      # should technically be OK to omit this, but it's added to be explicit.
      defines += [ "_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS" ]
    }

    if (!is_win) {
      defines += [ "LIBCXX_BUILDING_LIBCXXABI" ]
      deps = [ ":libc++abi" ]
    }
  }
}  # if (use_custom_libcxx)

config("benchmark_config") {
  visibility = _buildtools_visibility
  include_dirs = [ "benchmark/include" ]
  configs = [ ":test_warning_suppressions" ]
}

source_set("benchmark") {
  visibility = _buildtools_visibility
  testonly = true
  sources = [
    "benchmark/include/benchmark/benchmark.h",
    "benchmark/src/arraysize.h",
    "benchmark/src/benchmark.cc",
    "benchmark/src/benchmark_api_internal.cc",
    "benchmark/src/benchmark_api_internal.h",
    "benchmark/src/benchmark_name.cc",
    "benchmark/src/benchmark_register.cc",
    "benchmark/src/benchmark_register.h",
    "benchmark/src/benchmark_runner.cc",
    "benchmark/src/benchmark_runner.h",
    "benchmark/src/check.h",
    "benchmark/src/colorprint.cc",
    "benchmark/src/colorprint.h",
    "benchmark/src/commandlineflags.cc",
    "benchmark/src/commandlineflags.h",
    "benchmark/src/complexity.cc",
    "benchmark/src/complexity.h",
    "benchmark/src/console_reporter.cc",
    "benchmark/src/counter.cc",
    "benchmark/src/counter.h",
    "benchmark/src/csv_reporter.cc",
    "benchmark/src/cycleclock.h",
    "benchmark/src/internal_macros.h",
    "benchmark/src/json_reporter.cc",
    "benchmark/src/log.h",
    "benchmark/src/mutex.h",
    "benchmark/src/perf_counters.cc",
    "benchmark/src/perf_counters.h",
    "benchmark/src/re.h",
    "benchmark/src/reporter.cc",
    "benchmark/src/sleep.cc",
    "benchmark/src/sleep.h",
    "benchmark/src/statistics.cc",
    "benchmark/src/statistics.h",
    "benchmark/src/string_util.cc",
    "benchmark/src/string_util.h",
    "benchmark/src/sysinfo.cc",
    "benchmark/src/thread_manager.h",
    "benchmark/src/thread_timer.h",
    "benchmark/src/timers.cc",
    "benchmark/src/timers.h",
  ]
  defines = [ "HAVE_POSIX_REGEX" ]
  public_configs = [ ":benchmark_config" ]
  all_dependent_configs = [ ":benchmark_config" ]
  if (!is_win) {
    cflags = [ "-Wno-deprecated-declarations" ]
  }
  configs -= [ "//gn/standalone:extra_warnings" ]
  deps = [ "//gn:default_deps" ]
}

# On Linux/Android use libbacktrace in debug builds for better stacktraces.
if (is_linux || is_android) {
  config("libbacktrace_config") {
    visibility = _buildtools_visibility
    include_dirs = [
      "libbacktrace_config",
      "libbacktrace",
    ]
    cflags = [
      # We force include this config file because "config.h" is too generic as a
      # file name and on some platforms #include "config.h" ends up colliding
      # importing some other project's config.h.
      "-include",
      rebase_path("libbacktrace_config/config.h", root_build_dir),
    ]
  }

  source_set("libbacktrace") {
    visibility = _buildtools_visibility
    sources = [
      "libbacktrace/dwarf.c",
      "libbacktrace/elf.c",
      "libbacktrace/fileline.c",
      "libbacktrace/mmap.c",
      "libbacktrace/mmapio.c",
      "libbacktrace/posix.c",
      "libbacktrace/sort.c",
      "libbacktrace/state.c",
    ]
    configs -= [ "//gn/standalone:extra_warnings" ]
    public_configs = [ ":libbacktrace_config" ]
    deps = [ "//gn:default_deps" ]
  }
}

config("sqlite_config") {
  visibility = _buildtools_visibility
  include_dirs = [ "sqlite" ]
  cflags = [
    "-DSQLITE_THREADSAFE=0",
    "-DSQLITE_DEFAULT_MEMSTATUS=0",
    "-DSQLITE_LIKE_DOESNT_MATCH_BLOBS",
    "-DSQLITE_OMIT_DEPRECATED",
    "-DSQLITE_OMIT_SHARED_CACHE",
    "-DHAVE_USLEEP",
    "-DHAVE_UTIME",
    "-DSQLITE_BYTEORDER=1234",
    "-DSQLITE_DEFAULT_AUTOVACUUM=0",
    "-DSQLITE_DEFAULT_MMAP_SIZE=0",
    "-DSQLITE_CORE",
    "-DSQLITE_TEMP_STORE=3",
    "-DSQLITE_OMIT_LOAD_EXTENSION",
    "-DSQLITE_OMIT_RANDOMNESS",
    "-DSQLITE_OMIT_AUTOINIT",
    "-DSQLITE_ENABLE_JSON1",
  ]
  if (is_clang && is_win) {
    # SQLite uses __int64 which clang complains about unless
    # we specify this flag.
    cflags += [ "-Wno-language-extension-token" ]
  }
}

source_set("sqlite") {
  visibility = _buildtools_visibility
  if (perfetto_use_system_sqlite) {
    # Use the system sqlite library instead of the hermetic one.
    libs = [ "sqlite3" ]
  } else {
    sources = [
      "sqlite/sqlite3.c",
      "sqlite/sqlite3.h",
      "sqlite/sqlite3ext.h",
      "sqlite_src/ext/misc/percentile.c",
    ]
  }
  configs -= [ "//gn/standalone:extra_warnings" ]
  public_configs = [ ":sqlite_config" ]
  deps = [ "//gn:default_deps" ]
}

source_set("lzma") {
  visibility = _buildtools_visibility
  defines = [ "_7ZIP_ST" ]
  sources = [
    "lzma/C/7zAlloc.c",
    "lzma/C/7zArcIn.c",
    "lzma/C/7zBuf.c",
    "lzma/C/7zBuf2.c",
    "lzma/C/7zCrc.c",
    "lzma/C/7zCrcOpt.c",
    "lzma/C/7zDec.c",
    "lzma/C/7zFile.c",
    "lzma/C/7zStream.c",
    "lzma/C/Aes.c",
    "lzma/C/AesOpt.c",
    "lzma/C/Alloc.c",
    "lzma/C/Bcj2.c",
    "lzma/C/Bra.c",
    "lzma/C/Bra86.c",
    "lzma/C/BraIA64.c",
    "lzma/C/CpuArch.c",
    "lzma/C/Delta.c",
    "lzma/C/LzFind.c",
    "lzma/C/Lzma2Dec.c",
    "lzma/C/Lzma2Enc.c",
    "lzma/C/Lzma86Dec.c",
    "lzma/C/Lzma86Enc.c",
    "lzma/C/LzmaDec.c",
    "lzma/C/LzmaEnc.c",
    "lzma/C/LzmaLib.c",
    "lzma/C/Ppmd7.c",
    "lzma/C/Ppmd7Dec.c",
    "lzma/C/Ppmd7Enc.c",
    "lzma/C/Sha256.c",
    "lzma/C/Sort.c",
    "lzma/C/Xz.c",
    "lzma/C/XzCrc64.c",
    "lzma/C/XzCrc64Opt.c",
    "lzma/C/XzDec.c",
    "lzma/C/XzEnc.c",
    "lzma/C/XzIn.c",
  ]
  configs -= [ "//gn/standalone:extra_warnings" ]
  cflags = [
    "-Wno-empty-body",
    "-Wno-enum-conversion",
  ]
  deps = [ "//gn:default_deps" ]
}

source_set("zlib") {
  visibility = _buildtools_visibility
  sources = [
    "zlib/adler32.c",
    "zlib/chromeconf.h",
    "zlib/compress.c",
    "zlib/contrib/optimizations/insert_string.h",
    "zlib/cpu_features.c",
    "zlib/cpu_features.h",
    "zlib/crc32.c",
    "zlib/crc32.h",
    "zlib/deflate.c",
    "zlib/deflate.h",
    "zlib/gzclose.c",
    "zlib/gzguts.h",
    "zlib/gzlib.c",
    "zlib/gzread.c",
    "zlib/gzwrite.c",
    "zlib/infback.c",
    "zlib/inffast.c",
    "zlib/inffast.h",
    "zlib/inffixed.h",
    "zlib/inflate.c",
    "zlib/inflate.h",
    "zlib/inftrees.c",
    "zlib/inftrees.h",
    "zlib/trees.c",
    "zlib/trees.h",
    "zlib/uncompr.c",
    "zlib/zconf.h",
    "zlib/zlib.h",
    "zlib/zutil.c",
    "zlib/zutil.h",
  ]
  configs -= [ "//gn/standalone:extra_warnings" ]
  public_configs = [ ":zlib_config" ]
  deps = [ "//gn:default_deps" ]

  if (is_win) {
    defines = [ "X86_WINDOWS" ]
  }

  # TODO(primiano): look into ADLER32_SIMD_SSSE3 and other SIMD optimizations
  # (from chromium's third_party/zlib/BUILD.gn).
}

config("zlib_config") {
  visibility = _buildtools_visibility
  defines = [
    "ZLIB_IMPLEMENTATION",
    "CHROMIUM_ZLIB_NO_CHROMECONF",
  ]
  cflags = [
    # Using -isystem instead of include_dirs (-I), so we don't need to suppress
    # warnings coming from third-party headers. Doing so would mask warnings in
    # our own code.
    perfetto_isystem_cflag,
    rebase_path("zlib", root_build_dir),
  ]
  if (is_clang) {
    cflags += [
      "-Wno-unknown-warning-option",
      "-Wno-deprecated-non-prototype",
    ]
  }
}

source_set("zstd") {
  visibility = _buildtools_visibility
  sources = [
    "zstd/lib/common/allocations.h",
    "zstd/lib/common/bits.h",
    "zstd/lib/common/bitstream.h",
    "zstd/lib/common/compiler.h",
    "zstd/lib/common/cpu.h",
    "zstd/lib/common/debug.c",
    "zstd/lib/common/debug.h",
    "zstd/lib/common/entropy_common.c",
    "zstd/lib/common/error_private.c",
    "zstd/lib/common/error_private.h",
    "zstd/lib/common/fse.h",
    "zstd/lib/common/fse_decompress.c",
    "zstd/lib/common/huf.h",
    "zstd/lib/common/mem.h",
    "zstd/lib/common/pool.c",
    "zstd/lib/common/pool.h",
    "zstd/lib/common/portability_macros.h",
    "zstd/lib/common/threading.c",
    "zstd/lib/common/threading.h",
    "zstd/lib/common/xxhash.c",
    "zstd/lib/common/xxhash.h",
    "zstd/lib/common/zstd_common.c",
    "zstd/lib/common/zstd_deps.h",
    "zstd/lib/common/zstd_internal.h",
    "zstd/lib/common/zstd_trace.h",
    "zstd/lib/compress/clevels.h",
    "zstd/lib/compress/fse_compress.c",
    "zstd/lib/compress/hist.c",
    "zstd/lib/compress/hist.h",
    "zstd/lib/compress/huf_compress.c",
    "zstd/lib/compress/zstd_compress.c",
    "zstd/lib/compress/zstd_compress_internal.h",
    "zstd/lib/compress/zstd_compress_literals.c",
    "zstd/lib/compress/zstd_compress_literals.h",
    "zstd/lib/compress/zstd_compress_sequences.c",
    "zstd/lib/compress/zstd_compress_sequences.h",
    "zstd/lib/compress/zstd_compress_superblock.c",
    "zstd/lib/compress/zstd_compress_superblock.h",
    "zstd/lib/compress/zstd_cwksp.h",
    "zstd/lib/compress/zstd_double_fast.c",
    "zstd/lib/compress/zstd_double_fast.h",
    "zstd/lib/compress/zstd_fast.c",
    "zstd/lib/compress/zstd_fast.h",
    "zstd/lib/compress/zstd_lazy.c",
    "zstd/lib/compress/zstd_lazy.h",
    "zstd/lib/compress/zstd_ldm.c",
    "zstd/lib/compress/zstd_ldm.h",
    "zstd/lib/compress/zstd_ldm_geartab.h",
    "zstd/lib/compress/zstd_opt.c",
    "zstd/lib/compress/zstd_opt.h",
    "zstd/lib/compress/zstdmt_compress.c",
    "zstd/lib/compress/zstdmt_compress.h",
    "zstd/lib/decompress/huf_decompress.c",
    "zstd/lib/decompress/zstd_ddict.c",
    "zstd/lib/decompress/zstd_ddict.h",
    "zstd/lib/decompress/zstd_decompress.c",
    "zstd/lib/decompress/zstd_decompress_block.c",
    "zstd/lib/decompress/zstd_decompress_block.h",
    "zstd/lib/decompress/zstd_decompress_internal.h",
    "zstd/lib/deprecated/zbuff.h",
    "zstd/lib/deprecated/zbuff_common.c",
    "zstd/lib/deprecated/zbuff_compress.c",
    "zstd/lib/deprecated/zbuff_decompress.c",
    "zstd/lib/dictBuilder/cover.c",
    "zstd/lib/dictBuilder/cover.h",
    "zstd/lib/dictBuilder/divsufsort.c",
    "zstd/lib/dictBuilder/divsufsort.h",
    "zstd/lib/dictBuilder/fastcover.c",
    "zstd/lib/dictBuilder/zdict.c",
    "zstd/lib/zdict.h",
    "zstd/lib/zstd.h",
    "zstd/lib/zstd_errors.h",
  ]
  configs -= [ "//gn/standalone:extra_warnings" ]
  public_configs = [ ":zstd_config" ]
  deps = [ "//gn:default_deps" ]
}

config("zstd_config") {
  visibility = _buildtools_visibility
  cflags = [
    perfetto_isystem_cflag,
    rebase_path("zstd", root_build_dir),
  ]
  if (current_cpu == "x64") {
    defines = [ "ZSTD_DISABLE_ASM" ]
  }
}

# For standalone profiler builds.
source_set("libunwindstack") {
  visibility = _buildtools_visibility
  include_dirs = [
    "android-unwinding/libunwindstack/include",
    "android-unwinding/libunwindstack",
    "android-libbase/include",
    "android-logging/liblog/include",
    "android-libprocinfo/include",
    "android-core/include",
    "android-core/libcutils/include",
    "bionic/libc/async_safe/include",
    "bionic/libc/platform/",
    "lzma/C",
    "zstd/lib",
  ]
  deps = [
    ":lzma",
    ":zlib",
    ":zstd",
    "//gn:default_deps",
  ]
  sources = [
    "android-libbase/file.cpp",
    "android-libbase/stringprintf.cpp",
    "android-libbase/strings.cpp",
    "android-unwinding/libunwindstack/ArmExidx.cpp",
    "android-unwinding/libunwindstack/Demangle.cpp",
    "android-unwinding/libunwindstack/DwarfCfa.cpp",
    "android-unwinding/libunwindstack/DwarfEhFrameWithHdr.cpp",
    "android-unwinding/libunwindstack/DwarfMemory.cpp",
    "android-unwinding/libunwindstack/DwarfOp.cpp",
    "android-unwinding/libunwindstack/DwarfSection.cpp",
    "android-unwinding/libunwindstack/Elf.cpp",
    "android-unwinding/libunwindstack/ElfInterface.cpp",
    "android-unwinding/libunwindstack/ElfInterfaceArm.cpp",
    "android-unwinding/libunwindstack/Global.cpp",
    "android-unwinding/libunwindstack/JitDebug.cpp",
    "android-unwinding/libunwindstack/MapInfo.cpp",
    "android-unwinding/libunwindstack/Maps.cpp",
    "android-unwinding/libunwindstack/Memory.cpp",
    "android-unwinding/libunwindstack/MemoryXz.cpp",
    "android-unwinding/libunwindstack/Regs.cpp",
    "android-unwinding/libunwindstack/RegsArm.cpp",
    "android-unwinding/libunwindstack/RegsArm64.cpp",
    "android-unwinding/libunwindstack/RegsRiscv64.cpp",
    "android-unwinding/libunwindstack/RegsX86.cpp",
    "android-unwinding/libunwindstack/RegsX86_64.cpp",
    "android-unwinding/libunwindstack/Symbols.cpp",
    "android-unwinding/libunwindstack/Unwinder.cpp",
  ]
  if (!is_android) {
    sources += [
      "android-libbase/liblog_symbols.cpp",
      "android-libbase/logging.cpp",
      "android-libbase/threads.cpp",
      "android-logging/liblog/logger_write.cpp",
      "android-logging/liblog/properties.cpp",
      "android-unwinding/libunwindstack/LogStdout.cpp",
      "android-unwinding/libunwindstack/MemoryMte.cpp",
    ]
  } else {
    sources += [ "android-unwinding/libunwindstack/LogAndroid.cpp" ]
  }
  if (current_cpu == "x86") {
    sources += [ "android-unwinding/libunwindstack/AsmGetRegsX86.S" ]
  } else if (current_cpu == "x64") {
    sources += [ "android-unwinding/libunwindstack/AsmGetRegsX86_64.S" ]
  }
  configs -= [
    "//gn/standalone:extra_warnings",
    "//gn/standalone:visibility_hidden",
  ]
  cflags = [ "-DFAKE_LOG_DEVICE=1" ]
  if (!is_win) {
    cflags += [
      "-Wno-deprecated-declarations",
      "-Wno-vla-cxx-extension",
      "-Wno-c99-designator",
    ]
  }
  public_configs = [ ":libunwindstack_config" ]
}

config("bionic_kernel_uapi_headers") {
  visibility = _buildtools_visibility
  cflags = [
    perfetto_isystem_cflag,
    rebase_path("bionic/libc/kernel", root_build_dir),
  ]
}

config("jsoncpp_config") {
  visibility = _buildtools_visibility
  cflags = [ "-DJSON_USE_EXCEPTION=0" ]
  cflags += [
    # Using -isystem instead of include_dirs (-I), so we don't need to suppress
    # warnings coming from third-party headers. Doing so would mask warnings in
    # our own code.
    perfetto_isystem_cflag,
    rebase_path("jsoncpp/include", root_build_dir),
  ]
  if (!is_win) {
    cflags += [ "-Wno-deprecated-declarations" ]
  }
  if (is_clang && is_win) {
    # JSON uses __int64 which clang complains about unless we specify this flag.
    cflags += [ "-Wno-language-extension-token" ]
  }
}

source_set("jsoncpp") {
  visibility = _buildtools_visibility
  sources = [
    "jsoncpp/src/lib_json/json_reader.cpp",
    "jsoncpp/src/lib_json/json_value.cpp",
    "jsoncpp/src/lib_json/json_writer.cpp",
  ]
  configs -= [ "//gn/standalone:extra_warnings" ]
  public_configs = [ ":jsoncpp_config" ]
  deps = [ "//gn:default_deps" ]
}

config("linenoise_config") {
  visibility = _buildtools_visibility
  cflags = [
    # Using -isystem instead of include_dirs (-I), so we don't need to suppress
    # warnings coming from third-party headers. Doing so would mask warnings in
    # our own code.
    perfetto_isystem_cflag,
    rebase_path("linenoise", root_build_dir),
  ]
}

source_set("linenoise") {
  visibility = _buildtools_visibility
  sources = [
    "linenoise/linenoise.c",
    "linenoise/linenoise.h",
  ]
  configs -= [ "//gn/standalone:extra_warnings" ]
  public_configs = [ ":linenoise_config" ]
  cflags = [ "-Wno-tautological-unsigned-zero-compare" ]
  deps = [ "//gn:default_deps" ]
}

if (use_libfuzzer) {
  source_set("libfuzzer") {
    visibility = _buildtools_visibility
    configs -= [
      "//gn/standalone:extra_warnings",
      "//gn/standalone/sanitizers:sanitizers_cflags",
    ]
    sources = [
      "libfuzzer/FuzzerCrossOver.cpp",
      "libfuzzer/FuzzerDataFlowTrace.cpp",
      "libfuzzer/FuzzerDriver.cpp",
      "libfuzzer/FuzzerExtFunctionsDlsym.cpp",
      "libfuzzer/FuzzerExtFunctionsWeak.cpp",
      "libfuzzer/FuzzerExtFunctionsWindows.cpp",
      "libfuzzer/FuzzerExtraCounters.cpp",
      "libfuzzer/FuzzerFork.cpp",
      "libfuzzer/FuzzerIO.cpp",
      "libfuzzer/FuzzerIOPosix.cpp",
      "libfuzzer/FuzzerIOWindows.cpp",
      "libfuzzer/FuzzerLoop.cpp",
      "libfuzzer/FuzzerMain.cpp",
      "libfuzzer/FuzzerMerge.cpp",
      "libfuzzer/FuzzerMutate.cpp",
      "libfuzzer/FuzzerSHA1.cpp",
      "libfuzzer/FuzzerTracePC.cpp",
      "libfuzzer/FuzzerUtil.cpp",
      "libfuzzer/FuzzerUtilDarwin.cpp",
      "libfuzzer/FuzzerUtilFuchsia.cpp",
      "libfuzzer/FuzzerUtilLinux.cpp",
      "libfuzzer/FuzzerUtilPosix.cpp",
      "libfuzzer/FuzzerUtilWindows.cpp",
    ]
    deps = [ "//gn:default_deps" ]
  }
}

config("llvm_demangle_config") {
  visibility = _buildtools_visibility
  include_dirs = [ "llvm-project/llvm/include" ]
}

source_set("llvm_demangle") {
  visibility = _buildtools_visibility
  configs -= [ "//gn/standalone:extra_warnings" ]
  public_configs = [ ":llvm_demangle_config" ]
  sources = [
    "llvm-project/llvm/include/llvm/Demangle/Demangle.h",
    "llvm-project/llvm/include/llvm/Demangle/DemangleConfig.h",
    "llvm-project/llvm/include/llvm/Demangle/ItaniumDemangle.h",
    "llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangle.h",
    "llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h",
    "llvm-project/llvm/include/llvm/Demangle/StringViewExtras.h",
    "llvm-project/llvm/include/llvm/Demangle/Utility.h",
    "llvm-project/llvm/lib/Demangle/DLangDemangle.cpp",
    "llvm-project/llvm/lib/Demangle/Demangle.cpp",
    "llvm-project/llvm/lib/Demangle/ItaniumDemangle.cpp",
    "llvm-project/llvm/lib/Demangle/MicrosoftDemangle.cpp",
    "llvm-project/llvm/lib/Demangle/MicrosoftDemangleNodes.cpp",
    "llvm-project/llvm/lib/Demangle/RustDemangle.cpp",
  ]
  deps = [ "//gn:default_deps" ]
}

if (enable_perfetto_grpc) {
  config("grpc_absl_config") {
    visibility = _buildtools_visibility
    include_dirs = [ "grpc/src/third_party/abseil-cpp" ]
    cflags = [ "-Wno-deprecated-builtins" ]
  }

  config("grpc_boringssl_config") {
    visibility = _buildtools_visibility
    include_dirs = [ "grpc/src/third_party/boringssl-with-bazel/src/include" ]
  }

  config("grpc_upb_config") {
    visibility = _buildtools_visibility
    include_dirs = [
      "grpc/src/third_party/upb",
      "grpc/src/src/core/ext/upb-generated",
      "grpc/src/src/core/ext/upbdefs-generated",
    ]
  }

  config("grpc_re2_config") {
    visibility = _buildtools_visibility
    include_dirs = [ "grpc/src/third_party/re2" ]
  }

  config("grpc_internal_config") {
    visibility = _buildtools_visibility
    include_dirs = [
      "grpc/src/include",
      "grpc/src",
      "grpc/src/third_party/address_sorting/include",
      "grpc/src/third_party/re2",
      "grpc/src/src/core/ext/upb-generated",
      "grpc/src/src/core/ext/upbdefs-generated",
      "grpc/src/third_party/xxhash",
    ]
    cflags = [ "-DGRPC_ARES=0" ]
  }

  config("grpc_gen_config") {
    cflags = [
      # Using -isystem instead of include_dirs (-I), so we don't need to
      # suppress warnings coming from libprotobuf headers. Doing so would mask
      # warnings in our own code.
      perfetto_isystem_cflag,
      rebase_path("grpc/src/include", root_build_dir),
      perfetto_isystem_cflag,
      rebase_path("grpc/src/third_party/abseil-cpp", root_build_dir),
    ]

    # This issues appear in .grpc.pb.h files so we unfortunately need to leak
    # the cflags outside of just compiling this code.
    if (is_clang && !is_win) {
      cflags += [
        "-Wno-weak-vtables",
        "-Wno-suggest-destructor-override",
      ]
    }
  }
}
