From 0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 03:47:29 +0200 Subject: Adding upstream version 115.8.0esr. Signed-off-by: Daniel Baumann --- .../uniffi-bindgen-gecko-js/mach_commands.py | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py (limited to 'toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py') diff --git a/toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py b/toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py new file mode 100644 index 0000000000..68c2c3d58b --- /dev/null +++ b/toolkit/components/uniffi-bindgen-gecko-js/mach_commands.py @@ -0,0 +1,92 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import os +import subprocess + +from mach.decorators import Command, SubCommand + +# IMPORTANT: Please Request review from a DOM peer before +# committing to using UniFFI. There are other ways to consume Rust from +# JavaScript that might fit your use case better. +UDL_FILES = [ + "third_party/rust/tabs/src/tabs.udl", +] + +FIXTURE_UDL_FILES = [ + "third_party/rust/uniffi-example-geometry/src/geometry.udl", + "third_party/rust/uniffi-example-arithmetic/src/arithmetic.udl", + "third_party/rust/uniffi-example-rondpoint/src/rondpoint.udl", + "third_party/rust/uniffi-example-sprites/src/sprites.udl", + "third_party/rust/uniffi-example-todolist/src/todolist.udl", + "toolkit/components/uniffi-fixture-callbacks/src/callbacks.udl", + "toolkit/components/uniffi-example-custom-types/src/custom-types.udl", + "toolkit/components/uniffi-fixture-external-types/src/external-types.udl", +] +CPP_PATH = "toolkit/components/uniffi-js/UniFFIGeneratedScaffolding.cpp" +JS_DIR = "toolkit/components/uniffi-bindgen-gecko-js/components/generated" +FIXTURE_CPP_PATH = "toolkit/components/uniffi-js/UniFFIFixtureScaffolding.cpp" +FIXTURE_JS_DIR = "toolkit/components/uniffi-bindgen-gecko-js/fixtures/generated" + + +def build_uniffi_bindgen_gecko_js(command_context): + uniffi_root = crate_root(command_context) + print("Building uniffi-bindgen-gecko-js") + cmdline = [ + "cargo", + "build", + "--release", + "--manifest-path", + os.path.join(command_context.topsrcdir, "Cargo.toml"), + "--package", + "uniffi-bindgen-gecko-js", + ] + subprocess.check_call(cmdline, cwd=uniffi_root) + print() + return os.path.join( + command_context.topsrcdir, "target", "release", "uniffi-bindgen-gecko-js" + ) + + +@Command( + "uniffi", + category="devenv", + description="Generate JS bindings using uniffi-bindgen-gecko-js", +) +def uniffi(command_context, *runargs, **lintargs): + """Run uniffi.""" + command_context._sub_mach(["help", "uniffi"]) + return 1 + + +@SubCommand( + "uniffi", + "generate", + description="Generate/regenerate bindings", +) +def generate_command(command_context): + binary_path = build_uniffi_bindgen_gecko_js(command_context) + cmdline = [ + binary_path, + "--js-dir", + JS_DIR, + "--fixture-js-dir", + FIXTURE_JS_DIR, + "--cpp-path", + CPP_PATH, + "--fixture-cpp-path", + FIXTURE_CPP_PATH, + ] + if UDL_FILES: + cmdline += ["--udl-files"] + UDL_FILES + if FIXTURE_UDL_FILES: + cmdline += ["--fixture-udl-files"] + FIXTURE_UDL_FILES + subprocess.check_call(cmdline, cwd=command_context.topsrcdir) + return 0 + + +def crate_root(command_context): + return os.path.join( + command_context.topsrcdir, "toolkit", "components", "uniffi-bindgen-gecko-js" + ) -- cgit v1.2.3