# Copyright 2020 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("//build/fidl/toolchain.gni")

# List of information about FIDL test libraries. Each item has:
#
#   name
#     Unique name to use in golden filenames.
#
#   target
#     Label of a FIDL target. Its target_name must be unique among all items,
#     and identical to the FIDL library name.
#
#   denylist
#     List of tools that should not generate golden files.
#     Allowed items: fidldoc, fidlgen_dart, fidlgen_go, fidlgen_hlcpp,
#       fidlgen_libfuzzer, fidlgen_llcpp, fidlgen_rust, fidlgen_syzkaller.
#     To exclude a library from fidlc goldens, simply comment the whole item.
#
#   build_denylist
#     List of tools that should not compile golden bindings.
#     Allowed items: fidlgen_dart, fidlgen_go, fidlgen_hlcpp, fidlgen_libfuzzer,
#       fidlgen_llcpp, fidlgen_rust.
#     Tools from `denylist` are implicitly included.
#
#   host_build_denylist
#     List of tools that should not compile golden bindings for host.
#     Allowed items: fidlgen_hlcpp, fidlgen_llcpp, fidlgen_rust.
#     Tools from `build_denylist` are implicitly included.
#
#   device_build_denylist
#     List of tools that should not compile golden bindings for device.
#     Allowed items: fidlgen_hlcpp, fidlgen_llcpp, fidlgen_rust.
#     Tools from `build_denylist` are implicitly included.
#
#   target_name (computed)
#     Name portion of the target.
#
#   library (computed)
#     Name of the FIDL library (same as `target_name`).
#
#   fidl_target (computed)
#     Label of the library in the FIDL toolchain.
#
#   fidl_gen_dir (computed)
#     The target's `target_gen_dir` in `fidl_toolchain`.
#
#   fidl_ir_file (computed)
#     Path to the generated IR file relatively to the root build directory.
#
# Please keep sorted by name.
fidl_testdata_info = [
  {
    name = "arrays"
    target = "//tools/fidl/fidlc/testdata:fidl.test.arrays"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "bindings_denylist"
    target = "//tools/fidl/fidlc/testdata:fidl.test.bindingsdenylist"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "bits"
    target = "//tools/fidl/fidlc/testdata:fidl.test.bits"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "byte_and_bytes"
    target = "//tools/fidl/fidlc/testdata:fidl.test.byteandbytes"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "consts"
    target = "//tools/fidl/fidlc/testdata:fidl.test.consts"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
    build_denylist = [
      # TODO(fxbug.dev/62520): Insert enum/bits <-> primitive conversions.
      "fidlgen_hlcpp",
      "fidlgen_libfuzzer",
      "fidlgen_llcpp",
      "fidlgen_rust",

      # TODO(fxbug.dev/62763): Fix undefined_identifier errors.
      "fidlgen_dart",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "constants"
    target = "//tools/fidl/fidlc/testdata:fidl.test.constants"
    denylist = [
      # TODO(fxbug.dev/45006): Implement const expressions in fidlgen.
      "fidlgen_dart",
      "fidlgen_go",
      "fidlgen_hlcpp",
      "fidlgen_libfuzzer",
      "fidlgen_llcpp",
      "fidlgen_rust",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "bits_constants"
    target = "//tools/fidl/fidlc/testdata:fidl.test.bitsconstants"
  },
  {
    name = "doc_comments"
    target = "//tools/fidl/fidlc/testdata:fidl.test.doccomments"
    build_denylist = [
      # TODO(fxbug.dev/62523): Make protocol named "Interface" compile.
      "fidlgen_llcpp",
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "empty_struct"
    target = "//tools/fidl/fidlc/testdata:fidl.test.emptystruct"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "encapsulated_structs"
    target = "//tools/fidl/fidlc/testdata:fidl.test.encapsulatedstructs"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "enum"
    target = "//tools/fidl/fidlc/testdata:fidl.test.enum"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "error"
    target = "//tools/fidl/fidlc/testdata:fidl.test.error"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "escaping"
    target = "//tools/fidl/fidlc/testdata:fidl.test.escaping"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "experimental_maybe_from_type_alias"
    target = "//tools/fidl/fidlc/testdata/type_aliases:fidl.test.experimentalmaybefromtypealias"
    denylist = [
      # TODO(fxbug.dev/62533): Fix many issues.
      "fidlgen_hlcpp",
      "fidlgen_cpp",
      "fidlgen_libfuzzer",
      "fidlgen_llcpp",
    ]
  },
  {
    name = "foreign_type_in_response_used_through_compose"
    target = "//tools/fidl/fidlc/testdata/foreign_type_in_response_used_through_compose:fidl.test.foreigntypeinresponseusedthroughcompose"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "handles"
    target = "//tools/fidl/fidlc/testdata:fidl.test.handles"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
    build_denylist = [
      # TODO(fxbug.dev/62533): Fix many issues.
      "fidlgen_hlcpp",
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/62526): Fix pcidevice.h include issue.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",

      # TODO(fxbug.dev/62524): Fix Ord/Hash trait issue with fidl::Resource.
      "fidlgen_rust",
    ]
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "handles_in_types"
    target = "//tools/fidl/fidlc/testdata:fidl.test.handlesintypes"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "inheritance"
    target = "//tools/fidl/fidlc/testdata:fidl.test.inheritance"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "inheritance_with_recursive_decl"
    target =
        "//tools/fidl/fidlc/testdata:fidl.test.inheritancewithrecursivedecl"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "nullable"
    target = "//tools/fidl/fidlc/testdata:fidl.test.nullable"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "padding"
    target = "//tools/fidl/fidlc/testdata:fidl.test.padding"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "placement_of_attributes"
    target = "//tools/fidl/fidlc/testdata/placement_of_attributes:fidl.test.placementofattributes"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "protocol_request"
    target = "//tools/fidl/fidlc/testdata:fidl.test.protocolrequest"
    build_denylist = [
      # TODO(fxbug.dev/62532): Fix many issues.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "protocols"
    target = "//tools/fidl/fidlc/testdata:fidl.test.protocols"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "request_flexible_envelope"
    target = "//tools/fidl/fidlc/testdata:fidl.test.requestflexibleenvelope"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "service"
    target = "//tools/fidl/fidlc/testdata:fidl.test.service"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "struct"
    target = "//tools/fidl/fidlc/testdata:fidl.test.struct"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "struct_default_value_enum_library_reference"
    target = "//tools/fidl/fidlc/testdata/struct_default_value_enum_library_reference:fidl.test.structdefaultvalueenumlibraryreference"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/45007): Syzkaller does not support enum member references
      # in struct defaults.
      "fidlgen_syzkaller",
    ]
    build_denylist = [
      # TODO(fxbug.dev/62761): Fix error about default value not being constant.
      "fidlgen_dart",
    ]
  },
  {
    name = "table"
    target = "//tools/fidl/fidlc/testdata:fidl.test.table"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "transitive_dependencies"
    target = "//tools/fidl/fidlc/testdata/transitive_dependencies:fidl.test.transitivedependencies"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "transitive_dependencies_compose"
    target = "//tools/fidl/fidlc/testdata/transitive_dependencies_compose:fidl.test.transitivedependenciescompose"
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode libfuzzer dependency on HLCPP and LLCPP.
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "type_aliases"
    target = "//tools/fidl/fidlc/testdata/type_aliases:fidl.test.typealiases"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
  {
    name = "union"
    target = "//tools/fidl/fidlc/testdata:fidl.test.union"
    build_denylist = [
      # TODO(fxbug.dev/55889): Escape "union" keyword.
      "fidlgen_llcpp",
      "fidlgen_libfuzzer",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "union_sandwich"
    target = "//tools/fidl/fidlc/testdata:fidl.test.unionsandwich"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
    host_build_denylist = [
      # TODO(fxbug.dev/62573): Add ifdefs so that protocols compile on host.
      "fidlgen_llcpp",

      # TODO(fxbug.dev/72247): Encode Unified CPP dependency on HLCPP and LLCPP.
      "fidlgen_cpp",
    ]
  },
  {
    name = "vectors"
    target = "//tools/fidl/fidlc/testdata:fidl.test.vectors"
    denylist = [
      # TODO(fxbug.dev/65465): Make fidlgen_libfuzzer work without protocols.
      "fidlgen_libfuzzer",
    ]
  },
]

# Add computed properties.
_fidl_testdata_info = fidl_testdata_info
fidl_testdata_info = []
foreach(info, _fidl_testdata_info) {
  info.target_name = get_label_info(info.target, "name")
  info.library = info.target_name
  info.fidl_target = "${info.target}($fidl_toolchain)"
  info.fidl_gen_dir = get_label_info(info.fidl_target, "target_gen_dir")
  info.fidl_ir_file = "${info.fidl_gen_dir}/${info.target_name}.fidl.json"

  if (!defined(info.denylist)) {
    info.denylist = []
  }
  if (!defined(info.build_denylist)) {
    info.build_denylist = []
  }
  if (!defined(info.host_build_denylist)) {
    info.host_build_denylist = []
  }
  if (!defined(info.device_build_denylist)) {
    info.device_build_denylist = []
  }
  info.build_denylist += info.denylist
  info.host_build_denylist += info.build_denylist
  info.device_build_denylist += info.build_denylist

  fidl_testdata_info += [ info ]
}
