# Copyright 2017 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("//third_party/flatbuffers/flatbuffer.gni")

config("flatbuffers_warnings") {
  cflags = [
    "-Wno-conversion",
    "-Wno-implicit-fallthrough",
  ]
}

config("flatbuffers_config") {
  include_dirs = [ "include" ]
}

source_set("flatbuffers") {
  sources = [
    "include/flatbuffers/flatbuffers.h",
    "include/flatbuffers/hash.h",
  ]

  configs += [ ":flatbuffers_warnings" ]
  public_configs = [
    ":flatbuffers_config",

    # TODO(fxbug.dev/78646) Remove this config after std::iterator usages are cleaned up.
    "//build/config:suppress_iterator_warnings",
  ]

  # TODO(46773): UBSan has found an instance of undefined behavior in this target.
  # Disable UBSan for this target temporarily until it is migrated into CI/CQ.
  public_configs += [ "//build/config:temporarily_disable_ubsan_do_not_use" ]
}

source_set("compiler_files") {
  sources = [
    "grpc/src/compiler/cpp_generator.cc",
    "grpc/src/compiler/cpp_generator.h",
    "grpc/src/compiler/go_generator.cc",
    "grpc/src/compiler/go_generator.h",
    "grpc/src/compiler/schema_interface.h",
    "include/flatbuffers/code_generators.h",
    "include/flatbuffers/idl.h",
    "include/flatbuffers/util.h",
    "src/idl_gen_cpp.cpp",
    "src/idl_gen_fbs.cpp",
    "src/idl_gen_general.cpp",
    "src/idl_gen_go.cpp",
    "src/idl_gen_grpc.cpp",
    "src/idl_gen_js.cpp",
    "src/idl_gen_php.cpp",
    "src/idl_gen_python.cpp",
    "src/idl_gen_text.cpp",
    "src/idl_parser.cpp",
    "src/reflection.cpp",
    "src/util.cpp",
  ]
  include_dirs = [ "grpc" ]
  visibility = [ ":*" ]
  deps = [ ":flatbuffers" ]
  configs += [ ":flatbuffers_warnings" ]
}

executable("flatc") {
  sources = [ "src/flatc.cpp" ]
  deps = [
    ":compiler_files",
    ":flatbuffers",
  ]

  if (is_linux) {
    libs = [ "pthread" ]
  }
}
