# 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/ref.blk",
  "data/ref/input/ref.cel",
  "data/ref/input/ref.net",
  "data/ref/input/ref.par",
]

executable("300.twolf") {
  sources = [
    "src/acceptt.c",
    "src/addimp.c",
    "src/alignfeed.c",
    "src/buildimp.c",
    "src/changrid.c",
    "src/clean.c",
    "src/closepins.c",
    "src/config1.c",
    "src/configure.c",
    "src/configuref.c",
    "src/controlf.c",
    "src/countf.c",
    "src/date.c",
    "src/debug.c",
    "src/dimbox.c",
    "src/finalwire.c",
    "src/findcost.c",
    "src/findcostf.c",
    "src/findest.c",
    "src/findfeeds.c",
    "src/findrchk.c",
    "src/findrcost.c",
    "src/findunlap.c",
    "src/globe.c",
    "src/globedbg.c",
    "src/globroute.c",
    "src/gparser.c",
    "src/grdcell.c",
    "src/hash.c",
    "src/implfeeds.c",
    "src/main.c",
    "src/mergplist.c",
    "src/move.c",
    "src/mt.c",
    "src/okmalloc.c",
    "src/outcm.c",
    "src/outpins.c",
    "src/output.c",
    "src/parser.c",
    "src/purcost.c",
    "src/qsorte.c",
    "src/qsortg.c",
    "src/qsortgdx.c",
    "src/qsortx.c",
    "src/rand.c",
    "src/readblck.c",
    "src/readcell.c",
    "src/readnets.c",
    "src/readpar.c",
    "src/readseg.c",
    "src/savewolf.c",
    "src/sortpin.c",
    "src/stats.c",
    "src/uc0.c",
    "src/ucg0.c",
    "src/ucgxp.c",
    "src/uclosepns.c",
    "src/ucxx1.c",
    "src/ucxx2.c",
    "src/ucxxo1.c",
    "src/ucxxo2.c",
    "src/ucxxp.c",
    "src/uglobe.c",
    "src/uglobrout.c",
    "src/ugpair.c",
    "src/uloop.c",
    "src/uloop2.c",
    "src/unetseg.c",
    "src/unlap.c",
    "src/upair.c",
    "src/urcost.c",
    "src/utemp.c",
    "src/utils.c",
    "src/xcompact.c",
    "src/xpickint.c",
  ]
  defines = [
    "HAVE_SIGNED_CHAR",
    "SPEC_CPU2000",
  ]
  cflags_c = [
    "-Wno-format",
    "-Wno-implicit-function-declaration",
    "-Wno-implicit-int",
    "-Wno-incompatible-library-redeclaration",
    "-Wno-logical-op-parentheses",
    "-Wno-parentheses",
    "-Wno-return-type",
    "-Wno-sign-compare",
    "-Wno-unused-variable",
  ]
  if (current_os == "fuchsia") {
    data = inputs
  } else {
    data_deps = [
      ":copy_inputs",
    ]
  }
}

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