# Copyright (c) 2022 Project CHIP 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
#
# http://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/build.gni")
import("//build_overrides/chip.gni")

import("//build_overrides/pigweed.gni")
import("$dir_pw_build/python.gni")

pw_python_package("idl") {
  setup = [ "setup.py" ]
  inputs = [
    # Dependency grammar
    "matter_grammar.lark",

    # Templates used for generation
    "generators/java/ChipClustersCpp.jinja",
    "generators/java/ChipClustersRead.jinja",

    # Unit test data
    "tests/available_tests.yaml",
    "tests/inputs/cluster_struct_attribute.matter",
    "tests/inputs/global_struct_attribute.matter",
    "tests/inputs/optional_argument.matter",
    "tests/inputs/several_clusters.matter",
    "tests/inputs/simple_attribute.matter",
    "tests/outputs/cluster_struct_attribute/jni/DemoClusterClient-ReadImpl.cpp",
    "tests/outputs/cluster_struct_attribute/jni/DemoClusterClient-InvokeSubscribeImpl.cpp",
    "tests/outputs/global_struct_attribute/jni/DemoClusterClient-ReadImpl.cpp",
    "tests/outputs/global_struct_attribute/jni/DemoClusterClient-InvokeSubscribeImpl.cpp",
    "tests/outputs/optional_argument/jni/MyClusterClient-ReadImpl.cpp",
    "tests/outputs/optional_argument/jni/MyClusterClient-InvokeSubscribeImpl.cpp",
    "tests/outputs/several_clusters/jni/FirstClient-ReadImpl.cpp",
    "tests/outputs/several_clusters/jni/SecondClient-ReadImpl.cpp",
    "tests/outputs/several_clusters/jni/ThirdClient-ReadImpl.cpp",
    "tests/outputs/several_clusters/jni/FirstClient-InvokeSubscribeImpl.cpp",
    "tests/outputs/several_clusters/jni/SecondClient-InvokeSubscribeImpl.cpp",
    "tests/outputs/several_clusters/jni/ThirdClient-InvokeSubscribeImpl.cpp",
    "tests/outputs/simple_attribute/jni/MyClusterClient-ReadImpl.cpp",
    "tests/outputs/simple_attribute/jni/MyClusterClient-InvokeSubscribeImpl.cpp",
  ]

  sources = [
    "__init__.py",
    "generators/__init__.py",
    "generators/filters.py",
    "generators/java/__init__.py",
    "generators/types.py",
    "matter_idl_parser.py",
    "matter_idl_types.py",
  ]

  tests = [
    "test_matter_idl_parser.py",
    "test_generators.py",
  ]
}
