BUILD 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  1. # Part of the Carbon Language project, under the Apache License v2.0 with LLVM
  2. # Exceptions. See /LICENSE for license information.
  3. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
  5. package(default_visibility = ["//visibility:public"])
  6. cc_library(
  7. name = "bazel_working_dir",
  8. hdrs = ["bazel_working_dir.h"],
  9. deps = [
  10. "@llvm-project//llvm:Support",
  11. ],
  12. )
  13. cc_library(
  14. name = "benchmark_main",
  15. srcs = ["benchmark_main.cpp"],
  16. deps = [
  17. ":init_llvm",
  18. "@abseil-cpp//absl/flags:parse",
  19. "@google_benchmark//:benchmark",
  20. "@llvm-project//llvm:Support",
  21. ],
  22. )
  23. cc_library(
  24. name = "command_line",
  25. srcs = ["command_line.cpp"],
  26. hdrs = ["command_line.h"],
  27. deps = [
  28. ":check",
  29. ":ostream",
  30. "@llvm-project//llvm:Support",
  31. ],
  32. )
  33. cc_test(
  34. name = "command_line_test",
  35. size = "small",
  36. srcs = ["command_line_test.cpp"],
  37. deps = [
  38. ":command_line",
  39. "//testing/base:gtest_main",
  40. "//testing/base:test_raw_ostream",
  41. "@googletest//:gtest",
  42. "@llvm-project//llvm:Support",
  43. ],
  44. )
  45. cc_library(
  46. name = "check",
  47. srcs = [
  48. "check_internal.cpp",
  49. "check_internal.h",
  50. ],
  51. hdrs = ["check.h"],
  52. deps = [
  53. ":ostream",
  54. "@llvm-project//llvm:Support",
  55. ],
  56. )
  57. cc_test(
  58. name = "check_test",
  59. size = "small",
  60. srcs = ["check_test.cpp"],
  61. deps = [
  62. ":check",
  63. "//testing/base:gtest_main",
  64. "@googletest//:gtest",
  65. ],
  66. )
  67. cc_library(
  68. name = "enum_base",
  69. hdrs = ["enum_base.h"],
  70. deps = [
  71. "//common:ostream",
  72. "@llvm-project//llvm:Support",
  73. ],
  74. )
  75. cc_library(
  76. name = "enum_base_test_def",
  77. testonly = 1,
  78. textual_hdrs = ["enum_base_test.def"],
  79. )
  80. cc_test(
  81. name = "enum_base_test",
  82. size = "small",
  83. srcs = ["enum_base_test.cpp"],
  84. deps = [
  85. ":enum_base",
  86. ":enum_base_test_def",
  87. "//testing/base:gtest_main",
  88. "//testing/base:test_raw_ostream",
  89. "@googletest//:gtest",
  90. ],
  91. )
  92. cc_library(
  93. name = "error",
  94. hdrs = ["error.h"],
  95. deps = [
  96. ":check",
  97. ":ostream",
  98. "@llvm-project//llvm:Support",
  99. ],
  100. )
  101. cc_test(
  102. name = "error_test",
  103. size = "small",
  104. srcs = ["error_test.cpp"],
  105. deps = [
  106. ":error",
  107. "//testing/base:gtest_main",
  108. "//testing/base:test_raw_ostream",
  109. "@googletest//:gtest",
  110. ],
  111. )
  112. cc_library(
  113. name = "exe_path",
  114. srcs = ["exe_path.cpp"],
  115. hdrs = ["exe_path.h"],
  116. deps = [
  117. "@llvm-project//llvm:Support",
  118. ],
  119. )
  120. cc_test(
  121. name = "exe_path_test",
  122. size = "small",
  123. srcs = ["exe_path_test.cpp"],
  124. deps = [
  125. ":exe_path",
  126. "//testing/base:gtest_main",
  127. "@googletest//:gtest",
  128. "@llvm-project//llvm:Support",
  129. ],
  130. )
  131. cc_library(
  132. name = "hashing",
  133. srcs = ["hashing.cpp"],
  134. hdrs = ["hashing.h"],
  135. deps = [
  136. ":check",
  137. ":ostream",
  138. "@llvm-project//llvm:Support",
  139. ],
  140. )
  141. cc_test(
  142. name = "hashing_test",
  143. srcs = ["hashing_test.cpp"],
  144. deps = [
  145. ":hashing",
  146. "//testing/base:gtest_main",
  147. "//testing/base:test_raw_ostream",
  148. "@googletest//:gtest",
  149. "@llvm-project//llvm:Support",
  150. ],
  151. )
  152. cc_binary(
  153. name = "hashing_benchmark",
  154. testonly = 1,
  155. srcs = ["hashing_benchmark.cpp"],
  156. deps = [
  157. ":benchmark_main",
  158. ":check",
  159. ":hashing",
  160. "@abseil-cpp//absl/hash",
  161. "@abseil-cpp//absl/random",
  162. "@google_benchmark//:benchmark",
  163. "@llvm-project//llvm:Support",
  164. ],
  165. )
  166. cc_library(
  167. name = "hashtable_key_context",
  168. hdrs = ["hashtable_key_context.h"],
  169. deps = [
  170. ":hashing",
  171. ],
  172. )
  173. cc_library(
  174. name = "indirect_value",
  175. hdrs = ["indirect_value.h"],
  176. )
  177. cc_test(
  178. name = "indirect_value_test",
  179. size = "small",
  180. srcs = ["indirect_value_test.cpp"],
  181. deps = [
  182. ":indirect_value",
  183. "//testing/base:gtest_main",
  184. "@googletest//:gtest",
  185. ],
  186. )
  187. cc_library(
  188. name = "init_llvm",
  189. srcs = ["init_llvm.cpp"],
  190. hdrs = ["init_llvm.h"],
  191. deps = [
  192. "@llvm-project//llvm:Support",
  193. ],
  194. )
  195. # Link against this to cause `:init_llvm` to pull in all LLVM targets.
  196. #
  197. # Be careful when depending on this: it pulls in several hundred megabytes of
  198. # LLVM binary size in -c fastbuild. This should only be depended on by a
  199. # `cc_binary` or `cc_test` target, never a `cc_library`.
  200. cc_library(
  201. name = "all_llvm_targets",
  202. srcs = ["all_llvm_targets.cpp"],
  203. deps = [
  204. ":init_llvm",
  205. "@llvm-project//llvm:AllTargetsAsmParsers",
  206. "@llvm-project//llvm:AllTargetsCodeGens",
  207. "@llvm-project//llvm:Support",
  208. ],
  209. alwayslink = 1,
  210. )
  211. cc_library(
  212. name = "map",
  213. hdrs = ["map.h"],
  214. deps = [
  215. ":check",
  216. ":hashtable_key_context",
  217. ":raw_hashtable",
  218. "@llvm-project//llvm:Support",
  219. ],
  220. )
  221. cc_test(
  222. name = "map_test",
  223. srcs = ["map_test.cpp"],
  224. deps = [
  225. ":map",
  226. ":raw_hashtable_test_helpers",
  227. "//testing/base:gtest_main",
  228. "//testing/base:test_raw_ostream",
  229. "@googletest//:gtest",
  230. ],
  231. )
  232. cc_binary(
  233. name = "map_benchmark",
  234. testonly = 1,
  235. srcs = ["map_benchmark.cpp"],
  236. deps = [
  237. ":map",
  238. ":raw_hashtable_benchmark_helpers",
  239. "@abseil-cpp//absl/container:flat_hash_map",
  240. "@abseil-cpp//absl/random",
  241. "@boost_unordered",
  242. "@google_benchmark//:benchmark_main",
  243. "@llvm-project//llvm:Support",
  244. ],
  245. )
  246. sh_test(
  247. name = "map_benchmark_test",
  248. # The benchmark allocates a large amount of memory.
  249. size = "enormous",
  250. # We configure the test to run quickly.
  251. timeout = "short",
  252. srcs = ["map_benchmark_test.sh"],
  253. data = [":map_benchmark"],
  254. )
  255. cc_library(
  256. name = "ostream",
  257. hdrs = ["ostream.h"],
  258. deps = [
  259. "@llvm-project//llvm:Support",
  260. ],
  261. )
  262. cc_library(
  263. name = "raw_hashtable",
  264. srcs = ["raw_hashtable.cpp"],
  265. hdrs = ["raw_hashtable.h"],
  266. deps = [
  267. ":check",
  268. ":hashing",
  269. ":hashtable_key_context",
  270. ":raw_hashtable_metadata_group",
  271. "@llvm-project//llvm:Support",
  272. ],
  273. )
  274. cc_library(
  275. name = "raw_hashtable_metadata_group",
  276. srcs = ["raw_hashtable_metadata_group.cpp"],
  277. hdrs = ["raw_hashtable_metadata_group.h"],
  278. deps = [
  279. ":check",
  280. "@llvm-project//llvm:Support",
  281. ],
  282. )
  283. cc_binary(
  284. name = "raw_hashtable_metadata_group_benchmark",
  285. testonly = 1,
  286. srcs = ["raw_hashtable_metadata_group_benchmark.cpp"],
  287. deps = [
  288. ":raw_hashtable_metadata_group",
  289. "@abseil-cpp//absl/random",
  290. "@google_benchmark//:benchmark_main",
  291. "@llvm-project//llvm:Support",
  292. ],
  293. )
  294. sh_test(
  295. name = "raw_hashtable_metadata_group_benchmark_test",
  296. srcs = ["raw_hashtable_metadata_group_benchmark_test.sh"],
  297. data = [":raw_hashtable_metadata_group_benchmark"],
  298. )
  299. cc_library(
  300. name = "raw_hashtable_benchmark_helpers",
  301. testonly = 1,
  302. srcs = ["raw_hashtable_benchmark_helpers.cpp"],
  303. hdrs = ["raw_hashtable_benchmark_helpers.h"],
  304. copts = [
  305. "-O2", # Always optimize to make testing benchmarks faster.
  306. ],
  307. deps = [
  308. ":check",
  309. ":hashing",
  310. ":raw_hashtable",
  311. ":set",
  312. "@abseil-cpp//absl/base:no_destructor",
  313. "@abseil-cpp//absl/hash",
  314. "@abseil-cpp//absl/random",
  315. "@google_benchmark//:benchmark",
  316. "@llvm-project//llvm:Support",
  317. ],
  318. )
  319. cc_library(
  320. name = "raw_hashtable_test_helpers",
  321. testonly = 1,
  322. hdrs = ["raw_hashtable_test_helpers.h"],
  323. deps = [
  324. ":check",
  325. ":hashing",
  326. ":hashtable_key_context",
  327. ":ostream",
  328. ],
  329. )
  330. cc_library(
  331. name = "set",
  332. hdrs = ["set.h"],
  333. deps = [
  334. ":check",
  335. ":hashtable_key_context",
  336. ":raw_hashtable",
  337. "@llvm-project//llvm:Support",
  338. ],
  339. )
  340. cc_test(
  341. name = "set_test",
  342. srcs = ["set_test.cpp"],
  343. deps = [
  344. ":raw_hashtable_test_helpers",
  345. ":set",
  346. "//testing/base:gtest_main",
  347. "//testing/base:test_raw_ostream",
  348. "@googletest//:gtest",
  349. ],
  350. )
  351. cc_binary(
  352. name = "set_benchmark",
  353. testonly = 1,
  354. srcs = ["set_benchmark.cpp"],
  355. deps = [
  356. ":raw_hashtable_benchmark_helpers",
  357. ":set",
  358. "@abseil-cpp//absl/container:flat_hash_set",
  359. "@google_benchmark//:benchmark_main",
  360. "@llvm-project//llvm:Support",
  361. ],
  362. )
  363. sh_test(
  364. name = "set_benchmark_test",
  365. # The benchmark allocates a large amount of memory.
  366. size = "enormous",
  367. # We configure the test to run quickly.
  368. timeout = "short",
  369. srcs = ["set_benchmark_test.sh"],
  370. data = [":set_benchmark"],
  371. )
  372. cc_library(
  373. name = "string_helpers",
  374. srcs = ["string_helpers.cpp"],
  375. hdrs = ["string_helpers.h"],
  376. deps = [
  377. ":check",
  378. ":error",
  379. "@llvm-project//llvm:Support",
  380. ],
  381. )
  382. cc_test(
  383. name = "string_helpers_test",
  384. size = "small",
  385. srcs = ["string_helpers_test.cpp"],
  386. deps = [
  387. ":string_helpers",
  388. "//testing/base:gtest_main",
  389. "@googletest//:gtest",
  390. "@llvm-project//llvm:Support",
  391. ],
  392. )
  393. cc_library(
  394. name = "struct_reflection",
  395. hdrs = ["struct_reflection.h"],
  396. )
  397. cc_test(
  398. name = "struct_reflection_test",
  399. size = "small",
  400. srcs = ["struct_reflection_test.cpp"],
  401. deps = [
  402. ":struct_reflection",
  403. "//testing/base:gtest_main",
  404. "@googletest//:gtest",
  405. ],
  406. )
  407. cc_library(
  408. name = "variant_helpers",
  409. hdrs = ["variant_helpers.h"],
  410. deps = [
  411. ":error",
  412. "@llvm-project//llvm:Support",
  413. ],
  414. )
  415. cc_library(
  416. name = "vlog",
  417. srcs = ["vlog_internal.h"],
  418. hdrs = ["vlog.h"],
  419. deps = [
  420. ":ostream",
  421. "@llvm-project//llvm:Support",
  422. ],
  423. )
  424. cc_test(
  425. name = "vlog_test",
  426. size = "small",
  427. srcs = ["vlog_test.cpp"],
  428. deps = [
  429. ":vlog",
  430. "//testing/base:gtest_main",
  431. "//testing/base:test_raw_ostream",
  432. "@googletest//:gtest",
  433. ],
  434. )