BUILD.bazel 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. # Bazel build
  2. # C/C++ documentation: https://docs.bazel.build/versions/master/be/c-cpp.html
  3. load("//bazel:ray.bzl", "COPTS")
  4. cc_binary(
  5. name = "libray_api.so",
  6. copts = COPTS,
  7. linkshared = 1,
  8. linkstatic = 1,
  9. visibility = ["//visibility:public"],
  10. deps = [
  11. ":ray_api",
  12. ],
  13. )
  14. cc_library(
  15. name = "ray_api",
  16. srcs = glob([
  17. "src/ray/api.cc",
  18. "src/ray/api/*.cc",
  19. "src/ray/api/*.h",
  20. "src/ray/app/*.cc",
  21. "src/ray/app/*.h",
  22. "src/ray/runtime/*.cc",
  23. "src/ray/runtime/*.h",
  24. "src/ray/runtime/**/*.cc",
  25. "src/ray/runtime/**/*.h",
  26. "src/ray/runtime/task/*.cc",
  27. "src/ray/runtime/task/*.h",
  28. "src/ray/util/*.cc",
  29. "src/ray/util/*.h",
  30. "src/ray/*.cc",
  31. "src/ray/*.h",
  32. ]),
  33. hdrs = glob([
  34. "include/ray/*.h",
  35. "include/ray/**/*.h",
  36. "include/ray/**/**/*.h",
  37. ]),
  38. copts = COPTS,
  39. linkopts = ["-ldl"],
  40. linkstatic = True,
  41. strip_include_prefix = "include",
  42. visibility = ["//visibility:public"],
  43. deps = [
  44. "//:core_worker_lib",
  45. "//:global_state_accessor_lib",
  46. "//:ray_common",
  47. "//:ray_util",
  48. "@boost//:callable_traits",
  49. "@boost//:dll",
  50. "@com_google_absl//absl/flags:flag",
  51. "@com_google_absl//absl/flags:parse",
  52. "@msgpack",
  53. ],
  54. alwayslink = True,
  55. )
  56. cc_binary(
  57. name = "default_worker",
  58. srcs = glob([
  59. "src/ray/worker/default_worker.cc",
  60. ]),
  61. copts = COPTS,
  62. linkstatic = True,
  63. deps = [
  64. "ray_api",
  65. ],
  66. )
  67. genrule(
  68. name = "ray_cpp_pkg",
  69. srcs = [
  70. "default_worker",
  71. "ray_api",
  72. "libray_api.so",
  73. ],
  74. outs = ["ray_cpp_pkg.out"],
  75. cmd = """
  76. WORK_DIR="$$(pwd)" &&
  77. PY_CPP_DIR="$$WORK_DIR/python/ray/cpp" &&
  78. rm -rf $$PY_CPP_DIR &&
  79. BOOST_DIR="$$PY_CPP_DIR/include/boost/" &&
  80. mkdir -p "$$BOOST_DIR" &&
  81. mkdir -p "$$PY_CPP_DIR/lib/" &&
  82. cp -f $(location default_worker) "$$PY_CPP_DIR/" &&
  83. cp -f -r $$WORK_DIR/external/msgpack/include/* "$$PY_CPP_DIR/include" &&
  84. cp -f -r "$$WORK_DIR/external/boost/boost/archive" "$$BOOST_DIR" &&
  85. cp -f -r "$$WORK_DIR/external/boost/boost/assert" "$$BOOST_DIR" &&
  86. cp -f -r "$$WORK_DIR/external/boost/boost/bind" "$$BOOST_DIR" &&
  87. cp -f -r "$$WORK_DIR/external/boost/boost/callable_traits" "$$BOOST_DIR" &&
  88. cp -f -r "$$WORK_DIR/external/boost/boost/concept" "$$BOOST_DIR" &&
  89. cp -f -r "$$WORK_DIR/external/boost/boost/config" "$$BOOST_DIR" &&
  90. cp -f -r "$$WORK_DIR/external/boost/boost/container" "$$BOOST_DIR" &&
  91. cp -f -r "$$WORK_DIR/external/boost/boost/container_hash" "$$BOOST_DIR" &&
  92. cp -f -r "$$WORK_DIR/external/boost/boost/core" "$$BOOST_DIR" &&
  93. cp -f -r "$$WORK_DIR/external/boost/boost/detail" "$$BOOST_DIR" &&
  94. cp -f -r "$$WORK_DIR/external/boost/boost/dll" "$$BOOST_DIR" &&
  95. cp -f -r "$$WORK_DIR/external/boost/boost/exception" "$$BOOST_DIR" &&
  96. cp -f -r "$$WORK_DIR/external/boost/boost/filesystem" "$$BOOST_DIR" &&
  97. cp -f -r "$$WORK_DIR/external/boost/boost/functional" "$$BOOST_DIR" &&
  98. cp -f -r "$$WORK_DIR/external/boost/boost/io" "$$BOOST_DIR" &&
  99. cp -f -r "$$WORK_DIR/external/boost/boost/iterator" "$$BOOST_DIR" &&
  100. cp -f -r "$$WORK_DIR/external/boost/boost/lexical_cast" "$$BOOST_DIR" &&
  101. cp -f -r "$$WORK_DIR/external/boost/boost/move" "$$BOOST_DIR" &&
  102. cp -f -r "$$WORK_DIR/external/boost/boost/mpl" "$$BOOST_DIR" &&
  103. cp -f -r "$$WORK_DIR/external/boost/boost/optional" "$$BOOST_DIR" &&
  104. cp -f -r "$$WORK_DIR/external/boost/boost/parameter" "$$BOOST_DIR" &&
  105. cp -f -r "$$WORK_DIR/external/boost/boost/preprocessor" "$$BOOST_DIR" &&
  106. cp -f -r "$$WORK_DIR/external/boost/boost/system" "$$BOOST_DIR" &&
  107. cp -f -r "$$WORK_DIR/external/boost/boost/type_traits" "$$BOOST_DIR" &&
  108. cp -f -r "$$WORK_DIR/external/boost/boost/utility" "$$BOOST_DIR" &&
  109. cp -f -r $$WORK_DIR/external/boost/boost/*.hpp "$$BOOST_DIR" &&
  110. cp -f $(locations libray_api.so) "$$PY_CPP_DIR/lib/" &&
  111. cp -f -r "$$WORK_DIR/cpp/include/ray" "$$PY_CPP_DIR/include" &&
  112. THIRDPARTY_DIR="$$WORK_DIR/cpp/example/thirdparty" &&
  113. rm -rf $$THIRDPARTY_DIR &&
  114. mkdir $$THIRDPARTY_DIR &&
  115. cp -f -r "$$PY_CPP_DIR/include" $$THIRDPARTY_DIR &&
  116. cp -f -r "$$PY_CPP_DIR/lib" $$THIRDPARTY_DIR &&
  117. cp -f -r "$$WORK_DIR/cpp/example" "$$PY_CPP_DIR" &&
  118. echo "$$WORK_DIR" > $@
  119. """,
  120. local = 1,
  121. visibility = ["//visibility:public"],
  122. )
  123. # test
  124. cc_test(
  125. name = "api_test",
  126. srcs = glob([
  127. "src/ray/test/*.cc",
  128. ]),
  129. copts = COPTS,
  130. linkstatic = False,
  131. tags = ["team:serverless"],
  132. deps = [
  133. "ray_api",
  134. "@boost//:filesystem",
  135. "@com_google_googletest//:gtest_main",
  136. ],
  137. )
  138. cc_test(
  139. name = "cluster_mode_test",
  140. srcs = glob([
  141. "src/ray/test/cluster/*.cc",
  142. "src/ray/test/cluster/*.h",
  143. ]),
  144. args = [
  145. "--ray_code_search_path=$(location plus.so):$(location counter.so):cpp/src/ray/test/cluster",
  146. "--ray_head_args '--include-dashboard false'",
  147. ],
  148. copts = COPTS,
  149. data = [
  150. "counter.so",
  151. "plus.so",
  152. "ray_cpp_pkg",
  153. "src/ray/test/cluster/test_cross_language_invocation.py",
  154. ],
  155. linkstatic = True,
  156. tags = ["team:serverless"],
  157. deps = [
  158. "ray_api",
  159. "@com_google_googletest//:gtest_main",
  160. ],
  161. )
  162. cc_binary(
  163. name = "plus.so",
  164. testonly = True,
  165. srcs = [
  166. "src/ray/test/cluster/plus.cc",
  167. "src/ray/test/cluster/plus.h",
  168. ],
  169. copts = COPTS,
  170. linkopts = ["-shared"],
  171. linkstatic = True,
  172. deps = [
  173. "ray_api",
  174. ],
  175. )
  176. cc_binary(
  177. name = "counter.so",
  178. testonly = True,
  179. srcs = [
  180. "src/ray/test/cluster/counter.cc",
  181. "src/ray/test/cluster/counter.h",
  182. ],
  183. copts = COPTS,
  184. linkopts = ["-shared"],
  185. linkstatic = True,
  186. deps = [
  187. "ray_api",
  188. ],
  189. )
  190. cc_test(
  191. name = "simple_kv_store",
  192. srcs = glob([
  193. "src/ray/test/examples/*.cc",
  194. ]),
  195. data = [
  196. "simple_kv_store.so",
  197. ],
  198. linkstatic = True,
  199. tags = ["team:serverless"],
  200. deps = [
  201. ":ray_api",
  202. ],
  203. )
  204. cc_binary(
  205. name = "simple_kv_store.so",
  206. testonly = True,
  207. srcs = glob([
  208. "src/ray/test/examples/*.cc",
  209. ]),
  210. linkopts = ["-shared"],
  211. linkstatic = True,
  212. deps = [
  213. ":ray_api",
  214. ],
  215. )