blob: f8d382cc44c8c9a47c37c7c902bacf8d1715ffc0 [file] [log] [blame]
# Copyright 2018 The Crashpad Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("../../build/crashpad_buildconfig.gni")
if (crashpad_is_in_fuchsia) {
group("fuchsia") {
public_deps = [
"//zircon/public/fidl/fuchsia-sysinfo:fuchsia-sysinfo_c",
"//zircon/public/lib/fdio",
"//zircon/public/lib/zx",
]
}
} else if (crashpad_is_in_chromium) {
group("fuchsia") {
public_deps = [
"//third_party/fuchsia-sdk/sdk:fdio",
"//third_party/fuchsia-sdk/sdk:sysinfo",
"//third_party/fuchsia-sdk/sdk:zx",
]
}
} else {
sdk_path = "sdk/$host_os-amd64"
sdk_pkg_path = "$sdk_path/pkg"
sdk_fidl_sources_path = "$sdk_path/fidl"
config("zx_config") {
include_dirs = [ "$sdk_pkg_path/zx/include" ]
}
fidl_root_gen_dir = "$root_gen_dir/fidl/include"
config("fidl_config") {
include_dirs = [
fidl_root_gen_dir,
"$sdk_pkg_path/fidl/include",
"$sdk_pkg_path/fidl_base/include",
"$sdk_pkg_path/async/include",
"$sdk_pkg_path/fidl_cpp/include",
"$sdk_pkg_path/fidl_cpp_base/include",
"$sdk_pkg_path/fidl_cpp_sync/include",
"$sdk_pkg_path/fit/include",
]
}
source_set("zx") {
sources = [
"$sdk_pkg_path/zx/channel.cpp",
"$sdk_pkg_path/zx/event.cpp",
"$sdk_pkg_path/zx/eventpair.cpp",
"$sdk_pkg_path/zx/fifo.cpp",
"$sdk_pkg_path/zx/guest.cpp",
"$sdk_pkg_path/zx/interrupt.cpp",
"$sdk_pkg_path/zx/job.cpp",
"$sdk_pkg_path/zx/port.cpp",
"$sdk_pkg_path/zx/process.cpp",
"$sdk_pkg_path/zx/resource.cpp",
"$sdk_pkg_path/zx/socket.cpp",
"$sdk_pkg_path/zx/thread.cpp",
"$sdk_pkg_path/zx/timer.cpp",
"$sdk_pkg_path/zx/vmar.cpp",
"$sdk_pkg_path/zx/vmo.cpp",
]
public_configs = [ ":zx_config" ]
}
source_set("fidl_base") {
sources = [
"$sdk_pkg_path/fidl_base/builder.cpp",
"$sdk_pkg_path/fidl_base/decoding.cpp",
"$sdk_pkg_path/fidl_base/encoding.cpp",
"$sdk_pkg_path/fidl_base/envelope_frames.h",
"$sdk_pkg_path/fidl_base/formatting.cpp",
"$sdk_pkg_path/fidl_base/linearizing.cpp",
"$sdk_pkg_path/fidl_base/message.cpp",
"$sdk_pkg_path/fidl_base/message_buffer.cpp",
"$sdk_pkg_path/fidl_base/message_builder.cpp",
"$sdk_pkg_path/fidl_base/validating.cpp",
"$sdk_pkg_path/fidl_base/visitor.h",
"$sdk_pkg_path/fidl_base/walker.cpp",
"$sdk_pkg_path/fidl_base/walker.h",
]
public_configs = [ ":fidl_config" ]
}
source_set("fidl_cpp_base") {
sources = [
"$sdk_pkg_path/fidl_cpp_base/clone.cc",
"$sdk_pkg_path/fidl_cpp_base/decoder.cc",
"$sdk_pkg_path/fidl_cpp_base/encoder.cc",
"$sdk_pkg_path/fidl_cpp_base/string.cc",
]
public_configs = [
":fidl_config",
":zx_config",
]
}
fidl_sources = [
{
fidl = "$sdk_fidl_sources_path/fuchsia.mem/buffer.fidl"
header_stem = "fuchsia/mem"
library_name = "fuchsia.mem"
},
{
fidl = "$sdk_fidl_sources_path/fuchsia.sysinfo/sysinfo.fidl"
header_stem = "fuchsia/sysinfo"
library_name = "fuchsia.sysinfo"
},
]
foreach(fidl_source, fidl_sources) {
fidl_stem = "$target_gen_dir/fidl/${fidl_source.library_name}"
json_representation = "$fidl_stem/intermediary_representation.json"
c_stem = "$fidl_root_gen_dir/${fidl_source.header_stem}/c"
c_header = "$c_stem/fidl.h"
c_client = "$c_stem/client.cc"
cpp_stem = "$fidl_root_gen_dir/${fidl_source.header_stem}/cpp/fidl"
cpp_header = "$cpp_stem.h"
cpp_source = "$cpp_stem.cc"
coding_tables = "$fidl_stem/tables.cc"
# Compiles the .fidl file, outputs the intermediary JSON representation
# and generates the C bindings.
action("fidlc_${fidl_source.library_name}") {
visibility = [ ":*" ]
script = "runner.py"
args = [
rebase_path("$sdk_path/tools/fidlc", root_build_dir),
"--c-header",
rebase_path(c_header, root_build_dir),
"--c-client",
rebase_path(c_client, root_build_dir),
"--tables",
rebase_path(coding_tables, root_build_dir),
"--json",
rebase_path(json_representation, root_build_dir),
"--name",
fidl_source.library_name,
"--files",
rebase_path(fidl_source.fidl, root_build_dir),
]
inputs = [
"$sdk_path/tools/fidlc",
fidl_source.fidl,
]
outputs = [
c_client,
c_header,
coding_tables,
json_representation,
]
}
# Generates the C++ bindings from the intermediary JSON representation.
action("fidlgen_cpp_${fidl_source.library_name}") {
visibility = [ ":*" ]
script = "runner.py"
args = [
rebase_path("$sdk_path/tools/fidlgen", root_build_dir),
"--json",
rebase_path(json_representation, root_build_dir),
"--include-base",
rebase_path(fidl_root_gen_dir, root_build_dir),
"--output-base",
rebase_path(cpp_stem, root_build_dir),
"--generators",
"cpp",
]
inputs = [
"$sdk_path/tools/fidlgen",
json_representation,
]
outputs = [
cpp_header,
cpp_source,
]
deps = [
":fidlc_${fidl_source.library_name}",
]
}
source_set("${fidl_source.library_name}_tables") {
sources = [
coding_tables,
]
deps = [
":fidlc_${fidl_source.library_name}",
]
public_configs = [ ":fidl_config" ]
}
source_set("${fidl_source.library_name}_c") {
sources = [
c_client,
c_header,
]
deps = [
":${fidl_source.library_name}_tables",
":fidlc_${fidl_source.library_name}",
]
public_configs = [ ":fidl_config" ]
}
source_set("${fidl_source.library_name}_cpp") {
sources = [
cpp_header,
cpp_source,
]
deps = [
":${fidl_source.library_name}_tables",
":fidlgen_cpp_${fidl_source.library_name}",
]
public_configs = [
":fidl_config",
":zx_config",
]
}
}
static_library("fuchsia") {
deps = [
":fidl_base",
":fidl_cpp_base",
":fuchsia.mem_cpp",
":fuchsia.sysinfo_c",
":zx",
]
public_configs = [
":fidl_config",
":zx_config",
]
}
}