# Copyright 2021 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.

import("//build_overrides/pigweed.gni")

import("$dir_pw_build/python.gni")
import("$dir_pw_protobuf_compiler/proto.gni")

pw_python_package("py") {
  generate_setup = {
    metadata = {
      name = "pw_tokenizer"
      version = "0.0.1"
    }
    options = {
      extras_require = {
        serial_detokenizer = [ "serial" ]
      }
    }
  }
  sources = [
    "generate_argument_types_macro.py",
    "generate_hash_macro.py",
    "generate_hash_test_data.py",
    "pw_tokenizer/__init__.py",
    "pw_tokenizer/__main__.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",
  ]
  tests = [
    "database_test.py",
    "decode_test.py",
    "detokenize_proto_test.py",
    "detokenize_test.py",
    "elf_reader_test.py",
    "encode_test.py",
    "tokenized_string_decoding_test_data.py",
    "tokens_test.py",
    "varint_test_data.py",
  ]
  python_test_deps = [ ":test_proto.python" ]
  inputs = [
    "elf_reader_test_binary.elf",
    "example_binary_with_tokenized_strings.elf",
    "example_legacy_binary_with_tokenized_strings.elf",
  ]
  proto_library = "..:proto"
  pylintrc = "$dir_pigweed/.pylintrc"
}

# This setup.py may be used to install pw_tokenizer without GN. It does not
# include the pw_tokenizer.proto subpackage, since it contains a generated
# protobuf module.
pw_python_script("setup") {
  sources = [ "setup.py" ]
  inputs = [
    "setup.cfg",
    "pyproject.toml",
  ]
}

pw_proto_library("test_proto") {
  sources = [ "detokenize_proto_test.proto" ]
  deps = [ "..:proto" ]
  prefix = "pw_tokenizer_tests"
}
