Reland x3 [dart2wasm] Include wasm-opt in the shipped dart-sdk.
Hide this behind a flag, so that we can disable it when building in the flutter in-tree build. The flag will be set to false for the in-tree flutter build, see https://github.com/flutter/engine/pull/40195 Change-Id: I248376985d05bfb248a2eab6fa377cbb01d75654 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/288040 Commit-Queue: Jackson Gardner <jacksongardner@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
This commit is contained in:
committed by
Commit Queue
parent
6c7f3ab27d
commit
b890ed4cc3
@@ -608,12 +608,12 @@ if (is_win) {
|
||||
default_warning_flags += [
|
||||
"-Wno-tautological-constant-compare",
|
||||
"-Wno-unused-but-set-variable", # icu
|
||||
"-Wno-unused-but-set-parameter", # binaryen
|
||||
"-Wno-deprecated-non-prototype", # zlib
|
||||
]
|
||||
} else {
|
||||
default_warning_flags +=
|
||||
[ "-Wno-ignored-qualifiers" ] # Warnings in BoringSSL headers
|
||||
default_warning_flags += [
|
||||
"-Wno-ignored-qualifiers", # Warnings in BoringSSL headers
|
||||
]
|
||||
}
|
||||
|
||||
if (is_mac) {
|
||||
@@ -727,6 +727,15 @@ config("no_rtti") {
|
||||
}
|
||||
}
|
||||
|
||||
config("enable_exceptions") {
|
||||
if (is_win) {
|
||||
cflags_cc = [ "/EHsc" ]
|
||||
defines = [ "_HAS_EXCEPTIONS=1" ]
|
||||
} else if (is_clang) {
|
||||
cflags_cc = [ "-fexceptions" ]
|
||||
}
|
||||
}
|
||||
|
||||
# Optimization -----------------------------------------------------------------
|
||||
#
|
||||
# Note that BUILDCONFIG.gn sets up a variable "default_optimization_config"
|
||||
|
||||
@@ -8,6 +8,7 @@ is used to set up calls to tools used by the build that need wrappers.
|
||||
"""
|
||||
|
||||
import os
|
||||
import pathlib
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
@@ -149,7 +150,28 @@ class WinTool(object):
|
||||
not line.startswith('Generating code') and
|
||||
not line.startswith('Finished generating code')):
|
||||
print(line)
|
||||
return link.wait()
|
||||
link_result = link.wait()
|
||||
|
||||
if link_result != 0:
|
||||
return link_result
|
||||
|
||||
# The toolchain configuration in gn always expects a .lib file to be
|
||||
# included in the output of the link step. However, this only happens
|
||||
# when the output has exports, and that is not always the case. In
|
||||
# order to satisfy the expected outputs, we create a dummy .lib file
|
||||
# in cases where the link step didn't actually create one.
|
||||
for arg in args:
|
||||
m = _LINK_EXE_OUT_ARG.match(arg)
|
||||
if m:
|
||||
output_filename = m.group('out')
|
||||
(basename, extension) = os.path.splitext(output_filename)
|
||||
if extension == '.exe':
|
||||
lib_path = pathlib.Path(basename + ".lib")
|
||||
if not os.path.exists(lib_path):
|
||||
lib_path.touch()
|
||||
break
|
||||
|
||||
return link_result
|
||||
|
||||
def ExecMidlWrapper(self, arch, outdir, tlb, h, dlldata, iid, proxy, idl,
|
||||
*flags):
|
||||
|
||||
@@ -27,6 +27,9 @@ declare_args() {
|
||||
dart_precompiled_runtime_stripped_binary = "dart_precompiled_runtime_product"
|
||||
gen_snapshot_stripped_binary = "gen_snapshot_product"
|
||||
analyze_snapshot_binary = "analyze_snapshot"
|
||||
wasm_opt_stripped_binary = "wasm-opt"
|
||||
|
||||
dart_include_wasm_opt = true
|
||||
}
|
||||
|
||||
# The directory layout of the SDK is as follows:
|
||||
@@ -518,6 +521,16 @@ copy("copy_dart2wasm_snapshot") {
|
||||
[ "$root_out_dir/$dart_sdk_output/bin/snapshots/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
copy("copy_wasm_opt") {
|
||||
visibility = [ ":create_full_sdk" ]
|
||||
deps = [
|
||||
":copy_libraries",
|
||||
"../third_party/binaryen:wasm-opt",
|
||||
]
|
||||
sources = [ "$root_out_dir/${wasm_opt_stripped_binary}${executable_suffix}" ]
|
||||
outputs = [ "$root_out_dir/$dart_sdk_output/bin/utils/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
# Copies DDC's SDK full and outline .dill files to lib/_internal.
|
||||
copy("copy_dev_compiler_dills") {
|
||||
visibility = [ ":copy_dev_compiler_sdk" ]
|
||||
@@ -756,6 +769,9 @@ group("create_full_sdk") {
|
||||
":copy_dart2wasm_platform",
|
||||
":copy_dart2wasm_snapshot",
|
||||
]
|
||||
if (dart_include_wasm_opt) {
|
||||
public_deps += [ ":copy_wasm_opt" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+36
-11
@@ -4,6 +4,14 @@
|
||||
|
||||
import("../../sdk_args.gni")
|
||||
|
||||
config("binaryen_warnings") {
|
||||
if (is_clang) {
|
||||
cflags = [ "-Wno-unused-but-set-parameter" ]
|
||||
} else if (!is_win) {
|
||||
cflags = [ "-Wno-unused-variable" ]
|
||||
}
|
||||
}
|
||||
|
||||
action("generate_needed_files") {
|
||||
script = "generate_needed_files.py"
|
||||
|
||||
@@ -31,24 +39,31 @@ action("generate_needed_files") {
|
||||
|
||||
source_set("binaryen_sources") {
|
||||
src_dirs = [
|
||||
rebase_path("src/src/ir", root_build_dir),
|
||||
rebase_path("src/src/asmjs", root_build_dir),
|
||||
rebase_path("src/src/cfg", root_build_dir),
|
||||
rebase_path("src/src/passes", root_build_dir),
|
||||
rebase_path("src/src/support", root_build_dir),
|
||||
rebase_path("src/src/wasm", root_build_dir),
|
||||
rebase_path("src/src/tools/fuzzing", root_build_dir),
|
||||
rebase_path("src/src/emscripten-optimizer", root_build_dir),
|
||||
"src/src/ir",
|
||||
"src/src/asmjs",
|
||||
"src/src/cfg",
|
||||
"src/src/passes",
|
||||
"src/src/support",
|
||||
"src/src/wasm",
|
||||
"src/src/tools/fuzzing",
|
||||
"src/src/emscripten-optimizer",
|
||||
]
|
||||
|
||||
# We avoid listing all sources manually, this means when updating
|
||||
# binaryen in DEPS (or manually editing) one has to ensure to
|
||||
# re-run GN in DEPS to ensure new dependencies are picked up.
|
||||
# (this lowers the maintenance burden of GN build support for binaryen)
|
||||
sources = exec_script("list_sources.py",
|
||||
src_dirs,
|
||||
sources = []
|
||||
foreach(src_dir, src_dirs) {
|
||||
foreach(src_file,
|
||||
exec_script("list_sources.py",
|
||||
[ rebase_path(src_dir, root_build_dir) ],
|
||||
"list lines",
|
||||
[ "$default_git_folder/logs/HEAD" ])
|
||||
[ "$default_git_folder/logs/HEAD" ])) {
|
||||
sources += [ "$src_dir/$src_file" ]
|
||||
}
|
||||
}
|
||||
|
||||
include_dirs = [ "src/src" ]
|
||||
|
||||
# Ensure WasmIntrinsics.cpp/config.h files are generated.
|
||||
@@ -59,6 +74,11 @@ source_set("binaryen_sources") {
|
||||
|
||||
# Ensure generated config.h file is include path.
|
||||
include_dirs += [ "$target_gen_dir" ]
|
||||
|
||||
configs += [
|
||||
"//build/config/compiler:enable_exceptions",
|
||||
":binaryen_warnings",
|
||||
]
|
||||
}
|
||||
|
||||
template("wasm_tool") {
|
||||
@@ -72,6 +92,11 @@ template("wasm_tool") {
|
||||
include_dirs = [ "src/src" ]
|
||||
deps = [ ":binaryen_sources" ]
|
||||
forward_variables_from(invoker, "*")
|
||||
|
||||
configs += [
|
||||
"//build/config/compiler:enable_exceptions",
|
||||
":binaryen_warnings",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+3
-4
@@ -8,10 +8,9 @@ import sys
|
||||
|
||||
|
||||
def main(args):
|
||||
for dirname in args:
|
||||
for file in os.listdir(dirname):
|
||||
if file.endswith('.cpp') or file.endswith('.h'):
|
||||
print(os.path.join(dirname, file))
|
||||
for file in os.listdir(args[0]):
|
||||
if file.endswith('.cpp') or file.endswith('.h'):
|
||||
print(file)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@@ -297,6 +297,7 @@ def ToGnArgs(args, mode, arch, target_os, sanitizer, verify_sdk_hash):
|
||||
gn_args['gen_snapshot_stripped_binary'] = (
|
||||
'exe.stripped/gen_snapshot_product')
|
||||
gn_args['analyze_snapshot_binary'] = ('exe.stripped/analyze_snapshot')
|
||||
gn_args['wasm_opt_stripped_binary'] = 'exe.stripped/wasm-opt'
|
||||
|
||||
# Setup the user-defined sysroot.
|
||||
if UseSysroot(args, gn_args):
|
||||
|
||||
Reference in New Issue
Block a user