blob: c83f68213bf37184bf4896b6b0ebc75e29aba1f1 [file] [log] [blame]
# 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("//build/zircon/migrated_targets.gni")
config("fidlc_config") {
defines = []
if (defined(fidlc_deprecate_c_unions) && fidlc_deprecate_c_unions) {
defines += [ "FIDLC_DEPRECATE_C_UNIONS" ]
}
}
if (zx != "/") {
group("headers") {
public_configs = [ ":headers.config" ]
}
config("headers.config") {
include_dirs = [ "include" ]
}
}
zx_library("fidl") {
host = true
sdk = "source"
sdk_headers = []
sdk_migrated = true
sources = [
"lib/attributes.cc",
"lib/c_generator.cc",
"lib/check.cc",
"lib/coded_types_generator.cc",
"lib/diagnostic_types.cc",
"lib/diagnostics_json.cc",
"lib/experimental_flags.cc",
"lib/findings_json.cc",
"lib/flat_ast.cc",
"lib/formatter.cc",
"lib/json_generator.cc",
"lib/lexer.cc",
"lib/linter.cc",
"lib/linting_tree_callbacks.cc",
"lib/names.cc",
"lib/ordinals.cc",
"lib/parser.cc",
"lib/raw_ast.cc",
"lib/reporter.cc",
"lib/source_file.cc",
"lib/source_manager.cc",
"lib/source_span.cc",
"lib/tables_generator.cc",
"lib/template_string.cc",
"lib/tree_visitor.cc",
"lib/type_shape.cc",
"lib/utils.cc",
"lib/virtual_source_file.cc",
]
public_deps = [
"$zx/system/ulib/cmdline:headers",
"$zx/system/ulib/fit:headers",
"$zx/third_party/ulib/safemath",
]
deps = [
":json_schema",
"$zx/system/ulib/cmdline",
"$zx/system/ulib/fit",
]
if (zx == "/") {
deps += [ "$zx/third_party/ulib/boringssl" ]
} else {
deps += [ "//third_party/boringssl" ]
}
if (zx == "/") {
assert_no_deps = [ "//zircon/system/public" ]
}
configs += [ ":fidlc_config" ]
}
source_set("json_schema") {
visibility = [ ":*" ]
sources = [ "$target_gen_dir/json_schema.cc" ]
deps = [
":gen-json-schema",
":headers",
]
}
action("gen-json-schema") {
visibility = [ ":json_schema" ]
outputs = [ "$target_gen_dir/json_schema.cc" ]
sources = [ "schema.json" ]
script = "gen-json-schema.sh"
args = rebase_path(outputs, root_build_dir) +
rebase_path(sources, root_build_dir)
}
group("tools") {
if (current_os != "fuchsia") {
deps = [
":fidl-format",
":fidl-lint",
":fidlc",
]
}
}
if (current_os != "fuchsia") {
zx_host_tool("fidlc") {
sources = [ "compiler/main.cc" ]
deps = [ ":fidl" ]
sdk_migrated = true
}
zx_host_tool("fidl-format") {
sources = [ "formatter/main.cc" ]
deps = [ ":fidl" ]
sdk_migrated = true
}
zx_host_tool("fidl-lint") {
sources = [
"linter/command_line_options.cc",
"linter/main.cc",
]
deps = [ ":fidl" ]
sdk_migrated = true
}
template("fidlgen_executable") {
assert(current_os != "fuchsia")
assert(defined(invoker.go_path))
assert(defined(invoker.go_package))
if (defined(invoker.output_name)) {
output_name = invoker.output_name
} else {
output_name = target_name
}
output_path = "${target_gen_dir}/${output_name}"
depfile_path = "${output_path}.d"
go_root = "$zx/../prebuilt/third_party/go/${host_platform}"
go_executable = "${go_root}/bin/go"
godepfile_executable =
"$zx/../prebuilt/tools/godepfile/${host_platform}/godepfile"
go_cache = "${root_build_dir}/gocache"
if (current_os == "mac") {
go_os = "darwin"
} else {
go_os = current_os
}
if (current_cpu == "x64") {
go_arch = "amd64"
} else {
go_arch = current_cpu
}
action(target_name) {
script = "build_fidlgen_executable.sh"
# go_root, go_path, go_cache must be absolute.
args = [
rebase_path(go_executable, root_build_dir),
rebase_path(godepfile_executable, root_build_dir),
rebase_path(go_root),
rebase_path(invoker.go_path),
invoker.go_package,
go_os,
go_arch,
rebase_path(depfile_path, root_build_dir),
rebase_path(output_path, root_build_dir),
rebase_path(go_cache),
]
depfile = depfile_path
inputs = [
go_executable,
godepfile_executable,
]
outputs = [ output_path ]
# See host_tool_action().
metadata = {
# Dependencies come before the "--".
host_tool_rspfile = rebase_path(inputs, root_build_dir)
host_tool_rspfile += [ "--" ]
# The command line to run comes after the "--".
host_tool_rspfile += [ rebase_path(output_path, root_build_dir) ]
}
}
}
fidlgen_executable("fidlgen_llcpp") {
go_path = "$zx/../tools/fidl/fidlgen_llcpp"
go_package = "fidl/compiler/llcpp_backend"
}
}