-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge f7c2ef5 into dev
- Loading branch information
Showing
40 changed files
with
3,248 additions
and
2,328 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
# Copyright 2019 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/config/fuchsia/gn_configs.gni") | ||
|
||
config("compiler") { | ||
sdk_version = "${fuchsia_sdk_id}" | ||
defines = [ | ||
# To force full builds after SDK updates in case of ABI changes. | ||
"FUCHSIA_SDK_VERSION=$sdk_version", | ||
] | ||
cflags = [] | ||
ldflags = [] | ||
if (current_cpu == "arm64") { | ||
cflags += [ "--target=aarch64-fuchsia" ] | ||
} else if (current_cpu == "x64") { | ||
cflags += [ "--target=x86_64-fuchsia" ] | ||
} else { | ||
assert(false, "Unsupported architecture") | ||
} | ||
|
||
# Pass the target API level to the compiler if specified. | ||
if (fuchsia_target_api_level != -1) { | ||
cflags += [ "-ffuchsia-api-level=${fuchsia_target_api_level}" ] | ||
} | ||
|
||
# Add libfdio by default. This may change in future versions | ||
# in order to move away from POSIX applications and towards | ||
# the Fuchsia programming model. | ||
ldflags += [ | ||
# We always want fdio or else e.g. stdio wouldn't be initialized if fdio | ||
# happens to not be directly referenced. The common POSIX-y compiler setup | ||
# uses -Wl,--as-needed which drops it if it's simply "-lfdio" from a libs | ||
# setting. Disable --as-needed, add fdio, and then set back to --as-needed. | ||
"-Wl,--no-as-needed", | ||
"-lfdio", | ||
"-Wl,--as-needed", | ||
] | ||
|
||
lib_dirs = [ "${fuchsia_sdk}/arch/${current_cpu}/lib" ] | ||
|
||
libs = [ "zircon" ] | ||
|
||
ldflags += cflags | ||
asmflags = cflags | ||
} | ||
|
||
# This should be applied to all targets. | ||
config("runtime_library") { | ||
asmflags = [] | ||
cflags = [] | ||
cflags_c = [] | ||
cflags_cc = [] | ||
cflags_objc = [] | ||
cflags_objcc = [] | ||
defines = [] | ||
ldflags = [] | ||
|
||
sysroot = "${fuchsia_sdk}/arch/$current_cpu/sysroot" | ||
|
||
# Pass the sysroot to all C compiler variants, the assembler, and linker. | ||
cflags = [ "--sysroot=" + rebase_path(sysroot, root_build_dir) ] | ||
ldflags = cflags | ||
asmflags = cflags | ||
} | ||
|
||
# Copy the loader to place it at the expected path in the final package. | ||
copy("sysroot_dist_libs") { | ||
sources = [ "${fuchsia_sdk}/arch/${target_cpu}/sysroot/dist/lib/ld.so.1" ] | ||
outputs = [ "${root_out_dir}/lib/{{source_file_part}}" ] | ||
} | ||
|
||
# This adds the runtime deps for //build/config/compiler:runtime_library | ||
# as that is a config target and thus cannot include data_deps. | ||
group("runtime_library_group") { | ||
data_deps = [ | ||
":sysroot_dist_libs", | ||
|
||
# This is used directly from //build/config/fuchsia:compiler and thus | ||
# also needs to be included by default. | ||
# "${fuchsia_sdk}/pkg/fdio", | ||
] | ||
} | ||
|
||
config("sdk_lib_dirs_config") { | ||
visibility = [ "${fuchsia_sdk}/*" ] | ||
lib_dirs = [ "arch/${target_cpu}/lib" ] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# 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. | ||
|
||
assert(is_fuchsia) | ||
import("//build/fuchsia/sdk.gni") | ||
|
||
fuchsia_sdk("fidl") { | ||
meta = "$fuchsia_sdk_path/meta/manifest.json" | ||
enabled_parts = [ "fidl_library" ] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
#!/usr/bin/env python3 | ||
# | ||
# 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. | ||
|
||
""" Generate C/C++ headers and source files from the set of FIDL files specified | ||
in the meta.json manifest. | ||
""" | ||
|
||
|
||
import argparse | ||
import collections | ||
import json | ||
import os | ||
import subprocess | ||
import sys | ||
|
||
def GetFIDLFilesRecursive(libraries, sdk_base, path): | ||
with open(path) as json_file: | ||
parsed = json.load(json_file) | ||
result = [] | ||
deps = parsed['deps'] | ||
for dep in deps: | ||
dep_meta_json = os.path.abspath('%s/fidl/%s/meta.json' % (sdk_base, dep)) | ||
GetFIDLFilesRecursive(libraries, sdk_base, dep_meta_json) | ||
libraries[parsed['name']] = result + parsed['sources'] | ||
|
||
def GetFIDLFilesByLibraryName(sdk_base, root): | ||
libraries = collections.OrderedDict() | ||
GetFIDLFilesRecursive(libraries, sdk_base, root) | ||
return libraries | ||
|
||
def main(): | ||
parser = argparse.ArgumentParser(); | ||
|
||
parser.add_argument('--fidlc-bin', dest='fidlc_bin', action='store', required=True) | ||
parser.add_argument('--fidlgen-bin', dest='fidlgen_bin', action='append', required=False) | ||
|
||
parser.add_argument('--sdk-base', dest='sdk_base', action='store', required=True) | ||
parser.add_argument('--root', dest='root', action='store', required=True) | ||
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('--target-api-level', dest='target_api_level', action='store', required=False) | ||
|
||
args = parser.parse_args() | ||
|
||
assert os.path.exists(args.fidlc_bin) | ||
|
||
fidl_files_by_name = GetFIDLFilesByLibraryName(args.sdk_base, args.root) | ||
|
||
fidlc_command = [ | ||
args.fidlc_bin, | ||
'--json', | ||
args.json | ||
] | ||
|
||
if args.target_api_level: | ||
fidlc_command += [ | ||
'--available', | ||
'fuchsia:{api_level}'.format(api_level=args.target_api_level), | ||
] | ||
|
||
# Create an iterator that works on both python3 and python2 | ||
try: | ||
fidl_files_by_name_iter = list(fidl_files_by_name.items()) | ||
except AttributeError: | ||
fidl_files_by_name_iter = iter(fidl_files_by_name.items()) | ||
|
||
for _, fidl_files in fidl_files_by_name_iter: | ||
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) | ||
|
||
fidlgen_command = [ | ||
fidlgen_bin, | ||
'-json', | ||
args.json, | ||
'-root', | ||
args.fidlgen_output_root | ||
] | ||
|
||
subprocess.check_call(fidlgen_command) | ||
else: | ||
# --fidlgen-bin and --fidlgen-output-root should be passed in together. | ||
assert not args.fidlgen_bin | ||
|
||
return 0 | ||
|
||
if __name__ == '__main__': | ||
sys.exit(main()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# 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. | ||
|
||
assert(is_fuchsia) | ||
import("//build/fuchsia/sdk.gni") | ||
|
||
fuchsia_sdk("pkg") { | ||
meta = "$fuchsia_sdk_path/meta/manifest.json" | ||
enabled_parts = [ | ||
"cc_source_library", | ||
"cc_prebuilt_library", | ||
] | ||
} |
Oops, something went wrong.