Skip to content

Commit

Permalink
Generate gen_snapshot_armv7 and gen_snapshot_arm64 (#22818)
Browse files Browse the repository at this point in the history
  • Loading branch information
jmagman committed Dec 2, 2020
1 parent 1358fda commit 079c669
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 14 deletions.
27 changes: 27 additions & 0 deletions lib/snapshot/BUILD.gn
Expand Up @@ -197,6 +197,29 @@ bin_to_linkable("platform_strong_dill_linkable") {
executable = false
}

action("create_arm_gen_snapshot") {
output_dir = "$root_out_dir/clang_x64"
script = "//flutter/sky/tools/create_macos_gen_snapshots.py"
visibility = [ ":*" ]
args = [
"--dst",
rebase_path(output_dir),
]
if (target_cpu == "arm") {
args += [
"--armv7-out-dir",
rebase_path("$root_out_dir"),
]
outputs = [ "$output_dir/gen_snapshot_armv7" ]
} else {
args += [
"--arm64-out-dir",
rebase_path("$root_out_dir"),
]
outputs = [ "$output_dir/gen_snapshot_arm64" ]
}
}

source_set("snapshot") {
deps = [
":isolate_snapshot_data_linkable",
Expand All @@ -205,6 +228,10 @@ source_set("snapshot") {
":vm_snapshot_data_linkable",
":vm_snapshot_instructions_linkable",
]
if (host_os == "macos" && (target_cpu == "arm" || target_cpu == "arm64")) {
deps += [ ":create_arm_gen_snapshot" ]
}

sources = get_target_outputs(":isolate_snapshot_data_linkable") +
get_target_outputs(":isolate_snapshot_instructions_linkable") +
get_target_outputs(":vm_snapshot_data_linkable") +
Expand Down
29 changes: 15 additions & 14 deletions sky/tools/create_macos_gen_snapshots.py
Expand Up @@ -13,26 +13,27 @@ def main():
parser = argparse.ArgumentParser(description='Copies architecture-dependent gen_snapshot binaries to output dir')

parser.add_argument('--dst', type=str, required=True)
parser.add_argument('--arm64-out-dir', type=str, required=True)
parser.add_argument('--armv7-out-dir', type=str, required=True)
parser.add_argument('--arm64-out-dir', type=str)
parser.add_argument('--armv7-out-dir', type=str)

args = parser.parse_args()

arm64_gen_snapshot = os.path.join(args.arm64_out_dir, 'clang_x64', 'gen_snapshot')
armv7_gen_snapshot = os.path.join(args.armv7_out_dir, 'clang_x64', 'gen_snapshot')
if args.arm64_out_dir:
generate_gen_snapshot(args.arm64_out_dir, os.path.join(args.dst, 'gen_snapshot_arm64'))

if not os.path.isfile(arm64_gen_snapshot):
print 'Cannot find x86_64 (arm64) gen_snapshot at', arm64_gen_snapshot
return 1
if args.armv7_out_dir:
generate_gen_snapshot(args.armv7_out_dir, os.path.join(args.dst, 'gen_snapshot_armv7'))

if not os.path.isfile(armv7_gen_snapshot):
print 'Cannot find i386 (armv7) gen_snapshot at', armv7_gen_snapshot
return 1

subprocess.check_call(['xcrun', 'bitcode_strip', '-r', armv7_gen_snapshot,
'-o', os.path.join(args.dst, 'gen_snapshot_armv7')])
subprocess.check_call(['xcrun', 'bitcode_strip', '-r', arm64_gen_snapshot,
'-o', os.path.join(args.dst, 'gen_snapshot_arm64')])
def generate_gen_snapshot(directory, destination):
gen_snapshot_dir = os.path.join(directory, 'clang_x64', 'gen_snapshot')
if not os.path.isfile(gen_snapshot_dir):
print 'Cannot find gen_snapshot at', gen_snapshot_dir
sys.exit(1)

subprocess.check_call(['xcrun', 'bitcode_strip', '-r', gen_snapshot_dir,
'-o', destination])


if __name__ == '__main__':
sys.exit(main())
Expand Down

0 comments on commit 079c669

Please sign in to comment.