pgv_proto_library.bzl 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. load("@io_bazel_rules_go//proto:compiler.bzl", "go_proto_compiler")
  2. load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
  3. load("@rules_cc//cc:defs.bzl", "cc_library")
  4. load(":protobuf.bzl", "cc_proto_gen_validate", "java_proto_gen_validate")
  5. def pgv_go_proto_library(name, proto = None, deps = [], **kwargs):
  6. go_proto_compiler(
  7. name = "pgv_plugin_go",
  8. suffix = ".pb.validate.go",
  9. valid_archive = False,
  10. plugin = "//:protoc-gen-validate",
  11. options = ["lang=go"],
  12. )
  13. go_proto_library(
  14. name = name,
  15. proto = proto,
  16. deps = ["//validate:go_default_library"] + deps,
  17. compilers = ["@io_bazel_rules_go//proto:go_proto", "pgv_plugin_go"],
  18. visibility = ["//visibility:public"],
  19. **kwargs
  20. )
  21. def pgv_cc_proto_library(
  22. name,
  23. deps = [],
  24. cc_deps = [],
  25. copts = [],
  26. **kargs):
  27. """Bazel rule to create a C++ protobuf validation library from proto source files
  28. Args:
  29. name: the name of the pgv_cc_proto_library.
  30. deps: proto_library rules that contains the necessary .proto files.
  31. cc_deps: C++ dependencies of the protos being compiled. Likely cc_proto_library or pgv_cc_proto_library
  32. **kargs: other keyword arguments that are passed to cc_library.
  33. """
  34. native.cc_proto_library(
  35. name = name + "_cc_proto",
  36. deps = deps,
  37. )
  38. cc_proto_gen_validate(
  39. name = name + "_validate",
  40. deps = deps,
  41. )
  42. cc_library(
  43. name = name,
  44. hdrs = [":" + name + "_validate"],
  45. srcs = [":" + name + "_validate"],
  46. deps = cc_deps + [
  47. ":" + name + "_cc_proto",
  48. "@com_envoyproxy_protoc_gen_validate//validate:cc_validate",
  49. "@com_envoyproxy_protoc_gen_validate//validate:validate_cc",
  50. "@com_google_protobuf//:protobuf",
  51. "@com_googlesource_code_re2//:re2",
  52. ],
  53. copts = copts + select({
  54. "@com_envoyproxy_protoc_gen_validate//bazel:windows_x86_64": ["-DWIN32"],
  55. "//conditions:default": [],
  56. }),
  57. alwayslink = 1,
  58. **kargs
  59. )
  60. pgv_java_proto_library = java_proto_gen_validate