diff --git a/utils/ddc/BUILD.gn b/utils/ddc/BUILD.gn index 7689613bb5d..c8b08b2f973 100644 --- a/utils/ddc/BUILD.gn +++ b/utils/ddc/BUILD.gn @@ -114,8 +114,10 @@ group("ddc_stable_test_local") { group("ddc_canary_test_local") { deps = [ ":ddc_canary_sdk", + ":ddc_canary_sdk_ddc_module", ":ddc_canary_test_pkg", ":ddc_canary_unsound_sdk", + ":ddc_canary_unsound_sdk_ddc_module", ] } @@ -149,14 +151,22 @@ group("ddc_stable_test_pkg") { # Compiles to JavaScript using DDC (canary) all packages imported in tests. group("ddc_canary_test_pkg") { deps = [ + ":async_helper_canary_ddc_js", ":async_helper_canary_js", + ":async_helper_canary_unsound_ddc_js", ":async_helper_canary_unsound_js", ":ddc_test_pkg_outline", + ":expect_canary_ddc_js", ":expect_canary_js", + ":expect_canary_unsound_ddc_js", ":expect_canary_unsound_js", + ":js_canary_ddc_js", ":js_canary_js", + ":js_canary_unsound_ddc_js", ":js_canary_unsound_js", + ":meta_canary_ddc_js", ":meta_canary_js", + ":meta_canary_unsound_ddc_js", ":meta_canary_unsound_js", ] } @@ -179,6 +189,8 @@ template("ddc_compile") { "Need 'package' in $target_name (the name of the package)") assert(defined(invoker.sound_null_safety), "Need 'sound_null_safety' in $target_name.") + assert(defined(invoker.canary), "Need 'canary' in $target_name.") + assert(defined(invoker.modules), "Need 'modules' in $target_name.") # Determine one of four possible directories for the JavaScript output to be # generated: @@ -214,7 +226,7 @@ template("ddc_compile") { prebuilt_dart_action(target_name) { script = "../../pkg/dev_compiler/bin/dartdevc.dart" - module = invoker.package + package_name = invoker.package out_dir = rebase_path("$js_gen_dir") sdk_path = rebase_path(sdk_outline) pkg_root = rebase_path("$root_build_dir/../../pkg") @@ -229,29 +241,32 @@ template("ddc_compile") { "$target_gen_dir/ddc_files.stamp", ] - outputs = [ - "$js_gen_dir/amd/$module.js", - "$js_gen_dir/amd/$module.js.map", - "$js_gen_dir/ddc/$module.js", - "$js_gen_dir/ddc/$module.js.map", - ] + outputs = [] + args = [] + foreach(module, invoker.modules) { + outputs += [ + "$js_gen_dir/$module/$package_name.js", + "$js_gen_dir/$module/$package_name.js.map", + ] + + args += [ + "--modules=$module", + "-o$out_dir/$module/$package_name.js", + ] + } vm_args = [ "-Dsdk_hash=$sdk_hash" ] - args = [ + args += [ "--no-summarize", "--multi-root-output-path=$pkg_root", "--dart-sdk-summary=$sdk_path", - "--modules=amd", - "-o$out_dir/amd/$module.js", - "--modules=ddc", - "-o$out_dir/ddc/$module.js", - "package:$module/$module.dart", + "package:$package_name/$package_name.dart", ] if (defined(invoker.extra_libraries)) { foreach(lib, invoker.extra_libraries) { - args += [ "package:$module/$lib.dart" ] + args += [ "package:$package_name/$lib.dart" ] } } @@ -349,24 +364,48 @@ package_kernel_outline("async_helper_outline_unsound") { ddc_compile("async_helper_stable_js") { package = "async_helper" canary = false + modules = [ + "amd", + "ddc", + ] sound_null_safety = true } ddc_compile("async_helper_canary_js") { package = "async_helper" canary = true + modules = [ "amd" ] + sound_null_safety = true +} + +ddc_compile("async_helper_canary_ddc_js") { + package = "async_helper" + canary = true + modules = [ "ddc" ] sound_null_safety = true } ddc_compile("async_helper_stable_unsound_js") { package = "async_helper" canary = false + modules = [ + "amd", + "ddc", + ] sound_null_safety = false } ddc_compile("async_helper_canary_unsound_js") { package = "async_helper" canary = true + modules = [ "amd" ] + sound_null_safety = false +} + +ddc_compile("async_helper_canary_unsound_ddc_js") { + package = "async_helper" + canary = true + modules = [ "ddc" ] sound_null_safety = false } @@ -386,6 +425,10 @@ ddc_compile("expect_stable_js") { package = "expect" extra_libraries = [ "minitest" ] canary = false + modules = [ + "amd", + "ddc", + ] sound_null_safety = true } @@ -393,6 +436,15 @@ ddc_compile("expect_canary_js") { package = "expect" extra_libraries = [ "minitest" ] canary = true + modules = [ "amd" ] + sound_null_safety = true +} + +ddc_compile("expect_canary_ddc_js") { + package = "expect" + extra_libraries = [ "minitest" ] + canary = true + modules = [ "ddc" ] sound_null_safety = true } @@ -400,6 +452,10 @@ ddc_compile("expect_stable_unsound_js") { package = "expect" extra_libraries = [ "minitest" ] canary = false + modules = [ + "amd", + "ddc", + ] sound_null_safety = false } @@ -407,6 +463,15 @@ ddc_compile("expect_canary_unsound_js") { package = "expect" extra_libraries = [ "minitest" ] canary = true + modules = [ "amd" ] + sound_null_safety = false +} + +ddc_compile("expect_canary_unsound_ddc_js") { + package = "expect" + extra_libraries = [ "minitest" ] + canary = true + modules = [ "ddc" ] sound_null_safety = false } @@ -426,6 +491,10 @@ ddc_compile("js_stable_js") { package = "js" extra_libraries = [ "js_util" ] canary = false + modules = [ + "amd", + "ddc", + ] sound_null_safety = true } @@ -433,12 +502,26 @@ ddc_compile("js_canary_js") { package = "js" extra_libraries = [ "js_util" ] canary = true + modules = [ "amd" ] sound_null_safety = true } + +ddc_compile("js_canary_ddc_js") { + package = "js" + extra_libraries = [ "js_util" ] + canary = true + modules = [ "ddc" ] + sound_null_safety = true +} + ddc_compile("js_stable_unsound_js") { package = "js" extra_libraries = [ "js_util" ] canary = false + modules = [ + "amd", + "ddc", + ] sound_null_safety = false } @@ -446,6 +529,15 @@ ddc_compile("js_canary_unsound_js") { package = "js" extra_libraries = [ "js_util" ] canary = true + modules = [ "amd" ] + sound_null_safety = false +} + +ddc_compile("js_canary_unsound_ddc_js") { + package = "js" + extra_libraries = [ "js_util" ] + canary = true + modules = [ "ddc" ] sound_null_safety = false } @@ -462,24 +554,48 @@ package_kernel_outline("meta_outline_unsound") { ddc_compile("meta_stable_js") { package = "meta" canary = false + modules = [ + "amd", + "ddc", + ] sound_null_safety = true } ddc_compile("meta_canary_js") { package = "meta" canary = true + modules = [ "amd" ] + sound_null_safety = true +} + +ddc_compile("meta_canary_ddc_js") { + package = "meta" + canary = true + modules = [ "ddc" ] sound_null_safety = true } ddc_compile("meta_stable_unsound_js") { package = "meta" canary = false + modules = [ + "amd", + "ddc", + ] sound_null_safety = false } ddc_compile("meta_canary_unsound_js") { package = "meta" canary = true + modules = [ "amd" ] + sound_null_safety = false +} + +ddc_compile("meta_canary_unsound_ddc_js") { + package = "meta" + canary = true + modules = [ "ddc" ] sound_null_safety = false } @@ -527,6 +643,8 @@ compile_ddc_platform("ddc_platform_unsound") { template("ddc_compile_sdk") { assert(defined(invoker.sound_null_safety), "Need 'sound_null_safety' in $target_name.") + assert(defined(invoker.canary), "Need 'canary' in $target_name.") + assert(defined(invoker.modules), "Need 'modules' in $target_name.") # Determine one of four possible directories for the JavaScript output to be # generated: @@ -559,22 +677,28 @@ template("ddc_compile_sdk") { inputs = [ platform_input ] - outputs = [ - "$js_gen_dir/amd/dart_sdk.js", - "$js_gen_dir/amd/dart_sdk.js.map", - "$js_gen_dir/common/dart_sdk.js", - "$js_gen_dir/common/dart_sdk.js.map", - "$js_gen_dir/es6/dart_sdk.js", - "$js_gen_dir/es6/dart_sdk.js.map", - "$js_gen_dir/ddc/dart_sdk.js", - "$js_gen_dir/ddc/dart_sdk.js.map", - ] + outputs = [] + args = [] + + foreach(module, invoker.modules) { + outputs += [ + "$js_gen_dir/$module/dart_sdk.js", + "$js_gen_dir/$module/dart_sdk.js.map", + ] + + args += [ + "--modules", + "$module", + "-o", + rebase_path("$js_gen_dir/$module/dart_sdk.js"), + ] + } vm_args = [ "-Dsdk_hash=$sdk_hash" ] script = "../../pkg/dev_compiler/bin/dartdevc.dart" - args = [ + args += [ "--multi-root-scheme", "org-dartlang-sdk", "--multi-root-output-path", @@ -586,22 +710,6 @@ template("ddc_compile_sdk") { # These JavaScript files and source maps are no longer packaged into the # released SDK. rebase_path("$target_gen_dir/../../../dart-sdk"), - "--modules", - "amd", - "-o", - rebase_path("$js_gen_dir/amd/dart_sdk.js"), - "--modules", - "common", - "-o", - rebase_path("$js_gen_dir/common/dart_sdk.js"), - "--modules", - "es6", - "-o", - rebase_path("$js_gen_dir/es6/dart_sdk.js"), - "--modules", - "ddc", - "-o", - rebase_path("$js_gen_dir/ddc/dart_sdk.js"), rebase_path("$platform_input"), ] @@ -619,20 +727,66 @@ template("ddc_compile_sdk") { ddc_compile_sdk("ddc_stable_sdk") { canary = false + modules = [ + "amd", + "common", + "es6", + "ddc", + ] sound_null_safety = true } ddc_compile_sdk("ddc_stable_unsound_sdk") { canary = false + modules = [ + "amd", + "common", + "es6", + "ddc", + ] sound_null_safety = false } ddc_compile_sdk("ddc_canary_sdk") { canary = true + modules = [ + "amd", + "common", + "es6", + ] + sound_null_safety = true +} + +# Compiles the DDC SDK JavaScript modules from the platform .dill file in the +# "ddc" module format only. +# +# This allows for them to be built individually (only passing one `--modules` +# flag value) so that when also passing the `--canary` flag it will trigger +# DDC to enable the option for the new library bundle format. +ddc_compile_sdk("ddc_canary_sdk_ddc_module") { + canary = true + modules = [ "ddc" ] sound_null_safety = true } ddc_compile_sdk("ddc_canary_unsound_sdk") { canary = true + modules = [ + "amd", + "common", + "es6", + ] + sound_null_safety = false +} + +# Compiles the DDC SDK JavaScript modules from the platform .dill file in the +# "ddc" module format only. +# +# This allows for them to be built individually (only passing one `--modules` +# flag value) so that when also passing the `--canary` flag it will trigger +# DDC to enable the option for the new library bundle format. +ddc_compile_sdk("ddc_canary_unsound_sdk_ddc_module") { + canary = true + modules = [ "ddc" ] sound_null_safety = false }