blob: 0dd114f9f519e787518a49c5778db9729eee0da1 [file] [log] [blame]
# 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("../mojo_sdk.gni")
import("//third_party/cython/rules.gni")
import("rules.gni")
group("python") {
deps = [
":bindings",
":mojo_system",
":mojo_system_impl",
]
}
# GYP version: mojo.gyp:mojo_python_system
python_binary_module("mojo_system") {
configs = [ "../build/config:mojo_sdk" ]
deps = [
":system_embedded",
]
}
python_binary_source_set("system_embedded") {
cython_sources = [
"c_async_waiter.pxd",
"c_core.pxd",
"c_export.pxd",
"c_thunks.pxd",
"mojo_system.pyx",
]
configs = [ "../build/config:mojo_sdk" ]
deps = [
"../cpp/bindings:callback",
"../cpp/system",
"../cpp/utility",
"../platform/native:system_thunks",
]
public_deps = [
"../c:system",
]
}
python_binary_module("mojo_system_impl") {
cython_sources = [
"c_environment.pxd",
"c_export.pxd",
"c_thunks.pxd",
"mojo_system_impl.pyx",
]
sources = [
"src/python_system_helper.cc",
"src/python_system_helper.h",
]
configs = [ "../build/config:mojo_sdk" ]
deps = [
":python_common",
"../c:environment",
"../c:system",
"../cpp/bindings:callback",
"../cpp/environment:standalone",
"../cpp/system",
"../cpp/utility",
"../platform/native:system_thunks",
]
}
python_binary_source_set("python_common") {
sources = [
"src/common.cc",
"src/common.h",
]
configs = [ "../build/config:mojo_sdk" ]
deps = [
"../c:environment",
"../cpp/bindings:callback",
"../cpp/environment:environment",
"../cpp/system:system",
"../cpp/utility",
]
}
python_package("packaged_application") {
sources = [
"mojo_application/__init__.py",
"mojo_application/application_delegate.py",
"mojo_application/application_impl.py",
"mojo_application/application_runner.py",
"mojo_application/service_provider_impl.py",
]
}
action("import_interface_bindings") {
visibility = [ ":bindings" ]
script = rebase_path("mojo/public/tools/gn/unzip.py", ".", mojo_root)
timestamp = "$target_gen_dir/${target_name}.outputstamp"
mojom_deps = [ "../interfaces/bindings:bindings_python" ]
inputs = []
foreach(d, mojom_deps) {
dep_name = get_label_info(d, "name")
dep_target_out_dir = get_label_info(d, "target_out_dir")
inputs += [ "$dep_target_out_dir/$dep_name.pyzip" ]
}
outputs = [
timestamp,
]
rebase_inputs = rebase_path(inputs, root_build_dir)
rabase_output = rebase_path("$root_out_dir/python", root_build_dir)
rebase_timestamp = rebase_path(timestamp, root_build_dir)
args = [
"--inputs=${rebase_inputs}",
"--output=${rabase_output}",
"--timestamp=${rebase_timestamp}",
]
deps = mojom_deps
}
group("bindings") {
deps = [
":import_interface_bindings",
":serialization_bindings",
]
}
# This target lists dependencies needed to use generated mojom files for
# serialization/deserialization only, but not the full mojo application stack.
copy("serialization_bindings") {
sources = [
"mojo_bindings/__init__.py",
"mojo_bindings/descriptor.py",
"mojo_bindings/interface_reflection.py",
"mojo_bindings/messaging.py",
"mojo_bindings/promise.py",
"mojo_bindings/reflection.py",
"mojo_bindings/serialization.py",
]
outputs = [
"$root_out_dir/python/mojo_bindings/{{source_file_part}}",
]
deps = [
":mojo_system",
]
}
python_package("packaged_bindings") {
sources = [
"mojo_bindings/__init__.py",
"mojo_bindings/descriptor.py",
"mojo_bindings/interface_reflection.py",
"mojo_bindings/messaging.py",
"mojo_bindings/promise.py",
"mojo_bindings/reflection.py",
"mojo_bindings/serialization.py",
]
deps = [
"../interfaces/bindings:bindings_python",
]
}