xref: /aosp_15_r20/external/pigweed/pw_tokenizer/py/BUILD.bazel (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2022 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker#
3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker# the License at
6*61c4878aSAndroid Build Coastguard Worker#
7*61c4878aSAndroid Build Coastguard Worker#     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker#
9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker# the License.
14*61c4878aSAndroid Build Coastguard Worker
15*61c4878aSAndroid Build Coastguard Workerload("@rules_python//python:defs.bzl", "py_library")
16*61c4878aSAndroid Build Coastguard Workerload("@rules_python//python:proto.bzl", "py_proto_library")
17*61c4878aSAndroid Build Coastguard Workerload("//pw_build:python.bzl", "pw_py_binary", "pw_py_test")
18*61c4878aSAndroid Build Coastguard Worker
19*61c4878aSAndroid Build Coastguard Workerpackage(default_visibility = ["//visibility:public"])
20*61c4878aSAndroid Build Coastguard Worker
21*61c4878aSAndroid Build Coastguard Worker# TODO(jrreinhart): Move this file to pw_elf.
22*61c4878aSAndroid Build Coastguard Workerexports_files(
23*61c4878aSAndroid Build Coastguard Worker    ["elf_reader_test_binary.elf"],
24*61c4878aSAndroid Build Coastguard Worker    visibility = ["//pw_elf:__pkg__"],
25*61c4878aSAndroid Build Coastguard Worker)
26*61c4878aSAndroid Build Coastguard Worker
27*61c4878aSAndroid Build Coastguard Workerpy_library(
28*61c4878aSAndroid Build Coastguard Worker    name = "pw_tokenizer",
29*61c4878aSAndroid Build Coastguard Worker    srcs = [
30*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/__init__.py",
31*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/database.py",
32*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/decode.py",
33*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/detokenize.py",
34*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/elf_reader.py",
35*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/encode.py",
36*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/parse_message.py",
37*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/proto/__init__.py",
38*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/serial_detokenizer.py",
39*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/tokens.py",
40*61c4878aSAndroid Build Coastguard Worker    ],
41*61c4878aSAndroid Build Coastguard Worker    imports = ["."],
42*61c4878aSAndroid Build Coastguard Worker    deps = [
43*61c4878aSAndroid Build Coastguard Worker        "//pw_cli/py:pw_cli",
44*61c4878aSAndroid Build Coastguard Worker    ],
45*61c4878aSAndroid Build Coastguard Worker)
46*61c4878aSAndroid Build Coastguard Worker
47*61c4878aSAndroid Build Coastguard Workerpw_py_binary(
48*61c4878aSAndroid Build Coastguard Worker    name = "database",
49*61c4878aSAndroid Build Coastguard Worker    srcs = [
50*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/database.py",
51*61c4878aSAndroid Build Coastguard Worker    ],
52*61c4878aSAndroid Build Coastguard Worker    deps = [
53*61c4878aSAndroid Build Coastguard Worker        ":pw_tokenizer",
54*61c4878aSAndroid Build Coastguard Worker    ],
55*61c4878aSAndroid Build Coastguard Worker)
56*61c4878aSAndroid Build Coastguard Worker
57*61c4878aSAndroid Build Coastguard Workerpw_py_binary(
58*61c4878aSAndroid Build Coastguard Worker    name = "detokenize",
59*61c4878aSAndroid Build Coastguard Worker    srcs = [
60*61c4878aSAndroid Build Coastguard Worker        "pw_tokenizer/__main__.py",
61*61c4878aSAndroid Build Coastguard Worker    ],
62*61c4878aSAndroid Build Coastguard Worker    main = "pw_tokenizer/__main__.py",
63*61c4878aSAndroid Build Coastguard Worker    deps = [":pw_tokenizer"],
64*61c4878aSAndroid Build Coastguard Worker)
65*61c4878aSAndroid Build Coastguard Worker
66*61c4878aSAndroid Build Coastguard Worker# This test attempts to directly access files in the source tree, which is
67*61c4878aSAndroid Build Coastguard Worker# incompatible with sandboxing.
68*61c4878aSAndroid Build Coastguard Worker# TODO: b/241307309 - Fix this test.
69*61c4878aSAndroid Build Coastguard Workerfilegroup(
70*61c4878aSAndroid Build Coastguard Worker    name = "database_test",
71*61c4878aSAndroid Build Coastguard Worker    srcs = ["database_test.py"],
72*61c4878aSAndroid Build Coastguard Worker    # deps = [":pw_tokenizer"],
73*61c4878aSAndroid Build Coastguard Worker)
74*61c4878aSAndroid Build Coastguard Worker
75*61c4878aSAndroid Build Coastguard Workerpw_py_test(
76*61c4878aSAndroid Build Coastguard Worker    name = "decode_test",
77*61c4878aSAndroid Build Coastguard Worker    srcs = [
78*61c4878aSAndroid Build Coastguard Worker        "decode_test.py",
79*61c4878aSAndroid Build Coastguard Worker        "tokenized_string_decoding_test_data.py",
80*61c4878aSAndroid Build Coastguard Worker        "varint_test_data.py",
81*61c4878aSAndroid Build Coastguard Worker    ],
82*61c4878aSAndroid Build Coastguard Worker    deps = [":pw_tokenizer"],
83*61c4878aSAndroid Build Coastguard Worker)
84*61c4878aSAndroid Build Coastguard Worker
85*61c4878aSAndroid Build Coastguard Workerpw_py_test(
86*61c4878aSAndroid Build Coastguard Worker    name = "detokenize_proto_test",
87*61c4878aSAndroid Build Coastguard Worker    srcs = [
88*61c4878aSAndroid Build Coastguard Worker        "detokenize_proto_test.py",
89*61c4878aSAndroid Build Coastguard Worker    ],
90*61c4878aSAndroid Build Coastguard Worker    deps = [
91*61c4878aSAndroid Build Coastguard Worker        ":detokenize_proto_test_pb2",
92*61c4878aSAndroid Build Coastguard Worker        ":pw_tokenizer",
93*61c4878aSAndroid Build Coastguard Worker    ],
94*61c4878aSAndroid Build Coastguard Worker)
95*61c4878aSAndroid Build Coastguard Worker
96*61c4878aSAndroid Build Coastguard Workerproto_library(
97*61c4878aSAndroid Build Coastguard Worker    name = "detokenize_proto_test_proto",
98*61c4878aSAndroid Build Coastguard Worker    srcs = ["detokenize_proto_test.proto"],
99*61c4878aSAndroid Build Coastguard Worker    import_prefix = "pw_tokenizer_tests",
100*61c4878aSAndroid Build Coastguard Worker    strip_import_prefix = "/pw_tokenizer/py",
101*61c4878aSAndroid Build Coastguard Worker    deps = [
102*61c4878aSAndroid Build Coastguard Worker        "//pw_tokenizer:tokenizer_proto",
103*61c4878aSAndroid Build Coastguard Worker    ],
104*61c4878aSAndroid Build Coastguard Worker)
105*61c4878aSAndroid Build Coastguard Worker
106*61c4878aSAndroid Build Coastguard Workerpy_proto_library(
107*61c4878aSAndroid Build Coastguard Worker    name = "detokenize_proto_test_pb2",
108*61c4878aSAndroid Build Coastguard Worker    deps = [":detokenize_proto_test_proto"],
109*61c4878aSAndroid Build Coastguard Worker)
110*61c4878aSAndroid Build Coastguard Worker
111*61c4878aSAndroid Build Coastguard Workerfilegroup(
112*61c4878aSAndroid Build Coastguard Worker    name = "example_binary_with_tokenized_strings",
113*61c4878aSAndroid Build Coastguard Worker    srcs = ["example_binary_with_tokenized_strings.elf"],
114*61c4878aSAndroid Build Coastguard Worker)
115*61c4878aSAndroid Build Coastguard Worker
116*61c4878aSAndroid Build Coastguard Workerpw_py_test(
117*61c4878aSAndroid Build Coastguard Worker    name = "detokenize_test",
118*61c4878aSAndroid Build Coastguard Worker    srcs = ["detokenize_test.py"],
119*61c4878aSAndroid Build Coastguard Worker    data = [
120*61c4878aSAndroid Build Coastguard Worker        "example_binary_with_tokenized_strings.elf",
121*61c4878aSAndroid Build Coastguard Worker    ],
122*61c4878aSAndroid Build Coastguard Worker    deps = [
123*61c4878aSAndroid Build Coastguard Worker        ":pw_tokenizer",
124*61c4878aSAndroid Build Coastguard Worker    ],
125*61c4878aSAndroid Build Coastguard Worker)
126*61c4878aSAndroid Build Coastguard Worker
127*61c4878aSAndroid Build Coastguard Workerpw_py_test(
128*61c4878aSAndroid Build Coastguard Worker    name = "elf_reader_test",
129*61c4878aSAndroid Build Coastguard Worker    srcs = ["elf_reader_test.py"],
130*61c4878aSAndroid Build Coastguard Worker    data = [
131*61c4878aSAndroid Build Coastguard Worker        "elf_reader_test_binary.elf",
132*61c4878aSAndroid Build Coastguard Worker    ],
133*61c4878aSAndroid Build Coastguard Worker    deps = [
134*61c4878aSAndroid Build Coastguard Worker        ":pw_tokenizer",
135*61c4878aSAndroid Build Coastguard Worker    ],
136*61c4878aSAndroid Build Coastguard Worker)
137*61c4878aSAndroid Build Coastguard Worker
138*61c4878aSAndroid Build Coastguard Worker# Executable for generating a test ELF file for elf_reader_test.py. A host
139*61c4878aSAndroid Build Coastguard Worker# version of this binary is checked in for use in elf_reader_test.py.
140*61c4878aSAndroid Build Coastguard Worker# Commented out because it fails to compile with bazel, with the error
141*61c4878aSAndroid Build Coastguard Worker# ld.lld: error: symbol 'main' has no type. Instead use a filegroup to
142*61c4878aSAndroid Build Coastguard Worker# keep pw_presubmit happy.
143*61c4878aSAndroid Build Coastguard Worker# cc_binary(
144*61c4878aSAndroid Build Coastguard Worker#     name = "elf_reader_test_binary",
145*61c4878aSAndroid Build Coastguard Worker#     srcs = [
146*61c4878aSAndroid Build Coastguard Worker#         "py/elf_reader_test_binary.c",
147*61c4878aSAndroid Build Coastguard Worker#     ],
148*61c4878aSAndroid Build Coastguard Worker#     linkopts = ["-Wl,--unresolved-symbols=ignore-all"],  # main is not defined
149*61c4878aSAndroid Build Coastguard Worker#     deps = [
150*61c4878aSAndroid Build Coastguard Worker#         ":pw_tokenizer",
151*61c4878aSAndroid Build Coastguard Worker#         "//pw_varint",
152*61c4878aSAndroid Build Coastguard Worker#     ],
153*61c4878aSAndroid Build Coastguard Worker# )
154*61c4878aSAndroid Build Coastguard Workerfilegroup(
155*61c4878aSAndroid Build Coastguard Worker    name = "elf_reader_test_binary",
156*61c4878aSAndroid Build Coastguard Worker    srcs = [
157*61c4878aSAndroid Build Coastguard Worker        "elf_reader_test_binary.c",
158*61c4878aSAndroid Build Coastguard Worker    ],
159*61c4878aSAndroid Build Coastguard Worker)
160*61c4878aSAndroid Build Coastguard Worker
161*61c4878aSAndroid Build Coastguard Workerpw_py_test(
162*61c4878aSAndroid Build Coastguard Worker    name = "encode_test",
163*61c4878aSAndroid Build Coastguard Worker    srcs = [
164*61c4878aSAndroid Build Coastguard Worker        "encode_test.py",
165*61c4878aSAndroid Build Coastguard Worker        "varint_test_data.py",
166*61c4878aSAndroid Build Coastguard Worker    ],
167*61c4878aSAndroid Build Coastguard Worker    deps = [":pw_tokenizer"],
168*61c4878aSAndroid Build Coastguard Worker)
169*61c4878aSAndroid Build Coastguard Worker
170*61c4878aSAndroid Build Coastguard Workerpw_py_test(
171*61c4878aSAndroid Build Coastguard Worker    name = "tokens_test",
172*61c4878aSAndroid Build Coastguard Worker    srcs = ["tokens_test.py"],
173*61c4878aSAndroid Build Coastguard Worker    deps = [":pw_tokenizer"],
174*61c4878aSAndroid Build Coastguard Worker)
175