Roll Fuchsia SDK to 18.20240208.2.1.

Sync build setup from Flutter.

Change-Id: Ic7958dc42a79b7d2acd3f5279f816333ca31299e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/351242
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
This commit is contained in:
Ryan Macnak 2024-02-12 18:18:01 +00:00 committed by Commit Queue
parent a2574f28d3
commit 9f7dbd6b4d
4 changed files with 115 additions and 128 deletions

2
DEPS
View file

@ -84,7 +84,7 @@ vars = {
"reclient_version": "git_revision:f3883c2237b0eb9cc9524cb571b5ab8378f257e4", "reclient_version": "git_revision:f3883c2237b0eb9cc9524cb571b5ab8378f257e4",
# Update from https://chrome-infra-packages.appspot.com/p/fuchsia/sdk/core # Update from https://chrome-infra-packages.appspot.com/p/fuchsia/sdk/core
"fuchsia_sdk_version": "version:17.20240105.3.1", "fuchsia_sdk_version": "version:18.20240208.2.1",
"download_fuchsia_deps": False, "download_fuchsia_deps": False,
# Ninja, runs the build based on files generated by GN. # Ninja, runs the build based on files generated by GN.

View file

@ -3,10 +3,12 @@
# Copyright 2013 The Flutter Authors. All rights reserved. # Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
""" Generate C/C++ headers and source files from the set of FIDL files specified """ Generate C/C++ headers and source files from the set of FIDL files specified
in the meta.json manifest. in the meta.json manifest.
""" """
import argparse import argparse
import collections import collections
import json import json
@ -14,103 +16,84 @@ import os
import subprocess import subprocess
import sys import sys
def GetFIDLFilesRecursive(libraries, sdk_base, path): def GetFIDLFilesRecursive(libraries, sdk_base, path):
with open(path) as json_file: with open(path) as json_file:
parsed = json.load(json_file) parsed = json.load(json_file)
result = [] result = []
deps = parsed['deps'] deps = parsed['deps']
for dep in deps: for dep in deps:
dep_meta_json = os.path.abspath('%s/fidl/%s/meta.json' % dep_meta_json = os.path.abspath('%s/fidl/%s/meta.json' % (sdk_base, dep))
(sdk_base, dep)) GetFIDLFilesRecursive(libraries, sdk_base, dep_meta_json)
GetFIDLFilesRecursive(libraries, sdk_base, dep_meta_json) libraries[parsed['name']] = result + parsed['sources']
libraries[parsed['name']] = result + parsed['sources']
def GetFIDLFilesByLibraryName(sdk_base, root): def GetFIDLFilesByLibraryName(sdk_base, root):
libraries = collections.OrderedDict() libraries = collections.OrderedDict()
GetFIDLFilesRecursive(libraries, sdk_base, root) GetFIDLFilesRecursive(libraries, sdk_base, root)
return libraries return libraries
def main(): def main():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser();
parser.add_argument('--fidlc-bin', parser.add_argument('--fidlc-bin', dest='fidlc_bin', action='store', required=True)
dest='fidlc_bin', parser.add_argument('--fidlgen-bin', dest='fidlgen_bin', action='append', required=False)
action='store',
required=True)
parser.add_argument('--fidlgen-bin',
dest='fidlgen_bin',
action='append',
required=False)
parser.add_argument('--sdk-base', parser.add_argument('--sdk-base', dest='sdk_base', action='store', required=True)
dest='sdk_base', parser.add_argument('--root', dest='root', action='store', required=True)
action='store', parser.add_argument('--json', dest='json', action='store', required=True)
required=True) parser.add_argument('--fidlgen-output-root', dest='fidlgen_output_root', action='store', required=False)
parser.add_argument('--root', dest='root', action='store', required=True) parser.add_argument('--target-api-level', dest='target_api_level', action='store', required=False)
parser.add_argument('--json', dest='json', action='store', required=True)
parser.add_argument('--fidlgen-output-root',
dest='fidlgen_output_root',
action='store',
required=False)
parser.add_argument('--output-c-tables',
dest='output_c_tables',
action='store',
required=True)
parser.add_argument('--target-api-level',
dest='target_api_level',
action='store',
required=False)
args = parser.parse_args() args = parser.parse_args()
assert os.path.exists(args.fidlc_bin) assert os.path.exists(args.fidlc_bin)
fidl_files_by_name = GetFIDLFilesByLibraryName(args.sdk_base, args.root) fidl_files_by_name = GetFIDLFilesByLibraryName(args.sdk_base, args.root)
fidlc_command = [ fidlc_command = [
args.fidlc_bin, '--tables', args.output_c_tables, '--json', args.json args.fidlc_bin,
'--json',
args.json
]
if args.target_api_level:
fidlc_command += [
'--available',
'fuchsia:{api_level}'.format(api_level=args.target_api_level),
] ]
if args.target_api_level: # Create an iterator that works on both python3 and python2
fidlc_command += [ try:
'--available', fidl_files_by_name_iter = list(fidl_files_by_name.items())
'fuchsia:{api_level}'.format(api_level=args.target_api_level), except AttributeError:
] fidl_files_by_name_iter = iter(fidl_files_by_name.items())
# Create an iterator that works on both python3 and python2 for _, fidl_files in fidl_files_by_name_iter:
try: fidlc_command.append('--files')
fidl_files_by_name_iter = list(fidl_files_by_name.items()) for fidl_file in fidl_files:
except AttributeError: fidl_abspath = os.path.abspath('%s/%s' % (args.sdk_base, fidl_file))
fidl_files_by_name_iter = iter(fidl_files_by_name.items()) fidlc_command.append(fidl_abspath)
for _, fidl_files in fidl_files_by_name_iter: subprocess.check_call(fidlc_command)
fidlc_command.append('--files')
for fidl_file in fidl_files:
fidl_abspath = os.path.abspath('%s/%s' % (args.sdk_base, fidl_file))
fidlc_command.append(fidl_abspath)
subprocess.check_call(fidlc_command) if args.fidlgen_output_root:
assert os.path.exists(args.json)
for fidlgen_bin in args.fidlgen_bin:
assert os.path.exists(fidlgen_bin)
if args.fidlgen_output_root: fidlgen_command = [
assert os.path.exists(args.json) fidlgen_bin,
for fidlgen_bin in args.fidlgen_bin: '-json',
assert os.path.exists(fidlgen_bin) args.json,
'-root',
args.fidlgen_output_root
]
fidlgen_command = [ subprocess.check_call(fidlgen_command)
fidlgen_bin, '-json', args.json, '-root', else:
args.fidlgen_output_root # --fidlgen-bin and --fidlgen-output-root should be passed in together.
] assert not args.fidlgen_bin
subprocess.check_call(fidlgen_command)
else:
# --fidlgen-bin and --fidlgen-output-root should be passed in together.
assert not args.fidlgen_bin
return 0
return 0
if __name__ == '__main__': if __name__ == '__main__':
sys.exit(main()) sys.exit(main())

View file

@ -90,7 +90,10 @@ template("fuchsia_fidl_library") {
library_name_json = "${meta_json.name}.json" library_name_json = "${meta_json.name}.json"
foreach(dep, meta_json.deps) { foreach(dep, meta_json.deps) {
_deps += [ ":$dep" ] # TODO(https://fxbug.dev/42172334): Make zx less special.
if (dep != "zx") {
_deps += [ ":$dep" ]
}
} }
config_name = "config_$target_name" config_name = "config_$target_name"
@ -106,8 +109,6 @@ template("fuchsia_fidl_library") {
inputs = [ invoker.meta ] inputs = [ invoker.meta ]
outputs = [ "$target_gen_dir/$library_name_slashes/cpp/tables.c" ]
args = [ args = [
"--fidlc-bin", "--fidlc-bin",
rebase_path("${_fuchsia_tools_path}/fidlc"), rebase_path("${_fuchsia_tools_path}/fidlc"),
@ -117,8 +118,6 @@ template("fuchsia_fidl_library") {
rebase_path(invoker.meta), rebase_path(invoker.meta),
"--json", "--json",
rebase_path("$target_gen_dir/$library_name_json"), rebase_path("$target_gen_dir/$library_name_json"),
"--output-c-tables",
rebase_path("$target_gen_dir/$library_name_slashes/cpp/tables.c"),
] ]
if (fuchsia_target_api_level != -1) { if (fuchsia_target_api_level != -1) {
@ -128,43 +127,41 @@ template("fuchsia_fidl_library") {
] ]
} }
if (!defined(invoker.only_generate_tables) || outputs = [
!invoker.only_generate_tables) { "$target_gen_dir/$library_name_slashes/cpp/fidl.cc",
outputs += [ "$target_gen_dir/$library_name_slashes/cpp/fidl.h",
"$target_gen_dir/$library_name_slashes/cpp/fidl.cc", "$target_gen_dir/$library_name_slashes/cpp/fidl_test_base.h",
"$target_gen_dir/$library_name_slashes/cpp/fidl.h", "$target_gen_dir/$library_name_slashes/cpp/tables.c",
"$target_gen_dir/$library_name_slashes/cpp/fidl_test_base.h",
"$target_gen_dir/fidl/$library_name/cpp/common_types.cc", "$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/common_types.h",
"$target_gen_dir/fidl/$library_name/cpp/fidl.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/hlcpp_conversion.h",
"$target_gen_dir/fidl/$library_name/cpp/markers.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.cc",
"$target_gen_dir/fidl/$library_name/cpp/natural_messaging.h", "$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.cc",
"$target_gen_dir/fidl/$library_name/cpp/natural_ostream.h", "$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.cc",
"$target_gen_dir/fidl/$library_name/cpp/natural_types.h", "$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.cc",
"$target_gen_dir/fidl/$library_name/cpp/type_conversions.h", "$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.h",
"$target_gen_dir/fidl/$library_name/cpp/wire_messaging.cc", "$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_messaging.h",
"$target_gen_dir/fidl/$library_name/cpp/wire_test_base.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.cc",
"$target_gen_dir/fidl/$library_name/cpp/wire_types.h", "$target_gen_dir/fidl/$library_name/cpp/wire_types.h",
] ]
args += [ args += [
"--fidlgen-bin", "--fidlgen-bin",
rebase_path("${_fuchsia_tools_path}/fidlgen_cpp"), rebase_path("${_fuchsia_tools_path}/fidlgen_cpp"),
"--fidlgen-bin", "--fidlgen-bin",
rebase_path("${_fuchsia_tools_path}/fidlgen_hlcpp"), rebase_path("${_fuchsia_tools_path}/fidlgen_hlcpp"),
"--fidlgen-output-root", "--fidlgen-output-root",
rebase_path("$target_gen_dir"), rebase_path("$target_gen_dir"),
] ]
}
} }
source_set(target_name) { source_set(target_name) {
@ -218,6 +215,14 @@ template("_fuchsia_cc_source_library") {
_deps += [ "../fidl:$dep" ] _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) { source_set(target_name) {
output_name = _output_name output_name = _output_name
public = _public_headers public = _public_headers
@ -309,12 +314,11 @@ template("fuchsia_sdk") {
meta = part_meta_rebased meta = part_meta_rebased
} }
} else if (part_type == "fidl_library") { } else if (part_type == "fidl_library") {
fuchsia_fidl_library(subtarget_name) { # TODO(https://fxbug.dev/42172334): Make zx less special.
meta = part_meta_rebased if (subtarget_name != "zx") {
fuchsia_fidl_library(subtarget_name) {
# TODO(fxbug.dev/90838): Remove the zx special-case when generic meta = part_meta_rebased
# option is available. }
only_generate_tables = subtarget_name == "zx"
} }
} else if (part_type == "cc_prebuilt_library") { } else if (part_type == "cc_prebuilt_library") {
_fuchsia_cc_prebuilt_library(subtarget_name) { _fuchsia_cc_prebuilt_library(subtarget_name) {
@ -334,7 +338,7 @@ template("fuchsia_repo") {
assert(defined(invoker.repo), "The location of the repo should be specified.") assert(defined(invoker.repo), "The location of the repo should be specified.")
action(target_name) { action(target_name) {
script = "//tools/fuchsia/gen_repo.py" script = "//flutter/tools/fuchsia/gen_repo.py"
pm_binary = rebase_path("${_fuchsia_tools_path}/pm") pm_binary = rebase_path("${_fuchsia_tools_path}/pm")
repo_directory = invoker.repo repo_directory = invoker.repo

View file

@ -235,7 +235,7 @@ def ToGnArgs(args, mode, arch, target_os, sanitizer, verify_sdk_hash,
gn_args['arm_float_abi'] = floatabi gn_args['arm_float_abi'] = floatabi
gn_args['arm_use_neon'] = True gn_args['arm_use_neon'] = True
if gn_args['target_os'] == 'fuchsia': if gn_args['target_os'] == 'fuchsia':
gn_args['fuchsia_target_api_level'] = 15 gn_args['fuchsia_target_api_level'] = 16
gn_args['is_debug'] = mode == 'debug' gn_args['is_debug'] = mode == 'debug'
gn_args['is_release'] = mode == 'release' gn_args['is_release'] = mode == 'release'