blob: 540495a662ac22196aa361f5d96ba9f62c11b764 [file] [log] [blame]
# Copyright 2022 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
load("@rules_python//python:defs.bzl", "py_binary")
package(default_visibility = ["//visibility:public"])
py_library(
name = "pw_tokenizer",
srcs = [
"pw_tokenizer/__init__.py",
"pw_tokenizer/database.py",
"pw_tokenizer/decode.py",
"pw_tokenizer/detokenize.py",
"pw_tokenizer/elf_reader.py",
"pw_tokenizer/encode.py",
"pw_tokenizer/parse_message.py",
"pw_tokenizer/proto/__init__.py",
"pw_tokenizer/serial_detokenizer.py",
"pw_tokenizer/tokens.py",
],
deps = [
"//pw_cli/py:pw_cli",
],
)
py_binary(
name = "detokenize",
srcs = [
"pw_tokenizer/__main__.py",
],
main = "pw_tokenizer/__main__.py",
deps = [":pw_tokenizer"],
)
# This test attempts to directly access files in the source tree, which is
# incompatible with sandboxing.
# TODO(b/241307309): Fix this test.
filegroup(
name = "database_test",
srcs = ["database_test.py"],
# deps = [":pw_tokenizer"],
)
py_test(
name = "decode_test",
srcs = [
"decode_test.py",
"tokenized_string_decoding_test_data.py",
"varint_test_data.py",
],
deps = [":pw_tokenizer"],
)
# This test can't be built in bazel because it depends on detokenize_proto_test_pb2.
filegroup(
name = "detokenize_proto_test",
srcs = [
"detokenize_proto_test.py",
],
# deps = [
# ":pw_tokenizer",
# ":detokenize_proto_test_pb2",
# ],
)
proto_library(
name = "detokenize_proto_test_proto",
srcs = ["detokenize_proto_test.proto"],
deps = [
"//pw_tokenizer:tokenizer_proto",
],
)
# TODO(b/241456982): This target can't be built due to limitations of
# py_proto_library.
# py_proto_library(
# name = "detokenize_proto_test_pb2",
# srcs = ["detokenize_proto_test.proto"],
# deps = [
# "//pw_tokenizer:tokenizer_pb2",
# ],
#)
py_test(
name = "detokenize_test",
srcs = ["detokenize_test.py"],
data = [
"example_binary_with_tokenized_strings.elf",
],
deps = [
":pw_tokenizer",
"@rules_python//python/runfiles",
],
)
py_test(
name = "elf_reader_test",
srcs = ["elf_reader_test.py"],
data = [
"elf_reader_test_binary.elf",
],
deps = [
":pw_tokenizer",
"@rules_python//python/runfiles",
],
)
# Executable for generating a test ELF file for elf_reader_test.py. A host
# version of this binary is checked in for use in elf_reader_test.py.
# Commented out because it fails to compile with bazel, with the error
# ld.lld: error: symbol 'main' has no type. Instead use a filegroup to
# keep pw_presubmit happy.
# cc_binary(
# name = "elf_reader_test_binary",
# srcs = [
# "py/elf_reader_test_binary.c",
# ],
# linkopts = ["-Wl,--unresolved-symbols=ignore-all"], # main is not defined
# deps = [
# ":pw_tokenizer",
# "//pw_varint",
# ],
# )
filegroup(
name = "elf_reader_test_binary",
srcs = [
"elf_reader_test_binary.c",
],
)
py_test(
name = "encode_test",
srcs = [
"encode_test.py",
"varint_test_data.py",
],
deps = [":pw_tokenizer"],
)
py_test(
name = "tokens_test",
srcs = ["tokens_test.py"],
deps = [":pw_tokenizer"],
)