| # Copyright 2018 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/cpp/fidl_cpp.gni") |
| import("//build/dart/toolchain.gni") |
| import("//build/fidl/toolchain.gni") |
| import("//build/go/toolchain.gni") |
| import("//build/rust/toolchain.gni") |
| |
| # Declares a FIDL library. |
| # |
| # Depending on the toolchain in which this targets is expanded, it will yield |
| # different results: |
| # - in the FIDL toolchain, it will compile its source files into an |
| # intermediate representation consumable by language bindings generators; |
| # - in the target or shared toolchain, this will produce a source_set |
| # containing C++ bindings. |
| # |
| # Parameters |
| # |
| # sources (required) |
| # List of paths to library source files. |
| # |
| # name (optional) |
| # Name of the library. |
| # Defaults to the target's name. |
| # |
| # sdk_category (optional) |
| # Publication level of the library in SDKs. |
| # See //build/sdk/sdk_atom.gni. |
| # |
| # api (optional) |
| # Path to the file representing the API of this library. |
| # This file is used to ensure modifications to the library's API are |
| # explicitly acknowledged. It is mandatory for publication categories of |
| # "partner" or "public". |
| # Defaults to "<target name>.api". |
| |
| template("fidl") { |
| if (defined(invoker.sdk_category)) { |
| not_needed(invoker, [ "sdk_category" ]) |
| } |
| if (defined(invoker.api)) { |
| not_needed(invoker, [ "api" ]) |
| } |
| |
| if (current_toolchain == dart_toolchain) { |
| import("//build/dart/fidl_dart.gni") |
| |
| fidl_dart(target_name) { |
| forward_variables_from(invoker, "*") |
| } |
| } else if (current_toolchain == rust_toolchain) { |
| import("//build/rust/fidl_rust.gni") |
| |
| fidl_rust(target_name) { |
| forward_variables_from(invoker, "*") |
| } |
| } else if (current_toolchain == go_toolchain) { |
| import("//build/go/fidl_go.gni") |
| |
| fidl_go(target_name) { |
| forward_variables_from(invoker, "*") |
| } |
| } else { |
| import("//build/c/fidl_c.gni") |
| |
| if (current_toolchain == fidl_toolchain) { |
| import("//build/fidl/fidl_library.gni") |
| |
| fidl_library(target_name) { |
| forward_variables_from(invoker, "*") |
| } |
| } |
| |
| if (is_fuchsia) { |
| hlcpp_public_deps = [ "//sdk/lib/fidl/cpp" ] |
| llcpp_generators = [ |
| { |
| target_suffix = "llcpp" |
| fidlgen_tool = "//garnet/go/src/fidl:fidlgen_llcpp" |
| fidlgen_generator = "llcpp" |
| output_stem = "llcpp/fidl" |
| additional_public_deps = [ |
| "//zircon/public/lib/fidl", |
| "//zircon/public/lib/fidl-llcpp", |
| ] |
| }, |
| ] |
| } else { |
| hlcpp_public_deps = [ "//sdk/lib/fidl/cpp:cpp_base" ] |
| llcpp_generators = [] |
| } |
| |
| fidl_cpp(target_name) { |
| forward_variables_from(invoker, "*") |
| generators = [ |
| { |
| fidlgen_tool = "//garnet/go/src/fidl:fidlgen" |
| fidlgen_generator = "cpp" |
| output_stem = "cpp/fidl" |
| additional_public_deps = hlcpp_public_deps |
| }, |
| { |
| target_suffix = "overnet_internal" |
| fidlgen_tool = "//garnet/go/src/fidl:fidlgen" |
| fidlgen_generator = "overnet_internal" |
| output_stem = "cpp/overnet_internal" |
| additional_public_deps = |
| hlcpp_public_deps + [ |
| "//src/connectivity/overnet/lib/protocol:fidl_stream", |
| ":$target_name", |
| ] |
| }, |
| { |
| target_suffix = "overnet_embedded" |
| fidlgen_tool = "//garnet/go/src/fidl:fidlgen" |
| fidlgen_generator = "overnet_embedded" |
| output_stem = "cpp/overnet_embedded" |
| additional_public_deps = [ |
| "//src/connectivity/overnet/lib/embedded:runtime", |
| ":$target_name", |
| ] |
| }, |
| ] |
| generators += llcpp_generators |
| } |
| |
| fidl_tables(target_name) { |
| forward_variables_from(invoker, |
| [ |
| "testonly", |
| "visibility", |
| ]) |
| } |
| |
| if (is_fuchsia) { |
| import("//build/rust/fidl_rust_library.gni") |
| |
| # TODO(cramertj): remove pending TC-81. |
| fidl_rust_library(target_name) { |
| forward_variables_from(invoker, "*") |
| } |
| |
| fidl_c_client(target_name) { |
| forward_variables_from(invoker, "*") |
| } |
| |
| fidl_c_server(target_name) { |
| forward_variables_from(invoker, "*") |
| } |
| |
| group("${target_name}_c") { |
| forward_variables_from(invoker, |
| [ |
| "testonly", |
| "visibility", |
| ]) |
| |
| public_deps = [ |
| ":${target_name}_client", |
| ":${target_name}_server", |
| ] |
| } |
| } |
| } |
| } |