# Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

template("rust_library") {
  manifest = rebase_path("Cargo.toml")
  if (defined(invoker.manifest)) {
    manifest = invoker.manifest
  }

  cmd = [
    rebase_path("//buildtools/${current_os}-${current_cpu}/rust/bin/cargo"),
    "build",
    "--target-dir",
    rebase_path(target_out_dir),
    "--manifest-path",
    manifest,
  ]
  output = "$target_out_dir/lib${invoker.lib_name}.a"
  debug = defined(invoker.debug) && invoker.debug

  if (!debug) {
    cmd += [ "--release" ]
  }

  action(target_name) {
    script = "//build/rust/run.py"
    args = cmd
    outputs = [ output ]
    public_configs = [ ":${target_name}_config" ]
  }

  config("${target_name}_config") {
    libs = [ "wasmer" ]
    if (debug) {
      lib_dirs = [ "$target_out_dir/debug" ]
    } else {
      lib_dirs = [ "$target_out_dir/release" ]
    }
  }
}
