| # 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/lib/fdio", |
| "//zircon/public/lib/zx", |
| "//zircon/system/fidl/fuchsia-mem", |
| "//zircon/system/fidl/fuchsia-sysinfo:fuchsia-sysinfo_c", |
| ] |
| } |
| } else if (crashpad_is_in_chromium) { |
| group("fuchsia") { |
| public_deps = [ |
| "//third_party/fuchsia-sdk/sdk:fdio", |
| "//third_party/fuchsia-sdk/sdk:mem", |
| "//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.cc", |
| "$sdk_pkg_path/zx/event.cc", |
| "$sdk_pkg_path/zx/eventpair.cc", |
| "$sdk_pkg_path/zx/fifo.cc", |
| "$sdk_pkg_path/zx/guest.cc", |
| "$sdk_pkg_path/zx/interrupt.cc", |
| "$sdk_pkg_path/zx/job.cc", |
| "$sdk_pkg_path/zx/port.cc", |
| "$sdk_pkg_path/zx/process.cc", |
| "$sdk_pkg_path/zx/resource.cc", |
| "$sdk_pkg_path/zx/socket.cc", |
| "$sdk_pkg_path/zx/thread.cc", |
| "$sdk_pkg_path/zx/timer.cc", |
| "$sdk_pkg_path/zx/vmar.cc", |
| "$sdk_pkg_path/zx/vmo.cc", |
| ] |
| |
| public_configs = [ ":zx_config" ] |
| } |
| |
| source_set("fidl_base") { |
| sources = [ |
| "$sdk_pkg_path/fidl_base/builder.cc", |
| "$sdk_pkg_path/fidl_base/decoding.cc", |
| "$sdk_pkg_path/fidl_base/encoding.cc", |
| "$sdk_pkg_path/fidl_base/envelope_frames.h", |
| "$sdk_pkg_path/fidl_base/formatting.cc", |
| "$sdk_pkg_path/fidl_base/linearizing.cc", |
| "$sdk_pkg_path/fidl_base/message.cc", |
| "$sdk_pkg_path/fidl_base/message_buffer.cc", |
| "$sdk_pkg_path/fidl_base/message_builder.cc", |
| "$sdk_pkg_path/fidl_base/transformer.cc", |
| "$sdk_pkg_path/fidl_base/txn_header.c", |
| "$sdk_pkg_path/fidl_base/validating.cc", |
| "$sdk_pkg_path/fidl_base/visitor.h", |
| "$sdk_pkg_path/fidl_base/walker.cc", |
| "$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", |
| ] |
| |
| 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.c" |
| |
| # 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", |
| ] |
| } |
| } |