blob: 4bc4a0ced14d7424e9ce03eec63dde7d33bfcd0b [file] [log] [blame]
Avi Drissman505076bc2022-10-06 21:15:301# Copyright 2014 The Chromium Authors
[email protected]b1e468f2013-09-10 22:58:022# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
Max Moroze9532052018-12-01 18:42:255import("//testing/libfuzzer/fuzzer_test.gni")
qsrfb5251d12015-01-21 15:57:226import("//testing/test.gni")
7
[email protected]b1e468f2013-09-10 22:58:028defines = [ "LEVELDB_PLATFORM_CHROMIUM=1" ]
9
Chris Mumford2a0c74d42017-10-14 00:49:2010config("leveldb_config") {
[email protected]2ed04ae2013-10-07 20:17:1611 include_dirs = [
[email protected]b1e468f2013-09-10 22:58:0212 ".",
13 "src",
14 "src/include",
15 ]
[email protected]b1e468f2013-09-10 22:58:0216}
17
Chris Mumford2a0c74d42017-10-14 00:49:2018leveldb_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 Costan83659022018-09-11 00:28:30107config("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 Mumford2a0c74d42017-10-14 00:49:20115component("leveldatabase") {
116 sources = leveldb_sources
[email protected]b1e468f2013-09-10 22:58:02117
[email protected]bfac2722014-01-17 20:19:45118 configs -= [ "//build/config/compiler:chromium_code" ]
119 configs += [ "//build/config/compiler:no_chromium_code" ]
[email protected]b1e468f2013-09-10 22:58:02120
Victor Costan83659022018-09-11 00:28:30121 public_configs = [
122 ":leveldb_config",
123 ":leveldb_component_config",
124 ]
Chris Mumford2a0c74d42017-10-14 00:49:20125
126 deps = [
127 "//base",
Yuta Hijikatae4398bb2020-10-24 01:12:54128 "//build:chromeos_buildflags",
Ken Rockot25b44e5d2020-03-06 05:51:43129 "//components/services/storage/public/cpp/filesystem",
Chris Mumford2a0c74d42017-10-14 00:49:20130 "//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 Costan83659022018-09-11 00:28:30148# 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.
151static_library("leveldb_static") {
152 visibility = [
Victor Costan83659022018-09-11 00:28:30153 ":leveldb_leveldbutil",
Yuta Hijikatae4398bb2020-10-24 01:12:54154 ":leveldb_testutil",
Victor Costan83659022018-09-11 00:28:30155 ]
Chris Mumford2a0c74d42017-10-14 00:49:20156 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]b1e468f2013-09-10 22:58:02162
163 deps = [
164 "//base",
Yuta Hijikatae4398bb2020-10-24 01:12:54165 "//build:chromeos_buildflags",
Ken Rockot25b44e5d2020-03-06 05:51:43166 "//components/services/storage/public/cpp/filesystem",
Victor Costan5286b0c2017-08-31 22:53:45167 "//third_party/crc32c",
[email protected]b1e468f2013-09-10 22:58:02168 "//third_party/re2",
tfarinac16ba9942015-04-12 00:03:21169 "//third_party/snappy",
[email protected]b1e468f2013-09-10 22:58:02170 ]
pkasting0d79de12015-07-28 19:21:10171
172 if (is_win) {
pwnall022e76c2017-03-30 23:42:00173 # leveldb compiles with a limited set of warnings enabled, and is not
174 # likely to accept fixes for other warnings. See crbug.com/698013
pkasting0d79de12015-07-28 19:21:10175 cflags = [ "/wd4018" ] # Signed/unsigned mismatch in comparison.
brucedawsond3a998e2016-06-15 19:45:59176
177 if (is_official_build) {
178 # Function recursive on all control paths, crbug.com/620018
179 cflags += [ "/wd4717" ]
180 }
pkasting0d79de12015-07-28 19:21:10181 }
[email protected]b1e468f2013-09-10 22:58:02182}
183
Reilly Grantd6c56532023-04-06 03:13:03184test("env_chromium_unittests") {
185 sources = [ "env_chromium_unittest.cc" ]
186 deps = [
187 ":leveldatabase",
188 "//base/test:test_support",
189 "//testing/gtest",
190 ]
191}
192
193static_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
213test("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
pasko3f7b65b2017-03-07 14:20:14264if (!is_ios && !is_android) {
[email protected]928e36d2014-04-18 00:50:10265 test("leveldb_db_bench") {
Victor Costand4993a72022-01-04 17:53:19266 sources = [
267 "src/benchmarks/db_bench.cc",
268 "src/util/histogram.cc",
269 "src/util/histogram.h",
270 ]
[email protected]928e36d2014-04-18 00:50:10271 configs -= [ "//build/config/compiler:chromium_code" ]
272 configs += [ "//build/config/compiler:no_chromium_code" ]
Nico Weber5cb7cec2020-01-14 01:33:17273 deps = [ ":leveldb_testutil" ]
[email protected]928e36d2014-04-18 00:50:10274 }
[email protected]b1e468f2013-09-10 22:58:02275
Peter Kasting21e5fcc2023-03-09 08:07:27276 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]928e36d2014-04-18 00:50:10284 }
[email protected]b1e468f2013-09-10 22:58:02285
pasko3f7b65b2017-03-07 14:20:14286 executable("leveldb_leveldbutil") {
Nico Weber5cb7cec2020-01-14 01:33:17287 sources = [ "src/db/leveldbutil.cc" ]
pasko3f7b65b2017-03-07 14:20:14288 configs -= [ "//build/config/compiler:chromium_code" ]
289 configs += [ "//build/config/compiler:no_chromium_code" ]
Nico Weber5cb7cec2020-01-14 01:33:17290 deps = [ ":leveldb_static" ]
pasko3f7b65b2017-03-07 14:20:14291 }
292
pwnallcfb346f12017-03-02 22:01:37293 group("leveldb_test_targets") {
294 testonly = true
pwnalleb084fd12017-02-23 03:51:48295 deps = [
pwnallcfb346f12017-03-02 22:01:37296 ":env_chromium_unittests",
pwnallcfb346f12017-03-02 22:01:37297 ":leveldb_db_bench",
Peter Kasting21e5fcc2023-03-09 08:07:27298 ":leveldb_db_bench_log",
Victor Costand4993a72022-01-04 17:53:19299 ":leveldb_unittests",
pwnalleb084fd12017-02-23 03:51:48300 ]
301 }
[email protected]b1e468f2013-09-10 22:58:02302}
Max Moroze9532052018-12-01 18:42:25303
304fuzzer_test("leveldb_put_get_delete_fuzzer") {
Nico Weber5cb7cec2020-01-14 01:33:17305 sources = [ "leveldb_put_get_delete_fuzzer.cc" ]
306 deps = [ ":leveldatabase" ]
Max Moroze9532052018-12-01 18:42:25307}