BUILD 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. # Licensed to the Apache Software Foundation (ASF) under one or more
  2. # contributor license agreements. See the NOTICE file distributed with
  3. # this work for additional information regarding copyright ownership.
  4. # The ASF licenses this file to You under the Apache License, Version 2.0
  5. # (the "License"); you may not use this file except in compliance with
  6. # the License. You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. licenses(["notice"]) # Apache v2
  16. exports_files(["LICENSE"])
  17. load(":bazel/brpc.bzl", "brpc_proto_library")
  18. config_setting(
  19. name = "with_glog",
  20. define_values = {"with_glog": "true"},
  21. visibility = ["//visibility:public"],
  22. )
  23. config_setting(
  24. name = "with_mesalink",
  25. define_values = {"with_mesalink": "true"},
  26. visibility = ["//visibility:public"],
  27. )
  28. config_setting(
  29. name = "with_thrift",
  30. define_values = {"with_thrift": "true"},
  31. visibility = ["//visibility:public"],
  32. )
  33. config_setting(
  34. name = "unittest",
  35. define_values = {"unittest": "true"},
  36. )
  37. config_setting(
  38. name = "darwin",
  39. values = {"cpu": "darwin"},
  40. visibility = ["//visibility:public"],
  41. )
  42. config_setting(
  43. name = "linux",
  44. values = {"cpu": "linux"},
  45. visibility = ["//visibility:public"],
  46. )
  47. COPTS = [
  48. "-DBTHREAD_USE_FAST_PTHREAD_MUTEX",
  49. "-D__const__=",
  50. "-D_GNU_SOURCE",
  51. "-DUSE_SYMBOLIZE",
  52. "-DNO_TCMALLOC",
  53. "-D__STDC_FORMAT_MACROS",
  54. "-D__STDC_LIMIT_MACROS",
  55. "-D__STDC_CONSTANT_MACROS",
  56. "-DGFLAGS_NS=google",
  57. ] + select({
  58. ":with_glog": ["-DBRPC_WITH_GLOG=1"],
  59. "//conditions:default": ["-DBRPC_WITH_GLOG=0"],
  60. }) + select({
  61. ":with_mesalink": ["-DUSE_MESALINK"],
  62. "//conditions:default": [""],
  63. }) + select({
  64. ":with_thrift": ["-DENABLE_THRIFT_FRAMED_PROTOCOL=1"],
  65. "//conditions:default": [""],
  66. })
  67. LINKOPTS = [
  68. "-lpthread",
  69. "-ldl",
  70. "-lz",
  71. # "-lssl",
  72. # "-lcrypto",
  73. ] + select({
  74. ":darwin": [
  75. "-framework CoreFoundation",
  76. "-framework CoreGraphics",
  77. "-framework CoreData",
  78. "-framework CoreText",
  79. "-framework Security",
  80. "-framework Foundation",
  81. "-Wl,-U,_MallocExtension_ReleaseFreeMemory",
  82. "-Wl,-U,_ProfilerStart",
  83. "-Wl,-U,_ProfilerStop",
  84. "-Wl,-U,_RegisterThriftProtocol",
  85. ],
  86. "//conditions:default": [
  87. "-lrt",
  88. ],
  89. }) + select({
  90. ":with_mesalink": [
  91. "-lmesalink",
  92. ],
  93. "//conditions:default": [],
  94. }) + select({
  95. ":with_thrift": [
  96. "-lthriftnb",
  97. "-levent",
  98. "-lthrift"],
  99. "//conditions:default": [],
  100. })
  101. genrule(
  102. name = "config_h",
  103. outs = [
  104. "src/butil/config.h",
  105. ],
  106. cmd = """cat << EOF >$@""" + """
  107. // This file is auto-generated.
  108. #ifndef BUTIL_CONFIG_H
  109. #define BUTIL_CONFIG_H
  110. #ifdef BRPC_WITH_GLOG
  111. #undef BRPC_WITH_GLOG
  112. #endif
  113. #define BRPC_WITH_GLOG """ + select({
  114. ":with_glog": "1",
  115. "//conditions:default": "0",
  116. }) +
  117. """
  118. #endif // BUTIL_CONFIG_H
  119. EOF
  120. """
  121. )
  122. BUTIL_SRCS = [
  123. "src/butil/third_party/dmg_fp/g_fmt.cc",
  124. "src/butil/third_party/dmg_fp/dtoa_wrapper.cc",
  125. "src/butil/third_party/dynamic_annotations/dynamic_annotations.c",
  126. "src/butil/third_party/icu/icu_utf.cc",
  127. "src/butil/third_party/superfasthash/superfasthash.c",
  128. "src/butil/third_party/modp_b64/modp_b64.cc",
  129. "src/butil/third_party/symbolize/demangle.cc",
  130. "src/butil/third_party/symbolize/symbolize.cc",
  131. "src/butil/third_party/snappy/snappy-sinksource.cc",
  132. "src/butil/third_party/snappy/snappy-stubs-internal.cc",
  133. "src/butil/third_party/snappy/snappy.cc",
  134. "src/butil/third_party/murmurhash3/murmurhash3.cpp",
  135. "src/butil/arena.cpp",
  136. "src/butil/at_exit.cc",
  137. "src/butil/atomicops_internals_x86_gcc.cc",
  138. "src/butil/base64.cc",
  139. "src/butil/big_endian.cc",
  140. "src/butil/cpu.cc",
  141. "src/butil/debug/alias.cc",
  142. "src/butil/debug/asan_invalid_access.cc",
  143. "src/butil/debug/crash_logging.cc",
  144. "src/butil/debug/debugger.cc",
  145. "src/butil/debug/debugger_posix.cc",
  146. "src/butil/debug/dump_without_crashing.cc",
  147. "src/butil/debug/proc_maps_linux.cc",
  148. "src/butil/debug/stack_trace.cc",
  149. "src/butil/debug/stack_trace_posix.cc",
  150. "src/butil/environment.cc",
  151. "src/butil/files/file.cc",
  152. "src/butil/files/file_posix.cc",
  153. "src/butil/files/file_enumerator.cc",
  154. "src/butil/files/file_enumerator_posix.cc",
  155. "src/butil/files/file_path.cc",
  156. "src/butil/files/file_path_constants.cc",
  157. "src/butil/files/memory_mapped_file.cc",
  158. "src/butil/files/memory_mapped_file_posix.cc",
  159. "src/butil/files/scoped_file.cc",
  160. "src/butil/files/scoped_temp_dir.cc",
  161. "src/butil/file_util.cc",
  162. "src/butil/file_util_posix.cc",
  163. "src/butil/guid.cc",
  164. "src/butil/guid_posix.cc",
  165. "src/butil/hash.cc",
  166. "src/butil/lazy_instance.cc",
  167. "src/butil/location.cc",
  168. "src/butil/memory/aligned_memory.cc",
  169. "src/butil/memory/ref_counted.cc",
  170. "src/butil/memory/ref_counted_memory.cc",
  171. "src/butil/memory/singleton.cc",
  172. "src/butil/memory/weak_ptr.cc",
  173. "src/butil/posix/file_descriptor_shuffle.cc",
  174. "src/butil/posix/global_descriptors.cc",
  175. "src/butil/process_util.cc",
  176. "src/butil/rand_util.cc",
  177. "src/butil/rand_util_posix.cc",
  178. "src/butil/fast_rand.cpp",
  179. "src/butil/safe_strerror_posix.cc",
  180. "src/butil/sha1_portable.cc",
  181. "src/butil/strings/latin1_string_conversions.cc",
  182. "src/butil/strings/nullable_string16.cc",
  183. "src/butil/strings/safe_sprintf.cc",
  184. "src/butil/strings/string16.cc",
  185. "src/butil/strings/string_number_conversions.cc",
  186. "src/butil/strings/string_split.cc",
  187. "src/butil/strings/string_piece.cc",
  188. "src/butil/strings/string_util.cc",
  189. "src/butil/strings/string_util_constants.cc",
  190. "src/butil/strings/stringprintf.cc",
  191. "src/butil/strings/utf_offset_string_conversions.cc",
  192. "src/butil/strings/utf_string_conversion_utils.cc",
  193. "src/butil/strings/utf_string_conversions.cc",
  194. "src/butil/synchronization/cancellation_flag.cc",
  195. "src/butil/synchronization/condition_variable_posix.cc",
  196. "src/butil/synchronization/waitable_event_posix.cc",
  197. "src/butil/threading/non_thread_safe_impl.cc",
  198. "src/butil/threading/platform_thread_posix.cc",
  199. "src/butil/threading/simple_thread.cc",
  200. "src/butil/threading/thread_checker_impl.cc",
  201. "src/butil/threading/thread_collision_warner.cc",
  202. "src/butil/threading/thread_id_name_manager.cc",
  203. "src/butil/threading/thread_local_posix.cc",
  204. "src/butil/threading/thread_local_storage.cc",
  205. "src/butil/threading/thread_local_storage_posix.cc",
  206. "src/butil/threading/thread_restrictions.cc",
  207. "src/butil/threading/watchdog.cc",
  208. "src/butil/time/clock.cc",
  209. "src/butil/time/default_clock.cc",
  210. "src/butil/time/default_tick_clock.cc",
  211. "src/butil/time/tick_clock.cc",
  212. "src/butil/time/time.cc",
  213. "src/butil/time/time_posix.cc",
  214. "src/butil/version.cc",
  215. "src/butil/logging.cc",
  216. "src/butil/class_name.cpp",
  217. "src/butil/errno.cpp",
  218. "src/butil/find_cstr.cpp",
  219. "src/butil/status.cpp",
  220. "src/butil/string_printf.cpp",
  221. "src/butil/thread_local.cpp",
  222. "src/butil/unix_socket.cpp",
  223. "src/butil/endpoint.cpp",
  224. "src/butil/fd_utility.cpp",
  225. "src/butil/files/temp_file.cpp",
  226. "src/butil/files/file_watcher.cpp",
  227. "src/butil/time.cpp",
  228. "src/butil/zero_copy_stream_as_streambuf.cpp",
  229. "src/butil/crc32c.cc",
  230. "src/butil/containers/case_ignored_flat_map.cpp",
  231. "src/butil/iobuf.cpp",
  232. "src/butil/binary_printer.cpp",
  233. "src/butil/recordio.cc",
  234. "src/butil/popen.cpp",
  235. ] + select({
  236. ":darwin": [
  237. "src/butil/time/time_mac.cc",
  238. "src/butil/mac/scoped_mach_port.cc",
  239. ],
  240. "//conditions:default": [
  241. "src/butil/file_util_linux.cc",
  242. "src/butil/threading/platform_thread_linux.cc",
  243. "src/butil/strings/sys_string_conversions_posix.cc",
  244. ],
  245. })
  246. objc_library(
  247. name = "macos_lib",
  248. hdrs = [":config_h",
  249. "src/butil/atomicops.h",
  250. "src/butil/atomicops_internals_atomicword_compat.h",
  251. "src/butil/atomicops_internals_mac.h",
  252. "src/butil/base_export.h",
  253. "src/butil/basictypes.h",
  254. "src/butil/build_config.h",
  255. "src/butil/compat.h",
  256. "src/butil/compiler_specific.h",
  257. "src/butil/containers/hash_tables.h",
  258. "src/butil/debug/debugger.h",
  259. "src/butil/debug/leak_annotations.h",
  260. "src/butil/file_util.h",
  261. "src/butil/file_descriptor_posix.h",
  262. "src/butil/files/file_path.h",
  263. "src/butil/files/file.h",
  264. "src/butil/files/scoped_file.h",
  265. "src/butil/lazy_instance.h",
  266. "src/butil/logging.h",
  267. "src/butil/mac/bundle_locations.h",
  268. "src/butil/mac/foundation_util.h",
  269. "src/butil/mac/scoped_cftyperef.h",
  270. "src/butil/mac/scoped_typeref.h",
  271. "src/butil/macros.h",
  272. "src/butil/memory/aligned_memory.h",
  273. "src/butil/memory/scoped_policy.h",
  274. "src/butil/memory/scoped_ptr.h",
  275. "src/butil/move.h",
  276. "src/butil/port.h",
  277. "src/butil/posix/eintr_wrapper.h",
  278. "src/butil/scoped_generic.h",
  279. "src/butil/strings/string16.h",
  280. "src/butil/strings/string_piece.h",
  281. "src/butil/strings/string_util.h",
  282. "src/butil/strings/string_util_posix.h",
  283. "src/butil/strings/sys_string_conversions.h",
  284. "src/butil/synchronization/lock.h",
  285. "src/butil/time/time.h",
  286. "src/butil/time.h",
  287. "src/butil/third_party/dynamic_annotations/dynamic_annotations.h",
  288. "src/butil/threading/platform_thread.h",
  289. "src/butil/threading/thread_restrictions.h",
  290. "src/butil/threading/thread_id_name_manager.h",
  291. "src/butil/type_traits.h",
  292. "src/butil/third_party/murmurhash3/murmurhash3.h",
  293. ],
  294. non_arc_srcs = [
  295. "src/butil/mac/bundle_locations.mm",
  296. "src/butil/mac/foundation_util.mm",
  297. "src/butil/file_util_mac.mm",
  298. "src/butil/threading/platform_thread_mac.mm",
  299. "src/butil/strings/sys_string_conversions_mac.mm",
  300. ],
  301. deps = [
  302. "@com_github_gflags_gflags//:gflags",
  303. ] + select({
  304. ":with_glog": ["@com_github_google_glog//:glog"],
  305. "//conditions:default": [],
  306. }),
  307. includes = ["src/"],
  308. enable_modules = True,
  309. tags = ["manual"],
  310. )
  311. cc_library(
  312. name = "butil",
  313. srcs = BUTIL_SRCS,
  314. hdrs = glob([
  315. "src/butil/*.h",
  316. "src/butil/*.hpp",
  317. "src/butil/**/*.h",
  318. "src/butil/**/*.hpp",
  319. "src/butil/**/**/*.h",
  320. "src/butil/**/**/*.hpp", "src/butil/**/**/**/*.h",
  321. "src/butil/**/**/**/*.hpp",
  322. "src/butil/third_party/dmg_fp/dtoa.cc",
  323. ]) + [":config_h"],
  324. deps = [
  325. "@com_google_protobuf//:protobuf",
  326. "@com_github_gflags_gflags//:gflags",
  327. ] + select({
  328. ":with_glog": ["@com_github_google_glog//:glog"],
  329. "//conditions:default": [],
  330. }) + select({
  331. ":darwin": [":macos_lib"],
  332. "//conditions:default": [],
  333. }) + select({
  334. ":darwin": ["//external:ssl_macos"],
  335. "//conditions:default": ["//external:ssl"],
  336. }),
  337. includes = [
  338. "src/",
  339. ],
  340. copts = COPTS + select({
  341. ":unittest": [
  342. "-DBVAR_NOT_LINK_DEFAULT_VARIABLES",
  343. "-DUNIT_TEST",
  344. ],
  345. "//conditions:default": [],
  346. }),
  347. linkopts = LINKOPTS,
  348. visibility = ["//visibility:public"],
  349. )
  350. cc_library(
  351. name = "bvar",
  352. srcs = glob([
  353. "src/bvar/*.cpp",
  354. "src/bvar/detail/*.cpp",
  355. ],
  356. exclude = [
  357. "src/bvar/default_variables.cpp",
  358. ]) + select({
  359. ":unittest": [],
  360. "//conditions:default": ["src/bvar/default_variables.cpp"],
  361. }),
  362. hdrs = glob([
  363. "src/bvar/*.h",
  364. "src/bvar/utils/*.h",
  365. "src/bvar/detail/*.h",
  366. ]),
  367. includes = [
  368. "src/",
  369. ],
  370. deps = [
  371. ":butil",
  372. ],
  373. copts = COPTS + select({
  374. ":unittest": [
  375. "-DBVAR_NOT_LINK_DEFAULT_VARIABLES",
  376. "-DUNIT_TEST",
  377. ],
  378. "//conditions:default": [],
  379. }),
  380. linkopts = LINKOPTS,
  381. visibility = ["//visibility:public"],
  382. )
  383. cc_library(
  384. name = "bthread",
  385. srcs = glob([
  386. "src/bthread/*.cpp",
  387. ]),
  388. hdrs = glob([
  389. "src/bthread/*.h",
  390. "src/bthread/*.list",
  391. ]),
  392. includes = [
  393. "src/"
  394. ],
  395. deps = [
  396. ":butil",
  397. ":bvar",
  398. ],
  399. copts = COPTS,
  400. linkopts = LINKOPTS,
  401. visibility = ["//visibility:public"],
  402. )
  403. cc_library(
  404. name = "json2pb",
  405. srcs = glob([
  406. "src/json2pb/*.cpp",
  407. ]),
  408. hdrs = glob([
  409. "src/json2pb/*.h",
  410. ]),
  411. includes = [
  412. "src/",
  413. ],
  414. deps = [
  415. ":butil",
  416. ],
  417. copts = COPTS,
  418. linkopts = LINKOPTS,
  419. visibility = ["//visibility:public"],
  420. )
  421. cc_library(
  422. name = "mcpack2pb",
  423. srcs = [
  424. "src/mcpack2pb/field_type.cpp",
  425. "src/mcpack2pb/mcpack2pb.cpp",
  426. "src/mcpack2pb/parser.cpp",
  427. "src/mcpack2pb/serializer.cpp",
  428. ],
  429. hdrs = glob([
  430. "src/mcpack2pb/*.h",
  431. ]),
  432. includes = [
  433. "src/",
  434. ],
  435. deps = [
  436. ":butil",
  437. ":cc_brpc_idl_options_proto",
  438. "@com_google_protobuf//:protoc_lib",
  439. ],
  440. copts = COPTS,
  441. linkopts = LINKOPTS,
  442. visibility = ["//visibility:public"],
  443. )
  444. brpc_proto_library(
  445. name = "cc_brpc_idl_options_proto",
  446. srcs = [
  447. "src/idl_options.proto",
  448. ],
  449. deps = [
  450. "@com_google_protobuf//:cc_wkt_protos"
  451. ],
  452. visibility = ["//visibility:public"],
  453. )
  454. brpc_proto_library(
  455. name = "cc_brpc_internal_proto",
  456. srcs = glob([
  457. "src/brpc/*.proto",
  458. "src/brpc/policy/*.proto",
  459. ]),
  460. include = "src/",
  461. deps = [
  462. ":cc_brpc_idl_options_proto",
  463. "@com_google_protobuf//:cc_wkt_protos"
  464. ],
  465. visibility = ["//visibility:public"],
  466. )
  467. cc_library(
  468. name = "brpc",
  469. srcs = glob([
  470. "src/brpc/*.cpp",
  471. "src/brpc/**/*.cpp",
  472. ],
  473. exclude = [
  474. "src/brpc/thrift_service.cpp",
  475. "src/brpc/thrift_message.cpp",
  476. "src/brpc/policy/thrift_protocol.cpp",
  477. ]) + select({
  478. ":with_thrift" : glob([
  479. "src/brpc/thrift*.cpp",
  480. "src/brpc/**/thrift*.cpp"]),
  481. "//conditions:default" : [],
  482. }),
  483. hdrs = glob([
  484. "src/brpc/*.h",
  485. "src/brpc/**/*.h"
  486. ]),
  487. includes = [
  488. "src/",
  489. ],
  490. deps = [
  491. ":butil",
  492. ":bthread",
  493. ":bvar",
  494. ":json2pb",
  495. ":mcpack2pb",
  496. ":cc_brpc_internal_proto",
  497. "@com_github_google_leveldb//:leveldb",
  498. ],
  499. copts = COPTS,
  500. linkopts = LINKOPTS,
  501. visibility = ["//visibility:public"],
  502. )
  503. cc_binary(
  504. name = "protoc-gen-mcpack",
  505. srcs = [
  506. "src/mcpack2pb/generator.cpp",
  507. ],
  508. deps = [
  509. ":cc_brpc_idl_options_proto",
  510. ":brpc",
  511. ],
  512. copts = COPTS,
  513. linkopts = LINKOPTS,
  514. visibility = ["//visibility:public"],
  515. )