blob: 51a8565ae04722e48a59f570d499cf7f31d74d33 [file] [log] [blame]
# Copyright 2016 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/package.gni")
package("leveldb_tests") {
testonly = true
deps = [
":leveldb_tests_bin",
]
tests = [
{
name = "leveldb_tests"
},
]
}
defines = [
"LEVELDB_PLATFORM_POSIX=1",
"LEVELDB_IS_BIG_ENDIAN=0",
"HAVE_SNAPPY=1",
"HAVE_FDATASYNC=1",
]
config("leveldb_config") {
include_dirs = [
".",
"include",
]
}
config("leveldb_warnings_config") {
cflags = [
"-Wall",
"-Werror",
"-Wthread-safety",
"-Wno-sign-compare",
"-Wno-unused-variable",
]
}
static_library("leveldb") {
sources = [
"db/builder.cc",
"db/builder.h",
"db/db_impl.cc",
"db/db_impl.h",
"db/db_iter.cc",
"db/db_iter.h",
"db/dbformat.cc",
"db/dbformat.h",
"db/dumpfile.cc",
"db/filename.cc",
"db/filename.h",
"db/log_format.h",
"db/log_reader.cc",
"db/log_reader.h",
"db/log_writer.cc",
"db/log_writer.h",
"db/memtable.cc",
"db/memtable.h",
"db/repair.cc",
"db/skiplist.h",
"db/snapshot.h",
"db/table_cache.cc",
"db/table_cache.h",
"db/version_edit.cc",
"db/version_edit.h",
"db/version_set.cc",
"db/version_set.h",
"db/write_batch.cc",
"db/write_batch_internal.h",
"helpers/memenv/memenv.cc",
"helpers/memenv/memenv.h",
"include/leveldb/cache.h",
"include/leveldb/comparator.h",
"include/leveldb/db.h",
"include/leveldb/dumpfile.h",
"include/leveldb/env.h",
"include/leveldb/export.h",
"include/leveldb/filter_policy.h",
"include/leveldb/iterator.h",
"include/leveldb/options.h",
"include/leveldb/slice.h",
"include/leveldb/status.h",
"include/leveldb/table.h",
"include/leveldb/table_builder.h",
"include/leveldb/write_batch.h",
"port/port.h",
"port/port_stdxx.h",
"port/thread_annotations.h",
"table/block.cc",
"table/block.h",
"table/block_builder.cc",
"table/block_builder.h",
"table/filter_block.cc",
"table/filter_block.h",
"table/format.cc",
"table/format.h",
"table/iterator.cc",
"table/iterator_wrapper.h",
"table/merger.cc",
"table/merger.h",
"table/table.cc",
"table/table_builder.cc",
"table/two_level_iterator.cc",
"table/two_level_iterator.h",
"util/arena.cc",
"util/arena.h",
"util/bloom.cc",
"util/cache.cc",
"util/coding.cc",
"util/coding.h",
"util/comparator.cc",
"util/crc32c.cc",
"util/crc32c.h",
"util/env.cc",
"util/env_fuchsia.cc",
"util/env_fuchsia.h",
"util/filter_policy.cc",
"util/hash.cc",
"util/hash.h",
"util/logging.cc",
"util/logging.h",
"util/mutexlock.h",
"util/options.cc",
"util/random.h",
"util/status.cc",
]
public_deps = [
"//third_party/re2",
"//third_party/snappy",
]
public_configs = [ ":leveldb_config" ]
configs -= [ "//build/config:default_warnings" ]
configs += [ ":leveldb_warnings_config" ]
}
source_set("leveldb_testutil") {
sources = [
"util/histogram.cc",
"util/histogram.h",
"util/testharness.cc",
"util/testharness.h",
"util/testutil.cc",
"util/testutil.h",
]
public_deps = [
":leveldb",
]
configs -= [ "//build/config:default_warnings" ]
configs += [ ":leveldb_warnings_config" ]
}
# These leveldb *_test.cc files all define their own identical main function which
# just calls the same RunAllTests helper. Having this many different binaries is
# really difficult to deal with in our setup, so we glob them into one binary
# called leveldb_tests. To do this we need to give each file a different name
# for its main symbol which we'll ignore. We do this with the magic and horror
# of a GN template to generate distinct defines for each file.
template("leveldb_test_source_wrapper") {
assert(defined(invoker.test), "Must define test")
source_set(target_name) {
testonly = true
sources = [
invoker.test,
]
deps = [
":leveldb_testutil",
"//third_party/googletest:gtest",
]
cflags = [ "-Dmain=fake_main_${target_name}" ]
configs -= [ "//build/config:default_warnings" ]
configs += [ ":leveldb_warnings_config" ]
}
}
leveldb_test_source_wrapper("corruption_test") {
test = "db/corruption_test.cc"
}
leveldb_test_source_wrapper("dbformat_test") {
test = "db/dbformat_test.cc"
}
leveldb_test_source_wrapper("filename_test") {
test = "db/filename_test.cc"
}
leveldb_test_source_wrapper("log_test") {
test = "db/log_test.cc"
}
leveldb_test_source_wrapper("skiplist_test") {
test = "db/skiplist_test.cc"
}
leveldb_test_source_wrapper("version_edit_test") {
test = "db/version_edit_test.cc"
}
leveldb_test_source_wrapper("write_batch_test") {
test = "db/write_batch_test.cc"
}
leveldb_test_source_wrapper("filter_block_test") {
test = "table/filter_block_test.cc"
}
leveldb_test_source_wrapper("table_test") {
test = "table/table_test.cc"
}
leveldb_test_source_wrapper("arena_test") {
test = "util/arena_test.cc"
}
leveldb_test_source_wrapper("bloom_test") {
test = "util/bloom_test.cc"
}
leveldb_test_source_wrapper("cache_test") {
test = "util/cache_test.cc"
}
leveldb_test_source_wrapper("crc32c_test") {
test = "util/crc32c_test.cc"
}
leveldb_test_source_wrapper("logging_test") {
test = "util/logging_test.cc"
}
leveldb_test_source_wrapper("status_test") {
test = "util/status_test.cc"
}
group("leveldb_test_sources") {
testonly = true
deps = [
":arena_test",
":bloom_test",
":cache_test",
":corruption_test",
":crc32c_test",
":dbformat_test",
":filename_test",
":filter_block_test",
":log_test",
":logging_test",
":skiplist_test",
":status_test",
":table_test",
":version_edit_test",
":write_batch_test",
]
}
executable("leveldb_tests_bin") {
output_name = "leveldb_tests"
testonly = true
sources = [
# Use the actual main from env_test.cc (arbitrarily chosen).
# The rest of the test sources come from :leveldb_test_sources
"util/env_test.cc",
]
deps = [
":leveldb_test_sources",
":leveldb_testutil",
"//third_party/googletest:gtest",
]
configs -= [ "//build/config:default_warnings" ]
configs += [ ":leveldb_warnings_config" ]
}
package("leveldb_benchmarks") {
testonly = true
deps = [
":leveldb_db_bench",
]
binaries = [
{
name = "leveldb_db_benchmark"
},
]
}
executable("leveldb_db_bench") {
testonly = true
output_name = "leveldb_db_benchmark"
sources = [
"db/db_bench.cc",
]
deps = [
":leveldb_testutil",
]
}
# TODO: Figure out "db/db_test.cc",