blob: d6b0032d91455dfe3af0f9d81f7f59bf29c018bc [file] [log] [blame]
# Copyright 2024 Google LLC
#
# 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.
load("@flatbuffers//:build_defs.bzl", "flatbuffer_library_public")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
load("@protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
load("@protobuf//bazel:proto_library.bzl", "proto_library")
package(default_visibility = ["@com_google_fuzztest//:__subpackages__"])
licenses(["notice"])
cc_library(
name = "any",
hdrs = ["any.h"],
deps = [
":logging",
":meta",
"@com_google_fuzztest//common:logging",
],
)
cc_test(
name = "any_test",
srcs = ["any_test.cc"],
deps = [
":any",
"@abseil-cpp//absl/strings",
"@googletest//:gtest_main",
],
)
cc_library(
name = "centipede_adaptor",
srcs = ["centipede_adaptor.cc"],
hdrs = ["centipede_adaptor.h"],
defines = ["FUZZTEST_USE_CENTIPEDE"],
deps = [
":any",
":configuration",
":escaping",
":fixture_driver",
":flag_name",
":io",
":logging",
":runtime",
":serialization",
":subprocess",
":table_of_recent_compares",
"@abseil-cpp//absl/algorithm:container",
"@abseil-cpp//absl/base:no_destructor",
"@abseil-cpp//absl/cleanup",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/memory",
"@abseil-cpp//absl/random",
"@abseil-cpp//absl/random:distributions",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/strings:string_view",
"@abseil-cpp//absl/time",
"@abseil-cpp//absl/types:span",
"@com_google_fuzztest//centipede:centipede_callbacks",
"@com_google_fuzztest//centipede:centipede_default_callbacks",
"@com_google_fuzztest//centipede:centipede_interface",
"@com_google_fuzztest//centipede:centipede_runner_no_main",
"@com_google_fuzztest//centipede:environment",
"@com_google_fuzztest//centipede:execution_metadata",
"@com_google_fuzztest//centipede:fuzztest_mutator",
"@com_google_fuzztest//centipede:mutation_data",
"@com_google_fuzztest//centipede:runner_result",
"@com_google_fuzztest//centipede:stop",
"@com_google_fuzztest//centipede:workdir",
"@com_google_fuzztest//common:defs",
"@com_google_fuzztest//common:logging",
"@com_google_fuzztest//common:remote_file",
"@com_google_fuzztest//common:temp_dir",
"@com_google_fuzztest//fuzztest/internal/domains:core_domains_impl",
],
)
cc_library(
name = "compatibility_mode",
srcs = ["compatibility_mode.cc"],
hdrs = ["compatibility_mode.h"],
deps = [
":fixture_driver",
":logging",
":runtime",
"@abseil-cpp//absl/random:distributions",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/time",
"@com_google_fuzztest//fuzztest/internal/domains:core_domains_impl",
] + select({
"//conditions:default": [],
}),
)
cc_library(
name = "configuration",
srcs = ["configuration.cc"],
hdrs = ["configuration.h"],
deps = [
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:string_view",
"@abseil-cpp//absl/time",
"@com_google_fuzztest//common:logging",
],
)
cc_test(
name = "configuration_test",
srcs = ["configuration_test.cc"],
deps = [
":configuration",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/time",
"@googletest//:gtest_main",
],
)
cc_library(
name = "corpus_database",
srcs = ["corpus_database.cc"],
hdrs = ["corpus_database.h"],
deps = [
":configuration",
":io",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:string_view",
"@abseil-cpp//absl/time",
],
)
cc_library(
name = "coverage",
srcs = ["coverage.cc"],
hdrs = ["coverage.h"],
defines = select({
"@com_google_fuzztest//fuzztest:use_centipede": ["FUZZTEST_USE_CENTIPEDE"],
"//conditions:default": [],
}),
deps = [
":flag_name",
":logging",
":table_of_recent_compares",
"@abseil-cpp//absl/base:core_headers",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/types:span",
"@com_google_fuzztest//common:logging",
],
)
cc_library(
name = "escaping",
srcs = ["escaping.cc"],
hdrs = ["escaping.h"],
deps = ["@abseil-cpp//absl/strings"],
)
cc_library(
name = "fixture_driver",
srcs = ["fixture_driver.cc"],
hdrs = ["fixture_driver.h"],
deps = [
":any",
":logging",
":meta",
":printer",
":registration",
":type_support",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/types:span",
"@com_google_fuzztest//fuzztest/internal/domains:core_domains_impl",
],
)
cc_test(
name = "fixture_driver_test",
size = "small",
srcs = ["fixture_driver_test.cc"],
deps = [
":any",
":fixture_driver",
":logging",
":registration",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/types:span",
"@com_google_fuzztest//common:logging",
"@com_google_fuzztest//fuzztest:domain_core",
"@googletest//:gtest_main",
],
)
cc_library(
name = "flag_name",
hdrs = ["flag_name.h"],
)
cc_library(
name = "googletest_adaptor",
testonly = True,
srcs = ["googletest_adaptor.cc"],
hdrs = ["googletest_adaptor.h"],
deps = [
":configuration",
":corpus_database",
":flag_name",
":io",
":registry",
":runtime",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/strings:string_view",
"@com_google_fuzztest//common:crashing_input_filename",
"@com_google_fuzztest//common:logging",
"@googletest//:gtest",
] + select({
"@com_google_fuzztest//fuzztest:use_centipede": [":centipede_adaptor"],
"//conditions:default": [],
}),
)
cc_library(
name = "io",
srcs = ["io.cc"],
hdrs = ["io.h"],
deps = [
":logging",
"@abseil-cpp//absl/functional:function_ref",
"@abseil-cpp//absl/hash",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/strings:string_view",
"@abseil-cpp//absl/time",
"@abseil-cpp//absl/types:span",
"@com_google_fuzztest//common:blob_file",
"@com_google_fuzztest//common:defs",
"@com_google_fuzztest//common:logging",
"@com_google_fuzztest//common:remote_file",
] + select({
"//conditions:default": [],
}),
)
cc_test(
name = "io_test",
srcs = ["io_test.cc"],
deps = [
":io",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/time",
"@com_google_fuzztest//common:blob_file",
"@com_google_fuzztest//common:defs",
"@com_google_fuzztest//common:logging",
"@com_google_fuzztest//common:temp_dir",
"@com_google_fuzztest//fuzztest:fuzztest_core",
"@googletest//:gtest_main",
],
)
cc_library(
name = "logging",
srcs = ["logging.cc"],
hdrs = ["logging.h"],
deps = [
"@abseil-cpp//absl/base:core_headers",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/synchronization",
"@com_google_fuzztest//common:logging",
],
)
cc_library(
name = "meta",
hdrs = ["meta.h"],
deps = ["@abseil-cpp//absl/numeric:int128"],
)
cc_library(
name = "printer",
hdrs = ["printer.h"],
deps = [
":meta",
"@abseil-cpp//absl/strings:str_format",
],
)
cc_library(
name = "fuzzing_mock_stream",
hdrs = ["fuzzing_mock_stream.h"],
deps = [
"@abseil-cpp//absl/functional:function_ref",
"@abseil-cpp//absl/numeric:bits",
"@abseil-cpp//absl/types:span",
],
)
cc_library(
name = "register_absl_fuzzing_mocks",
srcs = ["register_absl_fuzzing_mocks.cc"],
hdrs = ["register_absl_fuzzing_mocks.h"],
deps = [
":fuzzing_mock_stream",
"@abseil-cpp//absl/base:fast_type_id",
"@abseil-cpp//absl/functional:function_ref",
"@abseil-cpp//absl/random:distributions",
],
)
cc_test(
name = "register_absl_fuzzing_mocks_test",
srcs = ["register_absl_fuzzing_mocks_test.cc"],
deps = [
"@abseil-cpp//absl/random",
"@abseil-cpp//absl/random:bit_gen_ref",
"@com_google_fuzztest//fuzztest:fuzzing_bit_gen",
"@googletest//:gtest_main",
],
)
cc_library(
name = "registration",
hdrs = ["registration.h"],
deps = [
":meta",
":printer",
":type_support",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/types:span",
"@com_google_fuzztest//fuzztest:domain_core",
"@com_google_fuzztest//fuzztest/internal/domains:core_domains_impl",
],
)
cc_library(
name = "registry",
srcs = ["registry.cc"],
hdrs = ["registry.h"],
deps = [
":compatibility_mode",
":fixture_driver",
":registration",
":runtime",
"@abseil-cpp//absl/container:flat_hash_map",
"@abseil-cpp//absl/functional:function_ref",
"@abseil-cpp//absl/strings:string_view",
] + select({
"@com_google_fuzztest//fuzztest:use_centipede": [":centipede_adaptor"],
"//conditions:default": [],
}),
)
cc_library(
name = "runtime",
srcs = ["runtime.cc"],
hdrs = ["runtime.h"],
deps = [
":configuration",
":corpus_database",
":coverage",
":fixture_driver",
":flag_name",
":io",
":logging",
":printer",
":registration",
":sanitizer_interface",
":seed_seq",
":serialization",
":status",
"@abseil-cpp//absl/base:core_headers",
"@abseil-cpp//absl/functional:any_invocable",
"@abseil-cpp//absl/functional:bind_front",
"@abseil-cpp//absl/functional:function_ref",
"@abseil-cpp//absl/random",
"@abseil-cpp//absl/random:bit_gen_ref",
"@abseil-cpp//absl/random:distributions",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/time",
"@abseil-cpp//absl/types:span",
"@com_google_fuzztest//common:bazel",
"@com_google_fuzztest//common:logging",
"@com_google_fuzztest//fuzztest/internal/domains:core_domains_impl",
],
)
cc_test(
name = "runtime_test",
srcs = ["runtime_test.cc"],
deps = [
":configuration",
":runtime",
":test_protobuf_cc_proto",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/time",
"@com_google_fuzztest//fuzztest:domain_core",
"@googletest//:gtest_main",
],
)
cc_library(
name = "sanitizer_interface",
srcs = ["sanitizer_interface.cc"],
hdrs = ["sanitizer_interface.h"],
deps = [
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:statusor",
"@abseil-cpp//absl/strings",
],
)
cc_test(
name = "sanitizer_interface_test",
srcs = ["sanitizer_interface_test.cc"],
deps = [
":sanitizer_interface",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/status:statusor",
"@googletest//:gtest_main",
],
)
cc_library(
name = "seed_seq",
srcs = ["seed_seq.cc"],
hdrs = ["seed_seq.h"],
deps = [
":logging",
"@abseil-cpp//absl/random",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/types:span",
"@com_google_fuzztest//common:logging",
],
)
cc_test(
name = "seed_seq_test",
srcs = ["seed_seq_test.cc"],
deps = [
":seed_seq",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/types:span",
"@googletest//:gtest_main",
],
)
cc_library(
name = "serialization",
srcs = ["serialization.cc"],
hdrs = ["serialization.h"],
deps = [
":meta",
"@abseil-cpp//absl/numeric:int128",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/types:span",
],
)
cc_test(
name = "serialization_test",
srcs = ["serialization_test.cc"],
deps = [
":serialization",
":test_protobuf_cc_proto",
"@protobuf//:differencer",
"@googletest//:gtest_main",
"@protobuf",
],
)
cc_library(
name = "status",
srcs = ["status.cc"],
hdrs = ["status.h"],
deps = [
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:cord",
],
)
cc_library(
name = "subprocess",
srcs = ["subprocess.cc"],
hdrs = ["subprocess.h"],
deps = [
"@abseil-cpp//absl/container:flat_hash_map",
"@abseil-cpp//absl/functional:function_ref",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/time",
"@abseil-cpp//absl/types:span",
"@com_google_fuzztest//common:logging",
],
)
cc_test(
name = "subprocess_test",
srcs = ["subprocess_test.cc"],
deps = [
":subprocess",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/time",
"@googletest//:gtest_main",
],
)
cc_library(
name = "table_of_recent_compares",
hdrs = ["table_of_recent_compares.h"],
deps = [
":type_support",
"@abseil-cpp//absl/container:flat_hash_set",
"@abseil-cpp//absl/random:bit_gen_ref",
"@abseil-cpp//absl/random:distributions",
],
)
cc_test(
name = "table_of_recent_compares_test",
srcs = ["table_of_recent_compares_test.cc"],
deps = [
":table_of_recent_compares",
"@abseil-cpp//absl/random",
"@googletest//:gtest_main",
],
)
proto_library(
name = "test_protobuf",
srcs = ["test_protobuf.proto"],
)
cc_proto_library(
name = "test_protobuf_cc_proto",
deps = [":test_protobuf"],
)
cc_library(
name = "type_support",
srcs = ["type_support.cc"],
hdrs = ["type_support.h"],
deps = [
":meta",
":printer",
"@abseil-cpp//absl/base:nullability",
"@abseil-cpp//absl/debugging:symbolize",
"@abseil-cpp//absl/functional:function_ref",
"@abseil-cpp//absl/numeric:int128",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/time",
"@com_google_fuzztest//fuzztest/internal/domains:absl_helpers",
],
)
cc_test(
name = "type_support_test",
srcs = ["type_support_test.cc"],
deps = [
":meta",
":printer",
":test_protobuf_cc_proto",
":type_support",
"@abseil-cpp//absl/numeric:int128",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/time",
"@com_google_fuzztest//fuzztest:domain",
"@googletest//:gtest_main",
"@protobuf",
],
)
flatbuffer_library_public(
name = "test_flatbuffers_fbs",
srcs = ["test_flatbuffers.fbs"],
outs = [
"test_flatbuffers_bfbs_generated.h",
"test_flatbuffers_generated.h",
],
flatc_args = [
"--no-union-value-namespacing",
"--gen-name-strings",
"--bfbs-gen-embed",
],
language_flag = "-c",
)
cc_library(
name = "test_flatbuffers_cc_fbs",
srcs = [":test_flatbuffers_fbs"],
hdrs = [":test_flatbuffers_fbs"],
features = ["-parse_headers"],
deps = ["@flatbuffers//:runtime_cc"],
)
# Stops build_cleaner from generating flatbuffers_library for the test flatbuffers schema.
filegroup(
name = "build_cleaner_ignore",
srcs = [
"test_flatbuffers_fbs",
],
tags = ["ignore_srcs"],
)