# 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" ]
    }
  }
}
