# 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 = [ "../c/system", "../cpp/bindings:callback", "../cpp/system", "../cpp/utility", "../platform/native: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", ] } python_binary_source_set("python_common") { sources = [ "src/common.cc", "src/common.h", ] configs = [ "../build/config:mojo_sdk" ] deps = [ "../c/environment: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 } copy("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 = [ ":import_interface_bindings", ":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", ] }