forked from nanopb/nanopb
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathBUILD.bazel
124 lines (109 loc) · 2.96 KB
/
BUILD.bazel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
# Note: if you are still using WORKSPACE, you will need to patch this file to use the following instead
# load("@python_3_11//:defs.bzl", "py_binary")
load("@python_versions//3.11:defs.bzl", "py_binary")
load("@rules_proto//proto:defs.bzl", "proto_library")
load("@rules_proto_grpc//:defs.bzl", "proto_plugin")
load("@rules_python//python:proto.bzl", "py_proto_library")
load("@rules_python//python/pip_install:requirements.bzl", "compile_pip_requirements")
load("//extra/bazel:nanopb_cc_proto_library.bzl", "cc_nanopb_proto_library")
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
exports_files(["LICENSE.txt"])
cc_library(
name = "nanopb",
srcs = [
"pb_common.c",
"pb_decode.c",
"pb_encode.c",
],
hdrs = [
"pb.h",
"pb_common.h",
"pb_decode.h",
"pb_encode.h",
],
visibility = ["//visibility:public"],
)
copy_file(
name = "protoc-gen-nanopb.py",
src = "generator/protoc-gen-nanopb",
out = "generator/protoc-gen-nanopb.py",
allow_symlink = True,
)
py_binary(
name = "protoc-gen-nanopb",
srcs = glob([
"generator/**/*.py",
]) + [
":protoc-gen-nanopb.py",
],
data = glob([
"generator/**/*.proto",
]),
env = {
"NANOPB_PB2_NO_REBUILD": "1",
},
imports = [
"generator",
],
deps = [
":nanopb_py_proto",
],
)
proto_plugin(
name = "nanopb_plugin",
env = {
"NANOPB_PB2_NO_REBUILD": "1",
},
options = [
"--library-include-format=quote",
],
outputs = [
"{protopath}.pb.h",
"{protopath}.pb.c",
],
separate_options_flag = True,
tool = ":protoc-gen-nanopb",
use_built_in_shell_environment = False,
visibility = ["//visibility:public"],
)
proto_library(
name = "nanopb_proto",
srcs = [
"generator/proto/nanopb.proto",
],
strip_import_prefix = "generator/proto/",
deps = ["@protobuf//:descriptor_proto"],
)
py_proto_library(
name = "nanopb_py_proto",
deps = [":nanopb_proto"],
)
cc_nanopb_proto_library(
name = "test_compilation",
protos = ["@protobuf//:descriptor_proto"],
visibility = ["//visibility:private"],
)
proto_library(
name = "all_types_proto",
srcs = ["tests/alltypes/alltypes.proto"],
)
cc_nanopb_proto_library(
name = "all_types_nanopb",
nanopb_options_files = ["tests/alltypes/alltypes.options"],
protos = [":all_types_proto"],
visibility = ["//visibility:private"],
)
cc_test(
name = "bazel_options_support",
srcs = ["tests/bazel_options_support/bazel_options_support.cc"],
deps = [":all_types_nanopb"],
)
# Run `bazel run //:requirements.update` if you want to update the requirements.
compile_pip_requirements(
name = "requirements",
extra_args = ["--allow-unsafe"],
requirements_in = "extra/requirements.txt",
requirements_txt = "extra/requirements_lock.txt",
)