# Copyright 2020 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")

pw_python_package("workflows") {
  generate_setup = {
    metadata = {
      name = "pw_workflows"
      version = "0.0.1"
    }
  }
  sources = [
    "pw_build/__init__.py",
    "pw_build/workflows/bazel_driver.py",
    "pw_build/workflows/build_driver.py",
    "pw_build/workflows/launcher.py",
    "pw_build/workflows/manager.py",
    "pw_build/workflows/private/validator.py",
  ]
  tests = [
    "bazel_driver_test.py",
    "workflows_launcher_test.py",
    "workflows_validator_test.py",
    "workflows_manager_test.py",
  ]
  python_deps = [
    "$dir_pw_build/py",
    "$dir_pw_cli/py",
    "$dir_pw_config_loader/py",
  ]
  pylintrc = "$dir_pigweed/.pylintrc"
  mypy_ini = "$dir_pigweed/.mypy.ini"
  ruff_toml = "$dir_pigweed/.ruff.toml"
  proto_library = "..:workflows_proto"
}

pw_python_package("py") {
  setup = [
    "pyproject.toml",
    "setup.cfg",
  ]
  sources = [
    "pw_build/__init__.py",
    "pw_build/bazel_query.py",
    "pw_build/bazel_to_gn.py",
    "pw_build/build_recipe.py",
    "pw_build/collect_wheels.py",
    "pw_build/copy_and_patch.py",
    "pw_build/copy_from_cipd.py",
    "pw_build/create_gn_venv.py",
    "pw_build/create_python_tree.py",
    "pw_build/error.py",
    "pw_build/exec.py",
    "pw_build/file_prefix_map.py",
    "pw_build/generate_cc_blob_library.py",
    "pw_build/generate_modules_lists.py",
    "pw_build/generate_python_package.py",
    "pw_build/generate_python_package_gn.py",
    "pw_build/generate_python_requirements.py",
    "pw_build/generate_python_wheel.py",
    "pw_build/generate_python_wheel_cache.py",
    "pw_build/generate_report.py",
    "pw_build/generated_tests.py",
    "pw_build/gn_resolver.py",
    "pw_build/gn_target.py",
    "pw_build/gn_writer.py",
    "pw_build/host_tool.py",
    "pw_build/merge_profraws.py",
    "pw_build/mirror_tree.py",
    "pw_build/nop.py",
    "pw_build/pip_install_python_deps.py",
    "pw_build/project_builder.py",
    "pw_build/project_builder_argparse.py",
    "pw_build/project_builder_context.py",
    "pw_build/project_builder_prefs.py",
    "pw_build/python_package.py",
    "pw_build/python_runfiles.py",
    "pw_build/python_runner.py",
    "pw_build/runfiles_manager.py",
    "pw_build/wrap_ninja.py",
    "pw_build/zephyr_twister_runner.py",
    "pw_build/zip.py",
  ]
  tests = [
    "bazel_query_test.py",
    "bazel_to_gn_test.py",
    "build_recipe_test.py",
    "create_python_tree_test.py",
    "file_prefix_map_test.py",
    "generate_cc_blob_library_test.py",
    "gn_target_test.py",
    "gn_writer_test.py",
    "project_builder_prefs_test.py",
    "project_builder_test.py",
    "python_runner_test.py",
    "runfiles_manager_test.py",
    "zip_test.py",
  ]
  python_deps = [
    "$dir_pw_cli/py",
    "$dir_pw_config_loader/py",
    "$dir_pw_env_setup/py",
  ]
  python_test_deps = [ "gn_tests:test_dist1" ]
  pylintrc = "$dir_pigweed/.pylintrc"
  mypy_ini = "$dir_pigweed/.mypy.ini"
  ruff_toml = "$dir_pigweed/.ruff.toml"
  inputs = [
    "pw_build/zephyr_default_CMakeLists.txt",
    "pw_build/zephyr_default_prj.conf",
  ]
}

# This is a separate package to avoid dependency cycles with pw_build.
pw_python_package("pigweed_upstream_build") {
  generate_setup = {
    metadata = {
      name = "pigweed_upstream_build"
      version = "0.0.1"
    }
  }
  sources = [
    "pigweed_upstream_build/main.py",
    "pw_build/project_builder_presubmit_runner.py",
  ]
  python_deps = [
    "$dir_pw_build/py",
    "$dir_pw_presubmit/py",
  ]
  pylintrc = "$dir_pigweed/.pylintrc"
  mypy_ini = "$dir_pigweed/.mypy.ini"
  ruff_toml = "$dir_pigweed/.ruff.toml"
}

# These are intentionally excluded from the GN build since they're
# Bazel-only.
group("bazel_tests") {
  data = [ "py_runfiles_test.py" ]
}
