@@ -15,11 +15,13 @@ import 'src/web_entrypoint_marker_builder.dart';
1515
1616// Shared entrypoint builder
1717Builder webEntrypointBuilder (BuilderOptions options) {
18+ _ensureSamePlatformOptions (options);
1819 _ensureSameDdcHotReloadOptions (options);
1920 return WebEntrypointBuilder .fromOptions (options);
2021}
2122
2223Builder webEntrypointMarkerBuilder (BuilderOptions options) {
24+ _ensureSamePlatformOptions (options);
2325 _ensureSameDdcHotReloadOptions (options);
2426 return WebEntrypointMarkerBuilder (
2527 usesWebHotReload: _readWebHotReloadOption (options),
@@ -28,16 +30,19 @@ Builder webEntrypointMarkerBuilder(BuilderOptions options) {
2830
2931// DDC related builders
3032Builder ddcMetaModuleBuilder (BuilderOptions options) {
33+ _ensureSamePlatformOptions (options);
3134 _ensureSameDdcHotReloadOptions (options);
3235 return MetaModuleBuilder .forOptions (ddcPlatform, options);
3336}
3437
3538Builder ddcMetaModuleCleanBuilder (BuilderOptions options) {
39+ _ensureSamePlatformOptions (options);
3640 _ensureSameDdcHotReloadOptions (options);
3741 return MetaModuleCleanBuilder (ddcPlatform);
3842}
3943
4044Builder ddcModuleBuilder (BuilderOptions options) {
45+ _ensureSamePlatformOptions (options);
4146 _ensureSameDdcHotReloadOptions (options);
4247 return ModuleBuilder (
4348 ddcPlatform,
@@ -47,6 +52,7 @@ Builder ddcModuleBuilder(BuilderOptions options) {
4752
4853Builder ddcBuilder (BuilderOptions options) {
4954 validateOptions (options.config, _supportedOptions, 'build_web_compilers:ddc' );
55+ _ensureSamePlatformOptions (options);
5056 _ensureSameDdcHotReloadOptions (options);
5157 _ensureSameDdcOptions (options);
5258
@@ -60,9 +66,11 @@ Builder ddcBuilder(BuilderOptions options) {
6066 emitDebugSymbols: _readEmitDebugSymbolsOption (options),
6167 canaryFeatures: _readCanaryOption (options),
6268 ddcModules: _readWebHotReloadOption (options),
63- sdkKernelPath: sdkDdcKernelPath,
6469 trackUnusedInputs: _readTrackInputsCompilerOption (options),
6570 platform: ddcPlatform,
71+ sdkKernelPath: _readDdcKernelPathOption (options),
72+ librariesPath: _readLibrariesPathOption (options),
73+ platformSdk: _readPlatformSdkOption (options),
6674 environment: _readEnvironmentOption (options),
6775 );
6876}
@@ -71,16 +79,19 @@ final ddcKernelExtension = '.ddc.dill';
7179
7280Builder ddcKernelBuilder (BuilderOptions options) {
7381 validateOptions (options.config, _supportedOptions, 'build_web_compilers:ddc' );
82+ _ensureSamePlatformOptions (options);
7483 _ensureSameDdcHotReloadOptions (options);
7584 _ensureSameDdcOptions (options);
7685
7786 return KernelBuilder (
7887 summaryOnly: true ,
79- sdkKernelPath: sdkDdcKernelPath ,
88+ sdkKernelPath: _readDdcKernelPathOption (options) ,
8089 outputExtension: ddcKernelExtension,
8190 platform: ddcPlatform,
91+ librariesPath: _readLibrariesPathOption (options),
8292 useIncrementalCompiler: _readUseIncrementalCompilerOption (options),
8393 trackUnusedInputs: _readTrackInputsCompilerOption (options),
94+ platformSdk: _readPlatformSdkOption (options),
8495 );
8596}
8697
@@ -93,26 +104,44 @@ Builder sdkJsCompile(BuilderOptions options) {
93104 canaryFeatures:
94105 _readWebHotReloadOption (options) || _readCanaryOption (options),
95106 usesWebHotReload: _readWebHotReloadOption (options),
107+ usePrebuiltSdkFromPath: _readUsePrebuiltSdkFromPathOption (options),
96108 );
97109}
98110
99111// Dart2js related builders
100- Builder dart2jsMetaModuleBuilder (BuilderOptions options) =>
101- MetaModuleBuilder .forOptions (dart2jsPlatform, options);
102- Builder dart2jsMetaModuleCleanBuilder (BuilderOptions _) =>
103- MetaModuleCleanBuilder (dart2jsPlatform);
104- Builder dart2jsModuleBuilder (BuilderOptions _) =>
105- ModuleBuilder (dart2jsPlatform);
112+ Builder dart2jsMetaModuleBuilder (BuilderOptions options) {
113+ _ensureSamePlatformOptions (options);
114+ return MetaModuleBuilder .forOptions (dart2jsPlatform, options);
115+ }
116+
117+ Builder dart2jsMetaModuleCleanBuilder (BuilderOptions options) {
118+ _ensureSamePlatformOptions (options);
119+ return MetaModuleCleanBuilder (dart2jsPlatform);
120+ }
121+
122+ Builder dart2jsModuleBuilder (BuilderOptions options) {
123+ _ensureSamePlatformOptions (options);
124+ return ModuleBuilder (dart2jsPlatform);
125+ }
126+
106127PostProcessBuilder dart2jsArchiveExtractor (BuilderOptions options) =>
107128 Dart2JsArchiveExtractor .fromOptions (options);
108129
109130// Dart2wasm related builders
110- Builder dart2wasmMetaModuleBuilder (BuilderOptions options) =>
111- MetaModuleBuilder .forOptions (dart2wasmPlatform, options);
112- Builder dart2wasmMetaModuleCleanBuilder (BuilderOptions _) =>
113- MetaModuleCleanBuilder (dart2wasmPlatform);
114- Builder dart2wasmModuleBuilder (BuilderOptions _) =>
115- ModuleBuilder (dart2wasmPlatform);
131+ Builder dart2wasmMetaModuleBuilder (BuilderOptions options) {
132+ _ensureSamePlatformOptions (options);
133+ return MetaModuleBuilder .forOptions (dart2wasmPlatform, options);
134+ }
135+
136+ Builder dart2wasmMetaModuleCleanBuilder (BuilderOptions options) {
137+ _ensureSamePlatformOptions (options);
138+ return MetaModuleCleanBuilder (dart2wasmPlatform);
139+ }
140+
141+ Builder dart2wasmModuleBuilder (BuilderOptions options) {
142+ _ensureSamePlatformOptions (options);
143+ return ModuleBuilder (dart2wasmPlatform);
144+ }
116145
117146// General purpose builders
118147PostProcessBuilder dartSourceCleanup (BuilderOptions options) =>
@@ -170,6 +199,27 @@ void _ensureSameDdcHotReloadOptions(BuilderOptions options) {
170199 }
171200}
172201
202+ void _ensureSamePlatformOptions (BuilderOptions options) {
203+ final useUiLibraries = _readUseUiLibrariesOption (options);
204+ if (_lastUseUiLibrariesValue == null ) {
205+ initializePlatforms (useUiLibraries);
206+ _lastUseUiLibrariesValue = useUiLibraries;
207+ } else if (_lastUseUiLibrariesValue != useUiLibraries) {
208+ throw ArgumentError (
209+ '`use-ui-libraries` must be configured the same across the '
210+ 'following builders: build_web_compilers:ddc, '
211+ 'build_web_compilers|entrypoint, '
212+ 'build_web_compilers|entrypoint_marker, '
213+ 'build_web_compilers|ddc, '
214+ 'build_web_compilers|ddc_modules, '
215+ 'build_web_compilers|dart2js_modules, '
216+ 'build_web_compilers|dart2wasm_modules.'
217+ '\n\n Please use the `global_options` section in '
218+ '`build.yaml` or the `--define` flag to set global options.' ,
219+ );
220+ }
221+ }
222+
173223bool _readUseIncrementalCompilerOption (BuilderOptions options) {
174224 return options.config[_useIncrementalCompilerOption] as bool ? ?? true ;
175225}
@@ -194,20 +244,46 @@ bool _readWebHotReloadOption(BuilderOptions options) {
194244 return options.config[_webHotReloadOption] as bool ? ?? false ;
195245}
196246
247+ bool _readUseUiLibrariesOption (BuilderOptions options) {
248+ return options.config[_useUiLibrariesOption] as bool ? ?? false ;
249+ }
250+
251+ String _readDdcKernelPathOption (BuilderOptions options) {
252+ return options.config[_ddcKernelPathOption] as String ? ?? sdkDdcKernelPath;
253+ }
254+
255+ String ? _readLibrariesPathOption (BuilderOptions options) {
256+ return options.config[_librariesPathOption] as String ? ;
257+ }
258+
259+ String ? _readPlatformSdkOption (BuilderOptions options) {
260+ return options.config[_platformSdkOption] as String ? ;
261+ }
262+
263+ String ? _readUsePrebuiltSdkFromPathOption (BuilderOptions options) {
264+ return options.config[_usePrebuiltSdkFromPathOption] as String ? ;
265+ }
266+
197267Map <String , String > _readEnvironmentOption (BuilderOptions options) {
198268 final environment = options.config[_environmentOption] as Map ? ?? const {};
199269 return environment.map ((key, value) => MapEntry ('$key ' , '$value ' ));
200270}
201271
202272Map <String , dynamic >? _previousDdcConfig;
203273bool ? _lastWebHotReloadValue;
274+ bool ? _lastUseUiLibrariesValue;
204275const _useIncrementalCompilerOption = 'use-incremental-compiler' ;
205276const _generateFullDillOption = 'generate-full-dill' ;
206277const _emitDebugSymbolsOption = 'emit-debug-symbols' ;
207278const _canaryOption = 'canary' ;
208279const _trackUnusedInputsCompilerOption = 'track-unused-inputs' ;
209280const _environmentOption = 'environment' ;
210281const _webHotReloadOption = 'web-hot-reload' ;
282+ const _useUiLibrariesOption = 'use-ui-libraries' ;
283+ const _ddcKernelPathOption = 'ddc-kernel-path' ;
284+ const _librariesPathOption = 'libraries-path' ;
285+ const _platformSdkOption = 'platform-sdk' ;
286+ const _usePrebuiltSdkFromPathOption = 'use-prebuilt-sdk-from-path' ;
211287
212288const _supportedOptions = [
213289 _environmentOption,
@@ -217,4 +293,8 @@ const _supportedOptions = [
217293 _canaryOption,
218294 _trackUnusedInputsCompilerOption,
219295 _webHotReloadOption,
296+ _useUiLibrariesOption,
297+ _ddcKernelPathOption,
298+ _librariesPathOption,
299+ _platformSdkOption,
220300];
0 commit comments