| load("@rules_proto//proto:defs.bzl", "proto_library") |
| load("@rules_python//python:defs.bzl", "py_binary") |
| load("@nanopb_pypi//:requirements.bzl", "requirement") |
| load("@rules_proto_grpc//:defs.bzl", "proto_plugin") |
| load("@bazel_skylib//rules:copy_file.bzl", "copy_file") |
| load("//extra/bazel:nanopb_cc_proto_library.bzl", "cc_nanopb_proto_library") |
| load("@rules_python//python/pip_install:requirements.bzl", "compile_pip_requirements") |
| |
| 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 = [ |
| "generator/nanopb_generator.py", |
| ":protoc-gen-nanopb.py", |
| ], |
| deps = [ |
| requirement("grpcio-tools"), |
| ], |
| ) |
| |
| proto_plugin( |
| name = "nanopb_plugin", |
| options = [ |
| '--library-include-format=quote', |
| ], |
| outputs = [ |
| "{protopath}.pb.h", |
| "{protopath}.pb.c", |
| ], |
| separate_options_flag = True, |
| tool = ":protoc-gen-nanopb", |
| visibility = ["//visibility:public"], |
| ) |
| |
| proto_library( |
| name = "descriptor", |
| srcs = [ |
| "generator/proto/google/protobuf/descriptor.proto", |
| ], |
| strip_import_prefix = "generator/proto/", |
| ) |
| |
| proto_library( |
| name = "nanopb_proto", |
| srcs = [ |
| "generator/proto/nanopb.proto", |
| ], |
| strip_import_prefix = "generator/proto/", |
| deps = [":descriptor"], |
| ) |
| |
| cc_nanopb_proto_library( |
| name = "test_compilation", |
| protos = [":descriptor"], |
| visibility = ["//visibility:private"], |
| ) |
| |
| # 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", |
| ) |