@@ -284,6 +284,36 @@ class Dart2WasmTarget extends Dart2WebTarget {
284284 @override
285285 final WasmCompilerConfig compilerConfig;
286286
287+ /// List the preconfigured build options for a given build mode.
288+ List <String > buildModeOptions (BuildMode mode, List <String > dartDefines) =>
289+ switch (mode) {
290+ BuildMode .debug => < String > [
291+ // These checks allow the CLI to override the value of this define for unit
292+ // testing the framework.
293+ if (! dartDefines.any ((String define) => define.startsWith ('dart.vm.profile' )))
294+ '-Ddart.vm.profile=false' ,
295+ if (! dartDefines.any ((String define) => define.startsWith ('dart.vm.product' )))
296+ '-Ddart.vm.product=false' ,
297+ ],
298+ BuildMode .profile => < String > [
299+ // These checks allow the CLI to override the value of this define for
300+ // benchmarks with most timeline traces disabled.
301+ if (! dartDefines.any ((String define) => define.startsWith ('dart.vm.profile' )))
302+ '-Ddart.vm.profile=true' ,
303+ if (! dartDefines.any ((String define) => define.startsWith ('dart.vm.product' )))
304+ '-Ddart.vm.product=false' ,
305+ '--extra-compiler-option=--delete-tostring-package-uri=dart:ui' ,
306+ '--extra-compiler-option=--delete-tostring-package-uri=package:flutter' ,
307+ ],
308+ BuildMode .release => < String > [
309+ '-Ddart.vm.profile=false' ,
310+ '-Ddart.vm.product=true' ,
311+ '--extra-compiler-option=--delete-tostring-package-uri=dart:ui' ,
312+ '--extra-compiler-option=--delete-tostring-package-uri=package:flutter' ,
313+ ],
314+ _ => throw Exception ('Unknown BuildMode: $mode ' )
315+ };
316+
287317 @override
288318 Future <void > build (Environment environment) async {
289319 final String ? buildModeEnvironment = environment.defines[kBuildMode];
@@ -297,25 +327,21 @@ class Dart2WasmTarget extends Dart2WebTarget {
297327 final File depFile = environment.buildDir.childFile ('dart2wasm.d' );
298328 final String platformBinariesPath = artifacts.getHostArtifact (HostArtifact .webPlatformKernelFolder).path;
299329 final String platformFilePath = environment.fileSystem.path.join (platformBinariesPath, 'dart2wasm_platform.dill' );
330+ final List <String > dartDefines = computeDartDefines (environment);
300331
301332 final List <String > compilationArgs = < String > [
302333 artifacts.getArtifactPath (Artifact .engineDartBinary, platform: TargetPlatform .web_javascript),
303334 'compile' ,
304335 'wasm' ,
305336 '--packages=${findPackageConfigFileOrDefault (environment .projectDir ).path }' ,
306337 '--extra-compiler-option=--platform=$platformFilePath ' ,
307- '--extra-compiler-option=--delete-tostring-package-uri=dart:ui' ,
308- '--extra-compiler-option=--delete-tostring-package-uri=package:flutter' ,
338+ ...buildModeOptions (buildMode, dartDefines),
309339 if (compilerConfig.renderer == WebRendererMode .skwasm) ...< String > [
310340 '--extra-compiler-option=--import-shared-memory' ,
311341 '--extra-compiler-option=--shared-memory-max-pages=32768' ,
312342 ],
313- if (buildMode == BuildMode .profile)
314- '-Ddart.vm.profile=true'
315- else if (buildMode == BuildMode .release)
316- '-Ddart.vm.product=true' ,
317343 ...decodeCommaSeparated (environment.defines, kExtraFrontEndOptions),
318- for (final String dartDefine in computeDartDefines (environment) )
344+ for (final String dartDefine in dartDefines )
319345 '-D$dartDefine ' ,
320346 '--extra-compiler-option=--depfile=${depFile .path }' ,
321347
0 commit comments