@@ -10,14 +10,9 @@ import 'package:dartdev/src/commands/compile.dart';
1010import 'package:dartdev/src/experiments.dart' ;
1111import 'package:dartdev/src/native_assets_bundling.dart' ;
1212import 'package:dartdev/src/sdk.dart' ;
13- import 'package:dartdev/src/utils.dart' ;
14- import 'package:file/local.dart' ;
1513import 'package:front_end/src/api_prototype/compiler_options.dart'
1614 show Verbosity;
17- import 'package:native_assets_builder/native_assets_builder.dart' ;
1815import 'package:native_assets_cli/code_assets_builder.dart' ;
19- import 'package:native_assets_cli/data_assets_builder.dart' ;
20- import 'package:package_config/package_config.dart' as package_config;
2116import 'package:path/path.dart' as path;
2217import 'package:vm/target_os.dart' ; // For possible --target-os values.
2318
@@ -132,61 +127,23 @@ class BuildCommand extends DartdevCommand {
132127 }
133128 await outputDir.create (recursive: true );
134129
135- // Start native asset generation here.
136130 stdout.writeln ('Building native assets.' );
137- final packageConfig = await findPackageConfigUri (sourceUri);
138- final runPackageName = await findRootPackageName (sourceUri);
139- final workingDirectory = Directory .current.uri;
140- final packageLayout = PackageLayout .fromPackageConfig (
141- LocalFileSystem (),
142- await package_config.loadPackageConfigUri (packageConfig! ),
143- packageConfig,
131+ final packageConfig = await DartNativeAssetsBuilder .ensurePackageConfig (
132+ sourceUri,
144133 );
145- final target = Target .current;
146- final macOSConfig = target.os == OS .macOS
147- ? MacOSConfig (targetVersion: minimumSupportedMacOSVersion)
148- : null ;
149- final nativeAssetsBuildRunner = NativeAssetsBuildRunner (
150- fileSystem: const LocalFileSystem (),
151- dartExecutable: Uri .file (sdk.dart),
152- logger: logger (verbose),
134+ final runPackageName = await DartNativeAssetsBuilder .findRootPackageName (
135+ sourceUri,
153136 );
154-
155- final cCompilerConfig = getCCompilerConfig ();
156-
157- final buildResult = await nativeAssetsBuildRunner.build (
158- inputCreator: () => BuildInputBuilder ()
159- ..config.setupCode (
160- targetOS: target.os,
161- linkModePreference: LinkModePreference .dynamic ,
162- targetArchitecture: target.architecture,
163- macOS: macOSConfig,
164- cCompiler: cCompilerConfig,
165- ),
166- inputValidator: (config) async => [
167- ...await validateDataAssetBuildInput (config),
168- ...await validateCodeAssetBuildInput (config),
169- ],
170- workingDirectory: workingDirectory,
171- packageLayout: packageLayout,
172- runPackageName: runPackageName,
173- linkingEnabled: true ,
174- buildAssetTypes: [
175- CodeAsset .type,
176- ],
177- buildValidator: (config, output) async => [
178- ...await validateDataAssetBuildOutput (config, output),
179- ...await validateCodeAssetBuildOutput (config, output),
180- ],
181- applicationAssetValidator: (assets) async => [
182- ...await validateCodeAssetInApplication (assets),
183- ],
137+ final builder = DartNativeAssetsBuilder (
138+ packageConfigUri: packageConfig! ,
139+ runPackageName: runPackageName! ,
140+ verbose: verbose,
184141 );
142+ final buildResult = await builder.buildNativeAssetsAOT ();
185143 if (buildResult == null ) {
186144 stderr.writeln ('Native assets build failed.' );
187145 return 255 ;
188146 }
189- // End native asset generation here.
190147
191148 final tempDir = Directory .systemTemp.createTempSync ();
192149 try {
@@ -211,38 +168,10 @@ class BuildCommand extends DartdevCommand {
211168 recordedUsagesFile: recordedUsagesPath,
212169 );
213170
214- // Start linking here.
215- final linkResult = await nativeAssetsBuildRunner.link (
216- inputCreator: () => LinkInputBuilder ()
217- ..config.setupCode (
218- targetOS: target.os,
219- targetArchitecture: target.architecture,
220- linkModePreference: LinkModePreference .dynamic ,
221- macOS: macOSConfig,
222- cCompiler: cCompilerConfig,
223- ),
224- inputValidator: (config) async => [
225- ...await validateDataAssetLinkInput (config),
226- ...await validateCodeAssetLinkInput (config),
227- ],
228- resourceIdentifiers:
229- recordUseEnabled ? Uri .file (recordedUsagesPath! ) : null ,
230- workingDirectory: workingDirectory,
231- runPackageName: runPackageName,
232- packageLayout: packageLayout,
171+ final linkResult = await builder.linkNativeAssetsAOT (
172+ recordedUsagesPath: recordedUsagesPath,
233173 buildResult: buildResult,
234- buildAssetTypes: [
235- CodeAsset .type,
236- ],
237- linkValidator: (config, output) async => [
238- ...await validateDataAssetLinkOutput (config, output),
239- ...await validateCodeAssetLinkOutput (config, output),
240- ],
241- applicationAssetValidator: (assets) async => [
242- ...await validateCodeAssetInApplication (assets),
243- ],
244174 );
245-
246175 if (linkResult == null ) {
247176 stderr.writeln ('Native assets link failed.' );
248177 return 255 ;
@@ -265,7 +194,7 @@ Use linkMode as dynamic library instead.""");
265194 if (allAssets.isNotEmpty) {
266195 final kernelAssets = await bundleNativeAssets (
267196 allAssets,
268- target,
197+ builder. target,
269198 outputUri,
270199 relocatable: true ,
271200 verbose: true ,
0 commit comments