blob: e150aa1acbb32c61e4138888d04ed00a31012964 [file] [log] [blame]
# Copyright 2022 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
load(
"//build:source_list.bzl",
"balsa_hdrs",
"balsa_srcs",
"binary_http_hdrs",
"binary_http_srcs",
"default_platform_impl_hdrs",
"default_platform_impl_srcs",
"default_platform_impl_test_support_hdrs",
"default_platform_impl_test_support_srcs",
"default_platform_impl_tool_support_hdrs",
"default_platform_impl_tool_support_srcs",
"io_test_support_hdrs",
"io_test_support_srcs",
"io_tests_srcs",
"io_tool_support_hdrs",
"io_tool_support_srcs",
"oblivious_http_hdrs",
"oblivious_http_srcs",
"quiche_core_hdrs",
"quiche_core_srcs",
"quiche_test_support_hdrs",
"quiche_test_support_srcs",
"quiche_tests_srcs",
"quiche_tool_support_hdrs",
"quiche_tool_support_srcs",
)
load("//build:test.bzl", "test_suite_from_source_list")
licenses(["notice"])
package(
default_visibility = ["//visibility:private"],
features = [
"parse_headers",
"layering_check",
],
)
cc_library(
name = "quiche_flags_list",
textual_hdrs = [
"common/quiche_protocol_flags_list.h",
],
)
cc_library(
name = "quic_flags_list",
textual_hdrs = ["quic/core/quic_flags_list.h"],
)
cc_library(
name = "binary_http",
srcs = binary_http_srcs,
hdrs = binary_http_hdrs,
deps = [
":quiche_core",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "oblivious_http",
srcs = oblivious_http_srcs,
hdrs = oblivious_http_hdrs,
deps = [
":quiche_core",
"@boringssl//:crypto",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/container:btree",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:optional",
],
)
# QUICHE_EXPORT is used by all platform definitions, and thus needs to be handled separately.
cc_library(
name = "quiche_platform_default_quiche_export",
hdrs = [
"common/platform/default/quiche_platform_impl/quiche_export_impl.h",
],
strip_include_prefix = "common/platform/default",
)
cc_library(
name = "quiche_platform_quiche_export",
hdrs = [
"common/platform/api/quiche_export.h",
],
deps = [":quiche_platform_default_quiche_export"],
)
cc_library(
name = "quiche_platform_default",
srcs = default_platform_impl_srcs,
hdrs = default_platform_impl_hdrs,
strip_include_prefix = "common/platform/default",
deps = [
":quic_flags_list",
":quiche_flags_list",
":quiche_platform_quiche_export",
"@boringssl//:crypto",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/base:log_severity",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/debugging:stacktrace",
"@com_google_absl//absl/debugging:symbolize",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/log:absl_check",
"@com_google_absl//absl/log:absl_log",
"@com_google_absl//absl/log:flags",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/synchronization",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:optional",
"@com_google_googleurl//url",
],
)
cc_library(
name = "quiche_platform_default_tools",
srcs = default_platform_impl_tool_support_srcs,
hdrs = default_platform_impl_tool_support_hdrs,
strip_include_prefix = "common/platform/default",
deps = [
":quiche_core",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/flags:parse",
"@com_google_absl//absl/flags:usage",
"@com_google_absl//absl/log:initialize",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:optional",
"@com_google_googletest//:gtest",
],
)
cc_library(
name = "quiche_platform_default_testonly",
testonly = 1,
srcs = default_platform_impl_test_support_srcs,
hdrs = default_platform_impl_test_support_hdrs,
strip_include_prefix = "common/platform/default",
deps = [
":quiche_core",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/flags:parse",
"@com_google_absl//absl/flags:usage",
"@com_google_googletest//:gtest",
],
)
proto_library(
name = "quiche_protobufs",
srcs = [
"quic/core/proto/cached_network_parameters.proto",
"quic/core/proto/crypto_server_config.proto",
"quic/core/proto/source_address_token.proto",
],
)
cc_proto_library(
name = "quiche_protobufs_cc_proto",
deps = [":quiche_protobufs"],
)
proto_library(
name = "quiche_protobufs_testonly",
srcs = [
"quic/test_tools/send_algorithm_test_result.proto",
],
)
cc_proto_library(
name = "quiche_protobufs_testonly_cc_proto",
deps = [":quiche_protobufs_testonly"],
)
cc_library(
name = "quiche_core",
srcs = quiche_core_srcs,
hdrs = quiche_core_hdrs,
textual_hdrs = ["http2/hpack/hpack_static_table_entries.inc"],
deps = [
":quiche_platform_default",
":quiche_protobufs_cc_proto",
"@boringssl//:crypto",
"@boringssl//:ssl",
"@com_google_absl//absl/algorithm:container",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/cleanup",
"@com_google_absl//absl/container:btree",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/container:inlined_vector",
"@com_google_absl//absl/container:node_hash_map",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/functional:function_ref",
"@com_google_absl//absl/hash",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/numeric:bits",
"@com_google_absl//absl/numeric:int128",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
"@com_google_absl//absl/types:variant",
"@zlib",
],
)
cc_library(
name = "balsa",
srcs = balsa_srcs,
hdrs = balsa_hdrs,
deps = [
":quiche_core",
"@com_google_absl//absl/algorithm:container",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/container:inlined_vector",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
"@com_google_absl//absl/types:variant",
],
)
cc_library(
name = "quiche_tool_support",
srcs = quiche_tool_support_srcs,
hdrs = quiche_tool_support_hdrs,
deps = [
":quiche_core",
":quiche_platform_default_tools",
"@boringssl//:crypto",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/functional:bind_front",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
"@com_google_googletest//:gtest",
"@com_google_quic_trace//quic_trace:quic_trace_cc_proto",
],
)
cc_library(
name = "quiche_test_support",
testonly = 1,
srcs = quiche_test_support_srcs,
hdrs = quiche_test_support_hdrs,
deps = [
":binary_http",
":quiche_core",
":quiche_platform_default_testonly",
":quiche_protobufs_testonly_cc_proto",
":quiche_tool_support",
"@boringssl//:crypto",
"@boringssl//:ssl",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
"@com_google_googletest//:gtest",
],
)
cc_library(
name = "quic_toy_client",
srcs = [
"quic/tools/quic_toy_client.cc",
],
hdrs = [
"quic/tools/quic_toy_client.h",
],
deps = [
":io_tool_support",
":quiche_core",
":quiche_platform_default",
":quiche_tool_support",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "quic_toy_server",
srcs = [
"quic/tools/quic_toy_server.cc",
],
hdrs = [
"quic/tools/quic_toy_server.h",
],
deps = [
":io_tool_support",
":quiche_core",
":quiche_platform_default_tools",
":quiche_tool_support",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "quic_server_factory",
srcs = [
"quic/tools/quic_server_factory.cc",
],
hdrs = [
"quic/tools/quic_server_factory.h",
],
deps = [
":io_tool_support",
":quic_toy_server",
],
)
test_suite_from_source_list(
name = "quiche_tests",
srcs = quiche_tests_srcs,
data = glob([
"common/platform/api/testdir/**",
"quic/test_tools/quic_http_response_cache_data/**",
]),
deps = [
":balsa",
":binary_http",
":oblivious_http",
":quiche_core",
":quiche_platform_default_testonly",
":quiche_protobufs_testonly_cc_proto",
":quiche_test_support",
":quiche_tool_support",
"@boringssl//:crypto",
"@boringssl//:ssl",
"@com_google_absl//absl/algorithm:container",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/container:node_hash_map",
"@com_google_absl//absl/functional:bind_front",
"@com_google_absl//absl/hash",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/numeric:int128",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "io_tool_support",
srcs = io_tool_support_srcs,
hdrs = io_tool_support_hdrs,
deps = [
":quiche_core",
":quiche_platform_default",
":quiche_platform_default_tools",
":quiche_tool_support",
"@boringssl//:crypto",
"@com_google_absl//absl/algorithm:container",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/cleanup",
"@com_google_absl//absl/container:btree",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
"@com_google_absl//absl/types:variant",
],
)
cc_library(
name = "io_test_support",
testonly = 1,
srcs = io_test_support_srcs,
hdrs = io_test_support_hdrs,
deps = [
":io_tool_support",
":quiche_core",
":quiche_platform_default_tools",
":quiche_test_support",
":quiche_tool_support",
"@boringssl//:crypto",
"@com_google_absl//absl/algorithm:container",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/cleanup",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
"@com_google_absl//absl/types:variant",
"@com_google_googletest//:gtest",
],
)
test_suite_from_source_list(
name = "io_tests",
srcs = io_tests_srcs,
data = glob([
"common/platform/api/testdir/**",
"quic/test_tools/quic_http_response_cache_data/**",
]),
deps = [
":binary_http",
":io_test_support",
":io_tool_support",
":quiche_core",
":quiche_platform_default_testonly",
":quiche_protobufs_testonly_cc_proto",
":quiche_test_support",
":quiche_tool_support",
"@boringssl//:crypto",
"@boringssl//:ssl",
"@com_google_absl//absl/algorithm:container",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/cleanup",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/container:node_hash_map",
"@com_google_absl//absl/functional:bind_front",
"@com_google_absl//absl/hash",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/numeric:int128",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
"@com_google_absl//absl/types:variant",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
# TODO(vasilvv): make a rule that generates cc_binary rules for all _bin targets.
cc_binary(
name = "quic_packet_printer",
srcs = ["quic/tools/quic_packet_printer_bin.cc"],
deps = [
":quiche_core",
":quiche_tool_support",
"@com_google_absl//absl/strings",
],
)
cc_binary(
name = "crypto_message_printer",
srcs = ["quic/tools/crypto_message_printer_bin.cc"],
deps = [
":quiche_core",
":quiche_tool_support",
"@com_google_absl//absl/strings",
],
)
cc_binary(
name = "quic_client",
srcs = ["quic/tools/quic_client_bin.cc"],
deps = [
":io_tool_support",
":quic_toy_client",
":quiche_core",
":quiche_tool_support",
"@com_google_absl//absl/strings",
],
)
cc_binary(
name = "quic_server",
srcs = ["quic/tools/quic_server_bin.cc"],
deps = [
":io_tool_support",
":quic_server_factory",
":quic_toy_server",
":quiche_core",
":quiche_platform_default",
":quiche_platform_default_tools",
":quiche_tool_support",
"@com_google_absl//absl/strings",
],
)
cc_binary(
name = "masque_client",
srcs = ["quic/masque/masque_client_bin.cc"],
deps = [
":io_tool_support",
":quiche_core",
":quiche_tool_support",
"@boringssl//:crypto",
"@com_google_absl//absl/strings",
],
)
cc_binary(
name = "masque_server",
srcs = ["quic/masque/masque_server_bin.cc"],
deps = [
":io_tool_support",
":quiche_core",
":quiche_platform_default",
":quiche_platform_default_tools",
":quiche_tool_support",
"@com_google_absl//absl/strings",
],
)
cc_binary(
name = "web_transport_test_server",
srcs = ["quic/tools/web_transport_test_server.cc"],
deps = [
":io_tool_support",
":quic_server_factory",
":quic_toy_server",
":quiche_core",
":quiche_platform_default",
":quiche_platform_default_tools",
":quiche_tool_support",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
],
)
# Indicate that QUICHE APIs are explicitly unstable by providing only
# appropriately named aliases as publicly visible targets.
alias(
name = "quiche_unstable_api",
actual = ":quiche_core",
visibility = ["//visibility:public"],
)
alias(
name = "binary_http_unstable_api",
actual = ":binary_http",
visibility = ["//visibility:public"],
)
alias(
name = "oblivious_http_unstable_api",
actual = ":oblivious_http",
visibility = ["//visibility:public"],
)
alias(
name = "quiche_unstable_api_tool_support",
actual = ":quiche_tool_support",
visibility = ["//visibility:public"],
)
alias(
name = "quiche_unstable_api_test_support",
actual = ":quiche_test_support",
visibility = ["//visibility:public"],
)