mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 10:48:25 +00:00
283051acba
This reverts commit 094202bb91
.
Reason for revert: Break flutter, this change should happen after
flutter being migrated to the same gn-sdk.
Original change's description:
> [Fuchsia] Remove the legacy gn build rules for fuchsia
>
> The updated test-scripts contains https://crrev.com/c/5341620 which
> allows to generate fidl apis with an env var controlled location
> rather than a hard-coded one. So the existing fuchsia gn build rules
> in dart/sdk become obsolete and can be fully removed in favor of the
> one in //third_party/fuchsia/gn-sdk/.
>
> Meanwhile the gn-sdk has been updated with
> https://crrev.com/c/5325282 to use api-level version'ed idk but not
> the ones in arch/.
>
> Cq-Include-Trybots: luci.dart.try:vm-fuchsia-release-arm64-try,vm-fuchsia-release-x64-try
> Tested: ^^^^^
> Bug: 40935282
> Change-Id: I2ce958e6db1ff8221beef7b7ff953c32bb4525ba
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/355283
> Reviewed-by: Ryan Macnak <rmacnak@google.com>
> Reviewed-by: Alexander Thomas <athom@google.com>
> Commit-Queue: Zijie He <zijiehe@google.com>
Bug: 40935282
Change-Id: I7c455d1d362210523671c97d99ef018ede1743f4
Cq-Include-Trybots: luci.dart.try:vm-fuchsia-release-arm64-try,vm-fuchsia-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/356307
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Zijie He <zijiehe@google.com>
Reviewed-by: Derek Xu <derekx@google.com>
Commit-Queue: Zijie He <zijiehe@google.com>
374 lines
11 KiB
Plaintext
374 lines
11 KiB
Plaintext
# Copyright 2013 The Flutter 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/config/fuchsia/gn_configs.gni")
|
|
|
|
declare_args() {
|
|
# The path to where GN targets derived from the Fuchsia SDK are instantiated.
|
|
fuchsia_sdk_root = "//build/fuchsia"
|
|
|
|
# The Flutter buildroot is outside the Fuchsia root and can only use the SDK.
|
|
using_fuchsia_sdk = true
|
|
|
|
# This is set by the dart sources. Once the engine repo switches to using the GN SDK,
|
|
# this flag can be unified with `using_fuchsia_sdk`.
|
|
using_fuchsia_gn_sdk = false
|
|
|
|
# The following variables are Flutter buildroot specific.
|
|
fuchsia_sdk_path = "//third_party/fuchsia/sdk/$host_os"
|
|
fuchsia_toolchain_path = "//buildtools/${host_os}-${host_cpu}/clang"
|
|
}
|
|
|
|
declare_args() {
|
|
# The Skia buildroot uses this flag to decide if it should be using the
|
|
# Fuchsia SDK to build its translation units.
|
|
skia_using_fuchsia_sdk = using_fuchsia_sdk
|
|
}
|
|
|
|
_fuchsia_sdk_path = "//third_party/fuchsia/sdk/$host_os"
|
|
_fuchsia_tools_path = "${_fuchsia_sdk_path}/tools/${host_cpu}"
|
|
|
|
template("_fuchsia_sysroot") {
|
|
assert(defined(invoker.meta), "The meta.json file path must be specified.")
|
|
assert(target_cpu == "x64" || target_cpu == "arm64",
|
|
"We currently only support 'x64' and 'arm64' targets for fuchsia.")
|
|
|
|
meta_json = read_file(invoker.meta, "json")
|
|
|
|
assert(meta_json.type == "sysroot")
|
|
|
|
meta_json_versions = meta_json.versions
|
|
if (target_cpu == "x64") {
|
|
defs = meta_json_versions.x64
|
|
} else {
|
|
defs = meta_json_versions.arm64
|
|
}
|
|
|
|
_libs = []
|
|
_lib_dirs = []
|
|
_include_dirs = []
|
|
|
|
foreach(link_lib, defs.link_libs) {
|
|
if (link_lib != "arch/${target_cpu}/sysroot/lib/Scrt1.o") {
|
|
_libs += [ "$_fuchsia_sdk_path/$link_lib" ]
|
|
}
|
|
}
|
|
|
|
defs_include_dir = defs.include_dir
|
|
_include_dirs += [ "$_fuchsia_sdk_path/$defs_include_dir" ]
|
|
|
|
config_name = "config_$target_name"
|
|
config(config_name) {
|
|
lib_dirs = _lib_dirs
|
|
libs = _libs
|
|
include_dirs = _include_dirs
|
|
}
|
|
|
|
group(target_name) {
|
|
public_configs = [ ":$config_name" ]
|
|
}
|
|
}
|
|
|
|
template("fuchsia_fidl_library") {
|
|
assert(defined(invoker.meta), "The meta.json file path must be specified.")
|
|
assert(target_cpu == "x64" || target_cpu == "arm64",
|
|
"We currently only support 'x64' and 'arm64' targets for fuchsia.")
|
|
|
|
meta_json = read_file(invoker.meta, "json")
|
|
assert(meta_json.type == "fidl_library")
|
|
|
|
_deps = [
|
|
"//build/fuchsia/pkg:fidl_cpp",
|
|
"//build/fuchsia/pkg:fidl_cpp_hlcpp_conversion",
|
|
"//build/fuchsia/pkg:fidl_cpp_natural_ostream",
|
|
"//build/fuchsia/pkg:fidl_cpp_v2",
|
|
"//build/fuchsia/pkg:fidl_cpp_wire",
|
|
]
|
|
|
|
library_name = meta_json.name
|
|
library_name_json = "${meta_json.name}.json"
|
|
|
|
foreach(dep, meta_json.deps) {
|
|
# TODO(https://fxbug.dev/42172334): Make zx less special.
|
|
if (dep != "zx") {
|
|
_deps += [ ":$dep" ]
|
|
}
|
|
}
|
|
|
|
config_name = "config_$target_name"
|
|
config(config_name) {
|
|
include_dirs = [ target_gen_dir ]
|
|
}
|
|
|
|
fidl_gen_target_name = "fidlgen_$target_name"
|
|
action(fidl_gen_target_name) {
|
|
script = "//build/fuchsia/fidl_gen_cpp.py"
|
|
|
|
library_name_slashes = string_replace(library_name, ".", "/")
|
|
|
|
inputs = [ invoker.meta ]
|
|
|
|
args = [
|
|
"--fidlc-bin",
|
|
rebase_path("${_fuchsia_tools_path}/fidlc"),
|
|
"--sdk-base",
|
|
rebase_path(_fuchsia_sdk_path),
|
|
"--root",
|
|
rebase_path(invoker.meta),
|
|
"--json",
|
|
rebase_path("$target_gen_dir/$library_name_json"),
|
|
]
|
|
|
|
if (fuchsia_target_api_level != -1) {
|
|
args += [
|
|
"--target-api-level",
|
|
"${fuchsia_target_api_level}",
|
|
]
|
|
}
|
|
|
|
outputs = [
|
|
"$target_gen_dir/$library_name_slashes/cpp/fidl.cc",
|
|
"$target_gen_dir/$library_name_slashes/cpp/fidl.h",
|
|
"$target_gen_dir/$library_name_slashes/cpp/fidl_test_base.h",
|
|
"$target_gen_dir/$library_name_slashes/cpp/tables.c",
|
|
|
|
"$target_gen_dir/fidl/$library_name/cpp/common_types.cc",
|
|
"$target_gen_dir/fidl/$library_name/cpp/common_types.h",
|
|
"$target_gen_dir/fidl/$library_name/cpp/fidl.h",
|
|
"$target_gen_dir/fidl/$library_name/cpp/hlcpp_conversion.h",
|
|
"$target_gen_dir/fidl/$library_name/cpp/markers.h",
|
|
"$target_gen_dir/fidl/$library_name/cpp/natural_messaging.cc",
|
|
"$target_gen_dir/fidl/$library_name/cpp/natural_messaging.h",
|
|
"$target_gen_dir/fidl/$library_name/cpp/natural_ostream.cc",
|
|
"$target_gen_dir/fidl/$library_name/cpp/natural_ostream.h",
|
|
"$target_gen_dir/fidl/$library_name/cpp/natural_types.cc",
|
|
"$target_gen_dir/fidl/$library_name/cpp/natural_types.h",
|
|
"$target_gen_dir/fidl/$library_name/cpp/type_conversions.cc",
|
|
"$target_gen_dir/fidl/$library_name/cpp/type_conversions.h",
|
|
"$target_gen_dir/fidl/$library_name/cpp/wire.h",
|
|
"$target_gen_dir/fidl/$library_name/cpp/wire_messaging.cc",
|
|
"$target_gen_dir/fidl/$library_name/cpp/wire_messaging.h",
|
|
"$target_gen_dir/fidl/$library_name/cpp/wire_test_base.h",
|
|
"$target_gen_dir/fidl/$library_name/cpp/wire_types.cc",
|
|
"$target_gen_dir/fidl/$library_name/cpp/wire_types.h",
|
|
]
|
|
|
|
args += [
|
|
"--fidlgen-bin",
|
|
rebase_path("${_fuchsia_tools_path}/fidlgen_cpp"),
|
|
"--fidlgen-bin",
|
|
rebase_path("${_fuchsia_tools_path}/fidlgen_hlcpp"),
|
|
"--fidlgen-output-root",
|
|
rebase_path("$target_gen_dir"),
|
|
]
|
|
}
|
|
|
|
source_set(target_name) {
|
|
public_configs = [ ":$config_name" ]
|
|
|
|
sources = get_target_outputs(":$fidl_gen_target_name")
|
|
|
|
deps = [ ":$fidl_gen_target_name" ]
|
|
|
|
public_deps = _deps
|
|
}
|
|
}
|
|
|
|
template("_fuchsia_cc_source_library") {
|
|
assert(defined(invoker.meta), "The meta.json file path must be specified.")
|
|
|
|
meta_json = read_file(invoker.meta, "json")
|
|
|
|
assert(meta_json.type == "cc_source_library")
|
|
|
|
_output_name = meta_json.name
|
|
_include_dirs = []
|
|
_public_headers = []
|
|
_sources = []
|
|
_deps = []
|
|
|
|
meta_json_include_dir = meta_json.include_dir
|
|
_include_dirs += [ "$_fuchsia_sdk_path/$meta_json_include_dir" ]
|
|
|
|
foreach(header, meta_json.headers) {
|
|
rebased_header = []
|
|
rebased_header = [ "$_fuchsia_sdk_path/$header" ]
|
|
_public_headers += rebased_header
|
|
_sources += rebased_header
|
|
}
|
|
|
|
foreach(source, meta_json.sources) {
|
|
_sources += [ "$_fuchsia_sdk_path/$source" ]
|
|
}
|
|
|
|
config_name = "config_$target_name"
|
|
config(config_name) {
|
|
include_dirs = _include_dirs
|
|
}
|
|
|
|
foreach(dep, meta_json.deps) {
|
|
_deps += [ "../pkg:$dep" ]
|
|
}
|
|
|
|
foreach(dep, meta_json.fidl_deps) {
|
|
_deps += [ "../fidl:$dep" ]
|
|
}
|
|
|
|
foreach(binding_dep, meta_json.fidl_binding_deps) {
|
|
# No need to check "binding_deps.binding_type" because we always
|
|
# generate both hlcpp and natural bindings.
|
|
foreach(dep, binding_dep.deps) {
|
|
_deps += [ "../fidl:$dep" ]
|
|
}
|
|
}
|
|
|
|
source_set(target_name) {
|
|
output_name = _output_name
|
|
public = _public_headers
|
|
sources = _sources
|
|
public_configs = [ ":$config_name" ]
|
|
public_deps = _deps
|
|
}
|
|
}
|
|
|
|
template("_fuchsia_cc_prebuilt_library") {
|
|
assert(defined(invoker.meta), "The meta.json file path must be specified.")
|
|
meta_json = read_file(invoker.meta, "json")
|
|
|
|
_include_dirs = []
|
|
_deps = []
|
|
_libs = []
|
|
|
|
meta_json_include_dir = meta_json.include_dir
|
|
_include_dirs += [ "$_fuchsia_sdk_path/$meta_json_include_dir" ]
|
|
|
|
foreach(dep, meta_json.deps) {
|
|
_deps += [ ":$dep" ]
|
|
}
|
|
|
|
meta_json_binaries = meta_json.binaries
|
|
if (target_cpu == "x64") {
|
|
meta_json_binaries_arch = meta_json_binaries.x64
|
|
} else {
|
|
meta_json_binaries_arch = meta_json_binaries.arm64
|
|
}
|
|
prebuilt_lib = meta_json_binaries_arch.link
|
|
_libs = [ "$_fuchsia_sdk_path/$prebuilt_lib" ]
|
|
|
|
if (meta_json.format == "shared") {
|
|
copy("${target_name}_dist_libs") {
|
|
sources = [ "$_fuchsia_sdk_path/${meta_json_binaries_arch.dist}" ]
|
|
outputs = [ "${root_out_dir}/${meta_json_binaries_arch.dist_path}" ]
|
|
}
|
|
}
|
|
|
|
config_name = "config_$target_name"
|
|
config(config_name) {
|
|
include_dirs = _include_dirs
|
|
libs = _libs
|
|
}
|
|
|
|
group(target_name) {
|
|
public_configs = [ ":$config_name" ]
|
|
public_deps = _deps
|
|
if (meta_json.format == "shared") {
|
|
data_deps = [ ":${target_name}_dist_libs" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
template("fuchsia_sdk") {
|
|
assert(defined(invoker.meta), "The meta.json file path must be specified.")
|
|
assert(defined(invoker.enabled_parts),
|
|
"A list containing the parts of the SDK to generate targets for.")
|
|
|
|
meta_json = read_file(invoker.meta, "json")
|
|
|
|
foreach(part, meta_json.parts) {
|
|
part_meta_json = {
|
|
}
|
|
part_meta = part.meta
|
|
part_meta_rebased = "$_fuchsia_sdk_path/$part_meta"
|
|
|
|
# Check if the part is using `part.element_type` or `part.type`.
|
|
part_type = ""
|
|
if (defined(part.element_type)) {
|
|
part_type = part.element_type
|
|
} else if (defined(part.type)) {
|
|
part_type = part.type
|
|
}
|
|
|
|
# Check if the part type is in `invoker.enabled_parts`.
|
|
if (invoker.enabled_parts + [ part_type ] - [ part_type ] !=
|
|
invoker.enabled_parts) {
|
|
part_meta_json = read_file(part_meta_rebased, "json")
|
|
subtarget_name = part_meta_json.name
|
|
|
|
if (part_type == "cc_source_library") {
|
|
_fuchsia_cc_source_library(subtarget_name) {
|
|
meta = part_meta_rebased
|
|
}
|
|
} else if (part_type == "sysroot") {
|
|
_fuchsia_sysroot(subtarget_name) {
|
|
meta = part_meta_rebased
|
|
}
|
|
} else if (part_type == "fidl_library") {
|
|
# TODO(https://fxbug.dev/42172334): Make zx less special.
|
|
if (subtarget_name != "zx") {
|
|
fuchsia_fidl_library(subtarget_name) {
|
|
meta = part_meta_rebased
|
|
}
|
|
}
|
|
} else if (part_type == "cc_prebuilt_library") {
|
|
_fuchsia_cc_prebuilt_library(subtarget_name) {
|
|
meta = part_meta_rebased
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
group(target_name) {
|
|
}
|
|
}
|
|
|
|
template("fuchsia_repo") {
|
|
assert(defined(invoker.archives),
|
|
"The list of archives to publish must be specified.")
|
|
assert(defined(invoker.repo), "The location of the repo should be specified.")
|
|
|
|
action(target_name) {
|
|
script = "//flutter/tools/fuchsia/gen_repo.py"
|
|
|
|
pm_binary = rebase_path("${_fuchsia_tools_path}/pm")
|
|
repo_directory = invoker.repo
|
|
|
|
inputs = [ pm_binary ]
|
|
|
|
archive_flags = []
|
|
|
|
foreach(archive, invoker.archives) {
|
|
assert(get_path_info(archive, "extension") == "far",
|
|
"Archive '$archive' does not have the .far extension.")
|
|
inputs += [ archive ]
|
|
archive_flags += [
|
|
"--archive",
|
|
rebase_path(archive),
|
|
]
|
|
}
|
|
|
|
outputs = [ repo_directory ]
|
|
|
|
args = [
|
|
"--pm-bin",
|
|
pm_binary,
|
|
"--repo-dir",
|
|
rebase_path(repo_directory),
|
|
] + archive_flags
|
|
|
|
if (defined(invoker.deps)) {
|
|
deps = invoker.deps
|
|
}
|
|
}
|
|
}
|