# Copyright 2015 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. # Rules to generate python packaged applications for Mojo import("../mojo_sdk.gni") template("python_package") { action(target_name) { script = rebase_path("mojo/public/tools/gn/zip.py", ".", mojo_root) inputs = invoker.sources deps = [] zip_inputs = [] if (defined(invoker.deps)) { deps += invoker.deps foreach(d, invoker.deps) { dep_name = get_label_info(d, "name") dep_target_out_dir = get_label_info(d, "target_out_dir") zip_inputs += [ "$dep_target_out_dir/$dep_name.pyzip" ] } } if (defined(invoker.datadeps)) { datadeps = invoker.datadeps } output = "$target_out_dir/$target_name.pyzip" outputs = [ output, ] rebase_base_dir = rebase_path(get_label_info(":$target_name", "dir"), root_build_dir) rebase_inputs = rebase_path(inputs, root_build_dir) rebase_zip_inputs = rebase_path(zip_inputs, root_build_dir) rebase_output = rebase_path(output, root_build_dir) args = [ "--base-dir=$rebase_base_dir", "--inputs=$rebase_inputs", "--zip-inputs=$rebase_zip_inputs", "--output=$rebase_output", ] } } # Use this template to generate a .mojo python application. One of the source # files should be named __mojo__.py and contain a MojoMain function as the # entry point. Dependencies of python_packaged_application targets should be # either mojom targets (and specified using the mojom_deps variable) or # python_package targets. template("python_packaged_application") { package_name = "${target_name}_package" package_output = "$target_out_dir/$package_name.pyzip" if (defined(invoker.output_name)) { mojo_output = "$root_out_dir/" + invoker.output_name + ".mojo" } else { mojo_output = "$root_out_dir/" + target_name + ".mojo" } if (defined(invoker.debug) && invoker.debug) { content_handler_param = "?debug=true" } else { content_handler_param = "" } python_package(package_name) { sources = invoker.sources if (defined(invoker.deps)) { deps = invoker.deps } if (defined(invoker.mojom_deps)) { mojom_deps = invoker.mojom_deps } if (defined(invoker.datadeps)) { datadeps = invoker.datadeps } } action(target_name) { script = rebase_path("mojo/public/tools/prepend.py", ".", mojo_root) input = package_output inputs = [ input, ] output = mojo_output outputs = [ output, ] deps = [ ":$package_name", ] if (defined(invoker.deps)) { deps += invoker.deps } if (defined(invoker.mojom_deps)) { deps += invoker.mojom_deps } if (defined(invoker.datadeps)) { datadeps = invoker.datadeps } rebase_input = rebase_path(input, root_build_dir) rebase_output = rebase_path(output, root_build_dir) args = [ "--input=$rebase_input", "--output=$rebase_output", "--line=#!mojo mojo:py_content_handler${content_handler_param}", ] } }