| # 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") |
| import("//build/test/test_package.gni") |
| |
| test_package("leveldb_tests") { |
| 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 = [ |
| "//sdk/fidl/fuchsia.io", |
| "//sdk/lib/fdio", |
| "//third_party/re2", |
| "//third_party/snappy", |
| "//zircon/system/ulib/async", |
| "//zircon/system/ulib/async:async-cpp", |
| "//zircon/system/ulib/async-loop:async-loop-cpp", |
| "//zircon/system/ulib/async-loop:async-loop-default", |
| "//zircon/system/ulib/fit", |
| "//zircon/system/ulib/syslog", |
| "//zircon/system/ulib/zx", |
| ] |
| |
| 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" |
| } |
| leveldb_test_source_wrapper("fuchsia_env_test") { |
| test = "util/env_fuchsia_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", |
| ":fuchsia_env_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", |