Avi Drissman | 505076bc | 2022-10-06 21:15:30 | [diff] [blame] | 1 | # Copyright 2014 The Chromium Authors |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 2 | # Use of this source code is governed by a BSD-style license that can be |
| 3 | # found in the LICENSE file. |
| 4 | |
Max Moroz | e953205 | 2018-12-01 18:42:25 | [diff] [blame] | 5 | import("//testing/libfuzzer/fuzzer_test.gni") |
qsr | fb5251d1 | 2015-01-21 15:57:22 | [diff] [blame] | 6 | import("//testing/test.gni") |
| 7 | |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 8 | defines = [ "LEVELDB_PLATFORM_CHROMIUM=1" ] |
| 9 | |
Chris Mumford | 2a0c74d4 | 2017-10-14 00:49:20 | [diff] [blame] | 10 | config("leveldb_config") { |
[email protected] | 2ed04ae | 2013-10-07 20:17:16 | [diff] [blame] | 11 | include_dirs = [ |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 12 | ".", |
| 13 | "src", |
| 14 | "src/include", |
| 15 | ] |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 16 | } |
| 17 | |
Chris Mumford | 2a0c74d4 | 2017-10-14 00:49:20 | [diff] [blame] | 18 | leveldb_sources = [ |
| 19 | "env_chromium.cc", |
| 20 | "env_chromium.h", |
| 21 | "leveldb_chrome.cc", |
| 22 | "leveldb_chrome.h", |
| 23 | "port/port_chromium.cc", |
| 24 | "port/port_chromium.h", |
| 25 | "src/db/builder.cc", |
| 26 | "src/db/builder.h", |
| 27 | "src/db/db_impl.cc", |
| 28 | "src/db/db_impl.h", |
| 29 | "src/db/db_iter.cc", |
| 30 | "src/db/db_iter.h", |
| 31 | "src/db/dbformat.cc", |
| 32 | "src/db/dbformat.h", |
| 33 | "src/db/dumpfile.cc", |
| 34 | "src/db/filename.cc", |
| 35 | "src/db/filename.h", |
| 36 | "src/db/log_format.h", |
| 37 | "src/db/log_reader.cc", |
| 38 | "src/db/log_reader.h", |
| 39 | "src/db/log_writer.cc", |
| 40 | "src/db/log_writer.h", |
| 41 | "src/db/memtable.cc", |
| 42 | "src/db/memtable.h", |
| 43 | "src/db/repair.cc", |
| 44 | "src/db/skiplist.h", |
| 45 | "src/db/snapshot.h", |
| 46 | "src/db/table_cache.cc", |
| 47 | "src/db/table_cache.h", |
| 48 | "src/db/version_edit.cc", |
| 49 | "src/db/version_edit.h", |
| 50 | "src/db/version_set.cc", |
| 51 | "src/db/version_set.h", |
| 52 | "src/db/write_batch.cc", |
| 53 | "src/db/write_batch_internal.h", |
| 54 | "src/helpers/memenv/memenv.cc", |
| 55 | "src/helpers/memenv/memenv.h", |
| 56 | "src/include/leveldb/cache.h", |
| 57 | "src/include/leveldb/comparator.h", |
| 58 | "src/include/leveldb/db.h", |
| 59 | "src/include/leveldb/dumpfile.h", |
| 60 | "src/include/leveldb/env.h", |
| 61 | "src/include/leveldb/filter_policy.h", |
| 62 | "src/include/leveldb/iterator.h", |
| 63 | "src/include/leveldb/options.h", |
| 64 | "src/include/leveldb/slice.h", |
| 65 | "src/include/leveldb/status.h", |
| 66 | "src/include/leveldb/table.h", |
| 67 | "src/include/leveldb/table_builder.h", |
| 68 | "src/include/leveldb/write_batch.h", |
| 69 | "src/port/port.h", |
| 70 | "src/table/block.cc", |
| 71 | "src/table/block.h", |
| 72 | "src/table/block_builder.cc", |
| 73 | "src/table/block_builder.h", |
| 74 | "src/table/filter_block.cc", |
| 75 | "src/table/filter_block.h", |
| 76 | "src/table/format.cc", |
| 77 | "src/table/format.h", |
| 78 | "src/table/iterator.cc", |
| 79 | "src/table/iterator_wrapper.h", |
| 80 | "src/table/merger.cc", |
| 81 | "src/table/merger.h", |
| 82 | "src/table/table.cc", |
| 83 | "src/table/table_builder.cc", |
| 84 | "src/table/two_level_iterator.cc", |
| 85 | "src/table/two_level_iterator.h", |
| 86 | "src/util/arena.cc", |
| 87 | "src/util/arena.h", |
| 88 | "src/util/bloom.cc", |
| 89 | "src/util/cache.cc", |
| 90 | "src/util/coding.cc", |
| 91 | "src/util/coding.h", |
| 92 | "src/util/comparator.cc", |
| 93 | "src/util/crc32c.cc", |
| 94 | "src/util/crc32c.h", |
| 95 | "src/util/env.cc", |
| 96 | "src/util/filter_policy.cc", |
| 97 | "src/util/hash.cc", |
| 98 | "src/util/hash.h", |
| 99 | "src/util/logging.cc", |
| 100 | "src/util/logging.h", |
| 101 | "src/util/mutexlock.h", |
| 102 | "src/util/options.cc", |
| 103 | "src/util/random.h", |
| 104 | "src/util/status.cc", |
| 105 | ] |
| 106 | |
Victor Costan | 8365902 | 2018-09-11 00:28:30 | [diff] [blame] | 107 | config("leveldb_component_config") { |
| 108 | if (is_component_build) { |
| 109 | # Must be exported to all dependencies so LEVELDB_EXPORT is correctly |
| 110 | # defined throughout the component build. |
| 111 | defines += [ "LEVELDB_SHARED_LIBRARY" ] |
| 112 | } |
| 113 | } |
| 114 | |
Chris Mumford | 2a0c74d4 | 2017-10-14 00:49:20 | [diff] [blame] | 115 | component("leveldatabase") { |
| 116 | sources = leveldb_sources |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 117 | |
[email protected] | bfac272 | 2014-01-17 20:19:45 | [diff] [blame] | 118 | configs -= [ "//build/config/compiler:chromium_code" ] |
| 119 | configs += [ "//build/config/compiler:no_chromium_code" ] |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 120 | |
Victor Costan | 8365902 | 2018-09-11 00:28:30 | [diff] [blame] | 121 | public_configs = [ |
| 122 | ":leveldb_config", |
| 123 | ":leveldb_component_config", |
| 124 | ] |
Chris Mumford | 2a0c74d4 | 2017-10-14 00:49:20 | [diff] [blame] | 125 | |
| 126 | deps = [ |
| 127 | "//base", |
Yuta Hijikata | e4398bb | 2020-10-24 01:12:54 | [diff] [blame] | 128 | "//build:chromeos_buildflags", |
Ken Rockot | 25b44e5d | 2020-03-06 05:51:43 | [diff] [blame] | 129 | "//components/services/storage/public/cpp/filesystem", |
Chris Mumford | 2a0c74d4 | 2017-10-14 00:49:20 | [diff] [blame] | 130 | "//third_party/crc32c", |
| 131 | "//third_party/re2", |
| 132 | "//third_party/snappy", |
| 133 | ] |
| 134 | |
| 135 | if (is_win) { |
| 136 | # leveldb compiles with a limited set of warnings enabled, and is not |
| 137 | # likely to accept fixes for other warnings. See crbug.com/698013 |
| 138 | cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison. |
| 139 | |
| 140 | if (is_official_build) { |
| 141 | # Function recursive on all control paths, crbug.com/620018 |
| 142 | cflags += [ "/wd4717" ] |
| 143 | } |
| 144 | } |
| 145 | defines += [ "LEVELDB_COMPILE_LIBRARY" ] |
| 146 | } |
| 147 | |
Victor Costan | 8365902 | 2018-09-11 00:28:30 | [diff] [blame] | 148 | # leveldb does not mark symbols used by tests or its command-line utility as |
| 149 | # LEVELDB_EXPORT. So, these targets can only be linked statically against the |
| 150 | # leveldb source code. |
| 151 | static_library("leveldb_static") { |
| 152 | visibility = [ |
Victor Costan | 8365902 | 2018-09-11 00:28:30 | [diff] [blame] | 153 | ":leveldb_leveldbutil", |
Yuta Hijikata | e4398bb | 2020-10-24 01:12:54 | [diff] [blame] | 154 | ":leveldb_testutil", |
Victor Costan | 8365902 | 2018-09-11 00:28:30 | [diff] [blame] | 155 | ] |
Chris Mumford | 2a0c74d4 | 2017-10-14 00:49:20 | [diff] [blame] | 156 | sources = leveldb_sources |
| 157 | |
| 158 | configs -= [ "//build/config/compiler:chromium_code" ] |
| 159 | configs += [ "//build/config/compiler:no_chromium_code" ] |
| 160 | |
| 161 | public_configs = [ ":leveldb_config" ] |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 162 | |
| 163 | deps = [ |
| 164 | "//base", |
Yuta Hijikata | e4398bb | 2020-10-24 01:12:54 | [diff] [blame] | 165 | "//build:chromeos_buildflags", |
Ken Rockot | 25b44e5d | 2020-03-06 05:51:43 | [diff] [blame] | 166 | "//components/services/storage/public/cpp/filesystem", |
Victor Costan | 5286b0c | 2017-08-31 22:53:45 | [diff] [blame] | 167 | "//third_party/crc32c", |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 168 | "//third_party/re2", |
tfarina | c16ba994 | 2015-04-12 00:03:21 | [diff] [blame] | 169 | "//third_party/snappy", |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 170 | ] |
pkasting | 0d79de1 | 2015-07-28 19:21:10 | [diff] [blame] | 171 | |
| 172 | if (is_win) { |
pwnall | 022e76c | 2017-03-30 23:42:00 | [diff] [blame] | 173 | # leveldb compiles with a limited set of warnings enabled, and is not |
| 174 | # likely to accept fixes for other warnings. See crbug.com/698013 |
pkasting | 0d79de1 | 2015-07-28 19:21:10 | [diff] [blame] | 175 | cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison. |
brucedawson | d3a998e | 2016-06-15 19:45:59 | [diff] [blame] | 176 | |
| 177 | if (is_official_build) { |
| 178 | # Function recursive on all control paths, crbug.com/620018 |
| 179 | cflags += [ "/wd4717" ] |
| 180 | } |
pkasting | 0d79de1 | 2015-07-28 19:21:10 | [diff] [blame] | 181 | } |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 182 | } |
| 183 | |
Reilly Grant | d6c5653 | 2023-04-06 03:13:03 | [diff] [blame] | 184 | test("env_chromium_unittests") { |
| 185 | sources = [ "env_chromium_unittest.cc" ] |
| 186 | deps = [ |
| 187 | ":leveldatabase", |
| 188 | "//base/test:test_support", |
| 189 | "//testing/gtest", |
| 190 | ] |
| 191 | } |
| 192 | |
| 193 | static_library("leveldb_testutil") { |
| 194 | testonly = true |
| 195 | visibility = [ ":*" ] |
| 196 | |
| 197 | sources = [ |
| 198 | "src/util/testutil.cc", |
| 199 | "src/util/testutil.h", |
| 200 | ] |
| 201 | |
| 202 | configs -= [ "//build/config/compiler:chromium_code" ] |
| 203 | configs += [ "//build/config/compiler:no_chromium_code" ] |
| 204 | |
| 205 | public_deps = [ |
| 206 | ":leveldb_static", |
| 207 | "//third_party/googletest:gmock", |
| 208 | "//third_party/googletest:gtest", |
| 209 | ] |
| 210 | deps = [ "//base" ] |
| 211 | } |
| 212 | |
| 213 | test("leveldb_unittests") { |
| 214 | sources = [ |
| 215 | # The project's tests. |
| 216 | "src/db/autocompact_test.cc", |
| 217 | "src/db/corruption_test.cc", |
| 218 | "src/db/db_test.cc", |
| 219 | "src/db/dbformat_test.cc", |
| 220 | "src/db/filename_test.cc", |
| 221 | "src/db/log_test.cc", |
| 222 | "src/db/recovery_test.cc", |
| 223 | "src/db/skiplist_test.cc", |
| 224 | "src/db/version_edit_test.cc", |
| 225 | "src/db/version_set_test.cc", |
| 226 | "src/db/write_batch_test.cc", |
| 227 | "src/helpers/memenv/memenv_test.cc", |
| 228 | "src/issues/issue178_test.cc", |
| 229 | "src/issues/issue200_test.cc", |
| 230 | "src/issues/issue320_test.cc", |
| 231 | "src/table/filter_block_test.cc", |
| 232 | "src/table/table_test.cc", |
| 233 | "src/util/arena_test.cc", |
| 234 | "src/util/bloom_test.cc", |
| 235 | "src/util/cache_test.cc", |
| 236 | "src/util/coding_test.cc", |
| 237 | "src/util/crc32c_test.cc", |
| 238 | "src/util/env_test.cc", |
| 239 | "src/util/hash_test.cc", |
| 240 | "src/util/logging_test.cc", |
| 241 | "src/util/no_destructor_test.cc", |
| 242 | "src/util/status_test.cc", |
| 243 | |
| 244 | # Custom main() needed by Chromium's leveldb::Env. |
| 245 | "leveldb_unittest_main.cc", |
| 246 | ] |
| 247 | |
| 248 | configs -= [ "//build/config/compiler:chromium_code" ] |
| 249 | configs += [ "//build/config/compiler:no_chromium_code" ] |
| 250 | |
| 251 | if (is_win) { |
| 252 | # util\cache_test.cc(167): warning C4018: '<': signed/unsigned mismatch |
| 253 | # util\cache_test.cc(171): warning C4018: '<': signed/unsigned mismatch |
| 254 | cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison. |
| 255 | } |
| 256 | |
| 257 | deps = [ |
| 258 | ":leveldb_testutil", |
| 259 | "//base", |
| 260 | "//base/test:test_support", |
| 261 | ] |
| 262 | } |
| 263 | |
pasko | 3f7b65b | 2017-03-07 14:20:14 | [diff] [blame] | 264 | if (!is_ios && !is_android) { |
[email protected] | 928e36d | 2014-04-18 00:50:10 | [diff] [blame] | 265 | test("leveldb_db_bench") { |
Victor Costan | d4993a7 | 2022-01-04 17:53:19 | [diff] [blame] | 266 | sources = [ |
| 267 | "src/benchmarks/db_bench.cc", |
| 268 | "src/util/histogram.cc", |
| 269 | "src/util/histogram.h", |
| 270 | ] |
[email protected] | 928e36d | 2014-04-18 00:50:10 | [diff] [blame] | 271 | configs -= [ "//build/config/compiler:chromium_code" ] |
| 272 | configs += [ "//build/config/compiler:no_chromium_code" ] |
Nico Weber | 5cb7cec | 2020-01-14 01:33:17 | [diff] [blame] | 273 | deps = [ ":leveldb_testutil" ] |
[email protected] | 928e36d | 2014-04-18 00:50:10 | [diff] [blame] | 274 | } |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 275 | |
Peter Kasting | 21e5fcc | 2023-03-09 08:07:27 | [diff] [blame] | 276 | test("leveldb_db_bench_log") { |
| 277 | sources = [ "src/benchmarks/db_bench_log.cc" ] |
| 278 | configs -= [ "//build/config/compiler:chromium_code" ] |
| 279 | configs += [ "//build/config/compiler:no_chromium_code" ] |
| 280 | deps = [ |
| 281 | ":leveldb_testutil", |
| 282 | "//third_party/google_benchmark", |
| 283 | ] |
[email protected] | 928e36d | 2014-04-18 00:50:10 | [diff] [blame] | 284 | } |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 285 | |
pasko | 3f7b65b | 2017-03-07 14:20:14 | [diff] [blame] | 286 | executable("leveldb_leveldbutil") { |
Nico Weber | 5cb7cec | 2020-01-14 01:33:17 | [diff] [blame] | 287 | sources = [ "src/db/leveldbutil.cc" ] |
pasko | 3f7b65b | 2017-03-07 14:20:14 | [diff] [blame] | 288 | configs -= [ "//build/config/compiler:chromium_code" ] |
| 289 | configs += [ "//build/config/compiler:no_chromium_code" ] |
Nico Weber | 5cb7cec | 2020-01-14 01:33:17 | [diff] [blame] | 290 | deps = [ ":leveldb_static" ] |
pasko | 3f7b65b | 2017-03-07 14:20:14 | [diff] [blame] | 291 | } |
| 292 | |
pwnall | cfb346f1 | 2017-03-02 22:01:37 | [diff] [blame] | 293 | group("leveldb_test_targets") { |
| 294 | testonly = true |
pwnall | eb084fd1 | 2017-02-23 03:51:48 | [diff] [blame] | 295 | deps = [ |
pwnall | cfb346f1 | 2017-03-02 22:01:37 | [diff] [blame] | 296 | ":env_chromium_unittests", |
pwnall | cfb346f1 | 2017-03-02 22:01:37 | [diff] [blame] | 297 | ":leveldb_db_bench", |
Peter Kasting | 21e5fcc | 2023-03-09 08:07:27 | [diff] [blame] | 298 | ":leveldb_db_bench_log", |
Victor Costan | d4993a7 | 2022-01-04 17:53:19 | [diff] [blame] | 299 | ":leveldb_unittests", |
pwnall | eb084fd1 | 2017-02-23 03:51:48 | [diff] [blame] | 300 | ] |
| 301 | } |
[email protected] | b1e468f | 2013-09-10 22:58:02 | [diff] [blame] | 302 | } |
Max Moroz | e953205 | 2018-12-01 18:42:25 | [diff] [blame] | 303 | |
| 304 | fuzzer_test("leveldb_put_get_delete_fuzzer") { |
Nico Weber | 5cb7cec | 2020-01-14 01:33:17 | [diff] [blame] | 305 | sources = [ "leveldb_put_get_delete_fuzzer.cc" ] |
| 306 | deps = [ ":leveldatabase" ] |
Max Moroz | e953205 | 2018-12-01 18:42:25 | [diff] [blame] | 307 | } |