# Copyright 2016 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.

inputs = [
  "data/ref/input/inp.in",
]

executable("181.mcf") {
  testonly = true

  sources = [
    "src/implicit.c",
    "src/mcf.c",
    "src/mcfutil.c",
    "src/output.c",
    "src/pbeampp.c",
    "src/pbla.c",
    "src/pflowup.c",
    "src/psimplex.c",
    "src/pstart.c",
    "src/readmin.c",
    "src/treeup.c",
  ]
  defines = [ "WANT_STDC_PROTO" ]
  if (current_os == "fuchsia") {
    data = inputs
  } else {
    data_deps = [
      ":copy_inputs",
    ]
  }
}

copy("copy_inputs") {
  visibility = [ ":*" ]
  sources = inputs
  outputs = [
    "$root_out_dir/data/181.mcf/{{source_file_part}}",
  ]
}
