# Copyright 2019 The Fuchsia 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("//src/virtualization/buildtools/romfs_image.gni")

executable("mkromfs") {
  sources = [ "mkromfs.cc" ]
  configs += [
    # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
    "//build/config:Wno-conversion",
  ]
}

test_file = "${target_out_dir}/foo"
test_file_contents = "bar"
test_image = "${target_out_dir}/test.img"

romfs_image("romfs_test_image") {
  write_file(test_file, test_file_contents)
  inputs = [ test_file ]
  output = test_image
}

action("romfs_test_image_verify") {
  deps = [ ":romfs_test_image" ]
  script = "romfsck.py"
  inputs = [ test_image ]
  outputs = [ "${test_image}.verify" ]
  args = [
    rebase_path(test_image, root_out_dir),
    rebase_path("${test_image}.verify", root_out_dir),
  ]
}
