| # Copyright 2014 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. |
| |
| import("//testing/libfuzzer/fuzzer_test.gni") |
| import("//testing/test.gni") |
| |
| defines = [ "LEVELDB_PLATFORM_CHROMIUM=1" ] |
| |
| config("leveldb_config") { |
| include_dirs = [ |
| ".", |
| "src", |
| "src/include", |
| ] |
| } |
| |
| leveldb_sources = [ |
| "env_chromium.cc", |
| "env_chromium.h", |
| "leveldb_features.h", |
| "leveldb_features.cc", |
| "leveldb_chrome.cc", |
| "leveldb_chrome.h", |
| "port/port_chromium.cc", |
| "port/port_chromium.h", |
| "src/db/builder.cc", |
| "src/db/builder.h", |
| "src/db/db_impl.cc", |
| "src/db/db_impl.h", |
| "src/db/db_iter.cc", |
| "src/db/db_iter.h", |
| "src/db/dbformat.cc", |
| "src/db/dbformat.h", |
| "src/db/dumpfile.cc", |
| "src/db/filename.cc", |
| "src/db/filename.h", |
| "src/db/log_format.h", |
| "src/db/log_reader.cc", |
| "src/db/log_reader.h", |
| "src/db/log_writer.cc", |
| "src/db/log_writer.h", |
| "src/db/memtable.cc", |
| "src/db/memtable.h", |
| "src/db/repair.cc", |
| "src/db/skiplist.h", |
| "src/db/snapshot.h", |
| "src/db/table_cache.cc", |
| "src/db/table_cache.h", |
| "src/db/version_edit.cc", |
| "src/db/version_edit.h", |
| "src/db/version_set.cc", |
| "src/db/version_set.h", |
| "src/db/write_batch.cc", |
| "src/db/write_batch_internal.h", |
| "src/helpers/memenv/memenv.cc", |
| "src/helpers/memenv/memenv.h", |
| "src/include/leveldb/cache.h", |
| "src/include/leveldb/comparator.h", |
| "src/include/leveldb/db.h", |
| "src/include/leveldb/dumpfile.h", |
| "src/include/leveldb/env.h", |
| "src/include/leveldb/filter_policy.h", |
| "src/include/leveldb/iterator.h", |
| "src/include/leveldb/options.h", |
| "src/include/leveldb/slice.h", |
| "src/include/leveldb/status.h", |
| "src/include/leveldb/table.h", |
| "src/include/leveldb/table_builder.h", |
| "src/include/leveldb/write_batch.h", |
| "src/port/port.h", |
| "src/table/block.cc", |
| "src/table/block.h", |
| "src/table/block_builder.cc", |
| "src/table/block_builder.h", |
| "src/table/filter_block.cc", |
| "src/table/filter_block.h", |
| "src/table/format.cc", |
| "src/table/format.h", |
| "src/table/iterator.cc", |
| "src/table/iterator_wrapper.h", |
| "src/table/merger.cc", |
| "src/table/merger.h", |
| "src/table/table.cc", |
| "src/table/table_builder.cc", |
| "src/table/two_level_iterator.cc", |
| "src/table/two_level_iterator.h", |
| "src/util/arena.cc", |
| "src/util/arena.h", |
| "src/util/bloom.cc", |
| "src/util/cache.cc", |
| "src/util/coding.cc", |
| "src/util/coding.h", |
| "src/util/comparator.cc", |
| "src/util/crc32c.cc", |
| "src/util/crc32c.h", |
| "src/util/env.cc", |
| "src/util/filter_policy.cc", |
| "src/util/hash.cc", |
| "src/util/hash.h", |
| "src/util/logging.cc", |
| "src/util/logging.h", |
| "src/util/mutexlock.h", |
| "src/util/options.cc", |
| "src/util/random.h", |
| "src/util/status.cc", |
| ] |
| |
| config("leveldb_component_config") { |
| if (is_component_build) { |
| # Must be exported to all dependencies so LEVELDB_EXPORT is correctly |
| # defined throughout the component build. |
| defines += [ "LEVELDB_SHARED_LIBRARY" ] |
| } |
| } |
| |
| component("leveldatabase") { |
| sources = leveldb_sources |
| |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| |
| public_configs = [ |
| ":leveldb_config", |
| ":leveldb_component_config", |
| ] |
| |
| deps = [ |
| "//base", |
| "//third_party/crc32c", |
| "//third_party/re2", |
| "//third_party/snappy", |
| ] |
| |
| if (is_win) { |
| # leveldb compiles with a limited set of warnings enabled, and is not |
| # likely to accept fixes for other warnings. See crbug.com/698013 |
| cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison. |
| |
| if (is_official_build) { |
| # Function recursive on all control paths, crbug.com/620018 |
| cflags += [ "/wd4717" ] |
| } |
| } |
| defines += [ "LEVELDB_COMPILE_LIBRARY" ] |
| } |
| |
| # leveldb does not mark symbols used by tests or its command-line utility as |
| # LEVELDB_EXPORT. So, these targets can only be linked statically against the |
| # leveldb source code. |
| static_library("leveldb_static") { |
| visibility = [ |
| ":leveldb_testutil", |
| ":leveldb_leveldbutil", |
| ] |
| sources = leveldb_sources |
| |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| |
| public_configs = [ ":leveldb_config" ] |
| |
| deps = [ |
| "//base", |
| "//third_party/crc32c", |
| "//third_party/re2", |
| "//third_party/snappy", |
| ] |
| |
| if (is_win) { |
| # leveldb compiles with a limited set of warnings enabled, and is not |
| # likely to accept fixes for other warnings. See crbug.com/698013 |
| cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison. |
| |
| if (is_official_build) { |
| # Function recursive on all control paths, crbug.com/620018 |
| cflags += [ "/wd4717" ] |
| } |
| } |
| } |
| |
| if (!is_ios && !is_android) { |
| test("env_chromium_unittests") { |
| sources = [ |
| "env_chromium_unittest.cc", |
| ] |
| deps = [ |
| ":leveldatabase", |
| "//base/test:test_support", |
| "//testing/gtest", |
| ] |
| } |
| |
| static_library("leveldb_testutil") { |
| testonly = true |
| visibility = [ ":*" ] |
| |
| sources = [ |
| "src/util/histogram.cc", |
| "src/util/histogram.h", |
| "src/util/testharness.cc", |
| "src/util/testharness.h", |
| "src/util/testutil.cc", |
| "src/util/testutil.h", |
| ] |
| |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| |
| public_deps = [ |
| ":leveldb_static", |
| ] |
| deps = [ |
| "//base", |
| ] |
| } |
| |
| test("leveldb_arena_test") { |
| sources = [ |
| "src/util/arena_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| test("leveldb_bloom_test") { |
| sources = [ |
| "src/util/bloom_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| test("leveldb_cache_test") { |
| sources = [ |
| "src/util/cache_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| |
| if (is_win) { |
| # util\cache_test.cc(167): warning C4018: '<': signed/unsigned mismatch |
| # util\cache_test.cc(171): warning C4018: '<': signed/unsigned mismatch |
| cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison. |
| } |
| } |
| |
| test("leveldb_corruption_test") { |
| sources = [ |
| "src/db/corruption_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| test("leveldb_crc32c_test") { |
| sources = [ |
| "src/util/crc32c_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| test("leveldb_db_bench") { |
| sources = [ |
| "src/benchmarks/db_bench.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| test("leveldb_db_test") { |
| sources = [ |
| "src/db/db_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| test("leveldb_dbformat_test") { |
| sources = [ |
| "src/db/dbformat_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| test("leveldb_env_test") { |
| sources = [ |
| "src/util/env_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| |
| if (is_win) { |
| cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison. |
| } |
| } |
| |
| test("leveldb_filename_test") { |
| sources = [ |
| "src/db/filename_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| test("leveldb_filter_block_test") { |
| sources = [ |
| "src/table/filter_block_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| executable("leveldb_leveldbutil") { |
| sources = [ |
| "src/db/leveldbutil.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_static", |
| ] |
| } |
| |
| test("leveldb_log_test") { |
| sources = [ |
| "src/db/log_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| |
| if (is_win) { |
| # db\log_test.cc(486) triggers two warnings: |
| # util\testharness.h(91): warning C4018: '<=': signed/unsigned mismatch |
| # util\testharness.h(89): warning C4018: '>=': signed/unsigned mismatch |
| cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison. |
| } |
| } |
| |
| test("leveldb_skiplist_test") { |
| sources = [ |
| "src/db/skiplist_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| test("leveldb_table_test") { |
| sources = [ |
| "src/table/table_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| test("leveldb_version_edit_test") { |
| sources = [ |
| "src/db/version_edit_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| test("leveldb_write_batch_test") { |
| sources = [ |
| "src/db/write_batch_test.cc", |
| ] |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| deps = [ |
| ":leveldb_testutil", |
| ] |
| } |
| |
| group("leveldb_test_targets") { |
| testonly = true |
| deps = [ |
| ":env_chromium_unittests", |
| ":leveldb_arena_test", |
| ":leveldb_bloom_test", |
| ":leveldb_cache_test", |
| ":leveldb_corruption_test", |
| ":leveldb_crc32c_test", |
| ":leveldb_db_bench", |
| ":leveldb_db_test", |
| ":leveldb_dbformat_test", |
| ":leveldb_env_test", |
| ":leveldb_filename_test", |
| ":leveldb_filter_block_test", |
| ":leveldb_log_test", |
| ":leveldb_skiplist_test", |
| ":leveldb_table_test", |
| ":leveldb_version_edit_test", |
| ":leveldb_write_batch_test", |
| ] |
| } |
| } |
| |
| fuzzer_test("leveldb_put_get_delete_fuzzer") { |
| sources = [ |
| "leveldb_put_get_delete_fuzzer.cc", |
| ] |
| deps = [ |
| ":leveldatabase", |
| ":leveldb_testutil", |
| "//base/test:test_support", |
| ] |
| } |