# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//third_party/cython/rules.gni")

# GYP version: mojo/mojo.gyp:mojo_python
group("python") {
  deps = [
    ":embedder",
    ":validation_util",
    "//mojo/public/python",
  ]
}

# GYP version: mojo/mojo.gyp:mojo_python_embedder
python_binary_module("embedder") {
  python_base_module = "mojo"
  cython_sources = [
    "system/mojo/embedder.pyx",
  ]
  deps = [
    "//mojo/edk/system",
  ]
  datadeps = [
    "//mojo/public/python:system",
  ]
}

copy("tests_module") {
  sources = [
    "system/mojo/tests/__init__.py",
  ]
  outputs = [
    "$root_out_dir/python/mojo/tests/{{source_file_part}}",
  ]
}

python_binary_module("validation_util") {
  python_base_module = "mojo/tests"
  cython_sources = [
    "system/mojo/tests/validation_util.pyx",
  ]
  deps = [
    "//mojo/public/cpp/bindings/tests:mojo_public_bindings_test_utils",
  ]
  datadeps = [
    ":tests_module",
  ]
}
