# 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/test.gni")

defines = [ "LEVELDB_PLATFORM_CHROMIUM=1" ]

config("leveldatabase_config") {
  include_dirs = [
    ".",
    "src",
    "src/include",
  ]
}

source_set("leveldatabase_opts.sse42") {
  sources = [
    "src/port/port_posix_sse.cc",
  ]

  configs += [ ":leveldatabase_config" ]

  if (target_cpu == "x86" || target_cpu == "x64") {
    defines += [ "LEVELDB_PLATFORM_POSIX_SSE" ]
    if (!is_win || is_clang) {
      cflags = [ "-msse4.2" ]
    }
  }
}

static_library("leveldatabase") {
  sources = [
    "env_chromium.cc",
    "env_chromium.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",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]

  public_configs = [ ":leveldatabase_config" ]

  deps = [
    ":leveldatabase_opts.sse42",
    "//base",
    "//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") {
    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 = [
      ":leveldatabase",
    ]
    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/db/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",
    ]
  }

  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 = [
      ":leveldatabase",
    ]
  }

  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",
    ]
  }
}
