blob: 6c060bbd3d6fb0af0663734cee67ea695311642e [file] [log] [blame]
# Copyright 2022 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/sdk_source_set.gni")
# Header-only library for transaction header utilities.
#
# If an early bootstrapping library cannot be built with sanitizers, it may
# depend on this library to initialize and validate transaction headers, as
# opposed to `fidl_base` which might be built with sanitizers, or manually
# initializing transaction headers which is brittle.
source_set("fidl_txn_header") {
public = [ "include/lib/fidl/txn_header.h" ]
public_deps = [ "//src/zircon/lib/zircon" ]
public_configs = [ ":fidl_base.headers" ]
}
# Base library used by both Fuchsia and host
#
# "fidl_base" is used in low-level contexts such as early system
# boot, hence cannot depend on the C++ standard library, and must only introduce
# minimal symbols into dependent targets. As such, these libraries need to be
# static libraries rather than source sets, as we need the Unix librarian
# algorithm to apply so that only object files corresponding to the used
# functions will be linked to the final binary.
sdk_source_set("fidl_base") {
category = "partner"
api = "//sdk/lib/fidl_base/fidl_base.api"
sdk_name = "fidl_base"
# TODO(https://fxbug.dev/42172264): We should represent the library as a
# `sdk_static_library` when supported.
build_as_static = true
public = [
"include/lib/fidl/coding.h",
"include/lib/fidl/cpp/framework_err.h",
"include/lib/fidl/cpp/transaction_header.h",
"include/lib/fidl/cpp/wire_format_metadata.h",
"include/lib/fidl/internal.h",
"include/lib/fidl/internal_callable_traits.h",
"include/lib/fidl/txn_header.h",
"include/lib/fidl/visitor.h",
"include/lib/fidl/walker.h",
]
sources = [
"decoding_and_validating.cc",
"formatting.cc",
"handle_close_many.cc",
"internal.c",
"wire_format_metadata.cc",
]
deps = [
"//sdk/lib/fit",
"//sdk/lib/stdcompat",
"//sdk/lib/utf-utils",
]
public_deps = [ "//src/zircon/lib/zircon" ]
# TODO(https://fxbug.dev/42052612): GN check fails without this condition.
if (zircon_toolchain != false) {
public_deps += [ "//zircon/system/public" ]
}
public_configs = [ ":fidl_base.headers" ]
if (is_fuchsia) {
configs += [ "//build/config/fuchsia:no_cpp_standard_library" ]
}
}
config("fidl_base.headers") {
include_dirs = [ "include" ]
}