BUILD.gn 8.4 KB

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