diff --git a/web_sdk/BUILD.gn b/web_sdk/BUILD.gn index bbebc9c0b3efb..788f8caa49bf0 100644 --- a/web_sdk/BUILD.gn +++ b/web_sdk/BUILD.gn @@ -153,35 +153,55 @@ copy("web_ui_library") { # # args (required): The arguments to pass to dartdevc template("_dartdevc") { - assert(flutter_prebuilt_dart_sdk, - "Cannot build web sdk without prebuilt dart sdk") - action(target_name) { - not_needed(invoker, [ "packages" ]) - deps = [ - ":skwasm_impl_library", - ":skwasm_stub_library", - ":web_engine_library", - ":web_ui_library", - ":web_ui_library_sources", - ] - script = "//build/gn_run_binary.py" + if (flutter_prebuilt_dart_sdk) { + action(target_name) { + not_needed(invoker, [ "packages" ]) + deps = [ + ":skwasm_impl_library", + ":skwasm_stub_library", + ":web_engine_library", + ":web_ui_library", + ":web_ui_library_sources", + ] + script = "//build/gn_run_binary.py" + + inputs = invoker.inputs + outputs = invoker.outputs + + pool = "//flutter/build/dart:dart_pool" + + ext = "" + if (is_win) { + ext = ".exe" + } + dart = rebase_path("$host_prebuilt_dart_sdk/bin/dart$ext", root_out_dir) + dartdevc = rebase_path( + "$host_prebuilt_dart_sdk/bin/snapshots/dartdevc.dart.snapshot") + args = [ + dart, + dartdevc, + ] + invoker.args + } + } else { + prebuilt_dart_action(target_name) { + forward_variables_from(invoker, "*") + + deps = [ + ":skwasm_impl_library", + ":skwasm_stub_library", + ":web_engine_library", + ":web_ui_library", + ":web_ui_library_sources", + "//third_party/dart:create_sdk", + "//third_party/dart/pkg:pkg_files_stamp", + "//third_party/dart/utils/dartdevc:dartdevc_files_stamp", + "//third_party/dart/utils/dartdevc:dartdevc_sdk_patch_stamp", + ] - inputs = invoker.inputs - outputs = invoker.outputs + script = "//third_party/dart/pkg/dev_compiler/bin/dartdevc.dart" - pool = "//flutter/build/dart:dart_pool" - - ext = "" - if (is_win) { - ext = ".exe" + pool = "//flutter/build/dart:dart_pool" } - dart = rebase_path("$host_prebuilt_dart_sdk/bin/dart$ext", root_out_dir) - dartdevc = rebase_path( - "$host_prebuilt_dart_sdk/bin/snapshots/dartdevc.dart.snapshot") - args = [ - dart, - dartdevc, - ] + invoker.args } } @@ -195,35 +215,55 @@ template("_dartdevc") { # # args (required): The arguments to pass to the kernel_worker template("_kernel_worker") { - assert(flutter_prebuilt_dart_sdk, - "Cannot build web sdk without prebuilt dart sdk") - action(target_name) { - deps = [ - ":skwasm_impl_library", - ":skwasm_stub_library", - ":web_engine_library", - ":web_ui_library", - ":web_ui_library_sources", - ] - script = "//build/gn_run_binary.py" + if (flutter_prebuilt_dart_sdk) { + action(target_name) { + deps = [ + ":skwasm_impl_library", + ":skwasm_stub_library", + ":web_engine_library", + ":web_ui_library", + ":web_ui_library_sources", + ] + script = "//build/gn_run_binary.py" - inputs = invoker.inputs - outputs = invoker.outputs + inputs = invoker.inputs + outputs = invoker.outputs - pool = "//flutter/build/dart:dart_pool" + pool = "//flutter/build/dart:dart_pool" + + ext = "" + if (is_win) { + ext = ".exe" + } + dart = rebase_path("$host_prebuilt_dart_sdk/bin/dart$ext", root_out_dir) + kernel_worker = rebase_path( + "$host_prebuilt_dart_sdk/bin/snapshots/kernel_worker.dart.snapshot") - ext = "" - if (is_win) { - ext = ".exe" + args = [ + dart, + kernel_worker, + ] + invoker.args } - dart = rebase_path("$host_prebuilt_dart_sdk/bin/dart$ext", root_out_dir) - kernel_worker = rebase_path( - "$host_prebuilt_dart_sdk/bin/snapshots/kernel_worker.dart.snapshot") + } else { + prebuilt_dart_action(target_name) { + forward_variables_from(invoker, "*") + + deps = [ + ":skwasm_impl_library", + ":skwasm_stub_library", + ":web_engine_library", + ":web_ui_library", + ":web_ui_library_sources", + "//third_party/dart:create_sdk", + "//third_party/dart/pkg:pkg_files_stamp", + "//third_party/dart/utils/dartdevc:dartdevc_files_stamp", + "//third_party/dart/utils/dartdevc:dartdevc_sdk_patch_stamp", + ] - args = [ - dart, - kernel_worker, - ] + invoker.args + script = "//third_party/dart/utils/bazel/kernel_worker.dart" + + pool = "//flutter/build/dart:dart_pool" + } } } @@ -253,8 +293,6 @@ template("_compile_outline") { "org-dartlang-sdk", "--multi-root", "file:///" + rebase_path("$root_out_dir/flutter_web_sdk"), - "--multi-root", - "file:///" + rebase_path("$host_prebuilt_dart_sdk/.."), "--libraries-file", "org-dartlang-sdk:///libraries.json", "--output", @@ -270,6 +308,17 @@ template("_compile_outline") { "--source", "dart:_skwasm_stub", ] + if (flutter_prebuilt_dart_sdk) { + args += [ + "--multi-root", + "file:///" + rebase_path("$host_prebuilt_dart_sdk/.."), + ] + } else { + args += [ + "--multi-root", + "file:///" + rebase_path("$root_out_dir"), + ] + } } } @@ -342,8 +391,6 @@ template("_compile_ddc_modules") { "org-dartlang-sdk", "--multi-root", "file:///" + rebase_path("$root_out_dir/flutter_web_sdk"), - "--multi-root", - "file:///" + rebase_path("$host_prebuilt_dart_sdk/.."), "--multi-root-output-path", rebase_path("$root_out_dir/"), "--libraries-file", @@ -360,6 +407,17 @@ template("_compile_ddc_modules") { "-o", rebase_path(legacy_js_path), ] + if (flutter_prebuilt_dart_sdk) { + args += [ + "--multi-root", + "file:///" + rebase_path("$host_prebuilt_dart_sdk/.."), + ] + } else { + args += [ + "--multi-root", + "file:///" + rebase_path("$root_out_dir"), + ] + } } }