Skip to content

Commit aa9994b

Browse files
authored
[native_assets_cli] Introduce CCompilerConfig.windows (#1913)
Closes: #1606 This PR moves `cCompilerConfig.envScript` to `cCompilerConfig.windows.developerCommandPrompt.script`. Notable changes: * The `DeveloperCommandPrompt` is optional, but if it's set, both the script and arguments must be set. Since clang on Windows detects the MSVC installations, the `developerCommandPrompt` itself is optional for the case where clang is passed as the compiler on Windows * The OS-specific configurations nested under `CodeConfig` have been renamed to `<OS>CodeConfig` avoid naming conflicts with `<OS>CCompilerConfig`. * The JSON structure has been updated with the nesting. Up for discussion: * Naming (`developerCommandPrompt` is rather long) * Should we expose a `Future<Map<String, String>> loadEnvironment()` on `DeveloperCommandPrompt`? It's a bit out of place because the config is rather only a view on the JSON. However, it is most likely use case.
1 parent 72487d3 commit aa9994b

35 files changed

+338
-181
lines changed

pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void main() async {
3737
targetArchitecture: Architecture.current,
3838
targetOS: OS.current,
3939
macOS: targetOS == OS.macOS
40-
? MacOSConfig(targetVersion: defaultMacOSVersion)
40+
? MacOSCodeConfig(targetVersion: defaultMacOSVersion)
4141
: null,
4242
linkModePreference: LinkModePreference.dynamic,
4343
);

pkgs/native_assets_builder/test/build_runner/concurrency_shared_test_helper.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ void main(List<String> args) async {
3131
targetArchitecture: target.architecture,
3232
targetOS: targetOS,
3333
macOS: targetOS == OS.macOS
34-
? MacOSConfig(targetVersion: defaultMacOSVersion)
34+
? MacOSCodeConfig(targetVersion: defaultMacOSVersion)
3535
: null,
3636
android:
37-
targetOS == OS.android ? AndroidConfig(targetNdkApi: 30) : null,
37+
targetOS == OS.android ? AndroidCodeConfig(targetNdkApi: 30) : null,
3838
linkModePreference: LinkModePreference.dynamic,
3939
),
4040

pkgs/native_assets_builder/test/build_runner/concurrency_test_helper.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ void main(List<String> args) async {
3636
linkModePreference: LinkModePreference.dynamic,
3737
cCompiler: dartCICompilerConfig,
3838
macOS: targetOS == OS.macOS
39-
? MacOSConfig(targetVersion: defaultMacOSVersion)
39+
? MacOSCodeConfig(targetVersion: defaultMacOSVersion)
4040
: null,
4141
),
4242
workingDirectory: packageUri,

pkgs/native_assets_builder/test/build_runner/helpers.dart

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -86,17 +86,17 @@ Future<BuildResult?> build(
8686
linkModePreference: linkModePreference,
8787
cCompiler: cCompiler ?? dartCICompilerConfig,
8888
iOS: targetOS == OS.iOS
89-
? IOSConfig(
89+
? IOSCodeConfig(
9090
targetSdk: targetIOSSdk!,
9191
targetVersion: targetIOSVersion!,
9292
)
9393
: null,
9494
macOS: targetOS == OS.macOS
95-
? MacOSConfig(
95+
? MacOSCodeConfig(
9696
targetVersion: targetMacOSVersion ?? defaultMacOSVersion)
9797
: null,
9898
android: targetOS == OS.android
99-
? AndroidConfig(targetNdkApi: targetAndroidNdkApi!)
99+
? AndroidCodeConfig(targetNdkApi: targetAndroidNdkApi!)
100100
: null,
101101
);
102102
}
@@ -163,17 +163,17 @@ Future<LinkResult?> link(
163163
linkModePreference: linkModePreference,
164164
cCompiler: cCompiler ?? dartCICompilerConfig,
165165
iOS: targetOS == OS.iOS
166-
? IOSConfig(
166+
? IOSCodeConfig(
167167
targetSdk: targetIOSSdk!,
168168
targetVersion: targetIOSVersion!,
169169
)
170170
: null,
171171
macOS: targetOS == OS.macOS
172-
? MacOSConfig(
172+
? MacOSCodeConfig(
173173
targetVersion: targetMacOSVersion ?? defaultMacOSVersion)
174174
: null,
175175
android: targetOS == OS.android
176-
? AndroidConfig(targetNdkApi: targetAndroidNdkApi!)
176+
? AndroidCodeConfig(targetNdkApi: targetAndroidNdkApi!)
177177
: null,
178178
);
179179
}
@@ -239,17 +239,17 @@ Future<(BuildResult?, LinkResult?)> buildAndLink(
239239
linkModePreference: linkModePreference,
240240
cCompiler: cCompiler ?? dartCICompilerConfig,
241241
iOS: targetOS == OS.iOS
242-
? IOSConfig(
242+
? IOSCodeConfig(
243243
targetSdk: targetIOSSdk!,
244244
targetVersion: targetIOSVersion!,
245245
)
246246
: null,
247247
macOS: targetOS == OS.macOS
248-
? MacOSConfig(
248+
? MacOSCodeConfig(
249249
targetVersion: targetMacOSVersion ?? defaultMacOSVersion)
250250
: null,
251251
android: targetOS == OS.android
252-
? AndroidConfig(targetNdkApi: targetAndroidNdkApi!)
252+
? AndroidCodeConfig(targetNdkApi: targetAndroidNdkApi!)
253253
: null,
254254
);
255255
}
@@ -285,17 +285,17 @@ Future<(BuildResult?, LinkResult?)> buildAndLink(
285285
linkModePreference: linkModePreference,
286286
cCompiler: cCompiler ?? dartCICompilerConfig,
287287
iOS: targetOS == OS.iOS
288-
? IOSConfig(
288+
? IOSCodeConfig(
289289
targetSdk: targetIOSSdk!,
290290
targetVersion: targetIOSVersion!,
291291
)
292292
: null,
293293
macOS: targetOS == OS.macOS
294-
? MacOSConfig(
294+
? MacOSCodeConfig(
295295
targetVersion: targetMacOSVersion ?? defaultMacOSVersion)
296296
: null,
297297
android: targetOS == OS.android
298-
? AndroidConfig(targetNdkApi: targetAndroidNdkApi!)
298+
? AndroidCodeConfig(targetNdkApi: targetAndroidNdkApi!)
299299
: null,
300300
);
301301
}
@@ -374,15 +374,19 @@ final CCompilerConfig? dartCICompilerConfig = (() {
374374
.map((arg) => arg.trim())
375375
.where((arg) => arg.isNotEmpty)
376376
.toList();
377-
final hasEnvScriptArgs = envScriptArgs != null && envScriptArgs.isNotEmpty;
378377

379378
if (cc != null && ar != null && ld != null) {
380379
return CCompilerConfig(
381380
archiver: Uri.file(ar),
382381
compiler: Uri.file(cc),
383-
envScript: envScript != null ? Uri.file(envScript) : null,
384-
envScriptArgs: hasEnvScriptArgs ? envScriptArgs : null,
385382
linker: Uri.file(ld),
383+
windows: WindowsCCompilerConfig(
384+
developerCommandPrompt: envScript == null
385+
? null
386+
: DeveloperCommandPrompt(
387+
script: Uri.file(envScript),
388+
arguments: envScriptArgs ?? [],
389+
)),
386390
);
387391
}
388392
return null;

pkgs/native_assets_builder/test/helpers.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,14 @@ final cCompiler = (_cc == null || _ar == null || _ld == null)
190190
compiler: _cc!,
191191
archiver: _ar!,
192192
linker: _ld!,
193-
envScript: _envScript,
194-
envScriptArgs: _envScriptArgs,
193+
windows: _envScript == null
194+
? null
195+
: WindowsCCompilerConfig(
196+
developerCommandPrompt: DeveloperCommandPrompt(
197+
script: _envScript!,
198+
arguments: _envScriptArgs ?? [],
199+
),
200+
),
195201
);
196202

197203
extension on String {

pkgs/native_assets_builder/test/test_data/native_dynamic_linking_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void main() async {
4646
targetArchitecture: Architecture.current,
4747
targetOS: targetOS,
4848
macOS: targetOS == OS.macOS
49-
? MacOSConfig(targetVersion: defaultMacOSVersion)
49+
? MacOSCodeConfig(targetVersion: defaultMacOSVersion)
5050
: null,
5151
linkModePreference: LinkModePreference.dynamic,
5252
cCompiler: cCompiler,

pkgs/native_assets_builder/test/test_data/transformer_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ void main() async {
6464
targetArchitecture: architecture,
6565
targetOS: targetOS,
6666
macOS: targetOS == OS.macOS
67-
? MacOSConfig(targetVersion: defaultMacOSVersion)
67+
? MacOSCodeConfig(targetVersion: defaultMacOSVersion)
6868
: null,
6969
linkModePreference: LinkModePreference.dynamic,
7070
);

pkgs/native_assets_builder/test_data/wrong_build_output_3/hook/build.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@ const _rightContents = '''{
2121
"encodedAssets": [],
2222
"dependencies": [],
2323
"metadata": {},
24-
"version": "1.8.0"
24+
"version": "1.9.0"
2525
}''';

pkgs/native_assets_cli/example/build/download_asset/tool/build.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,15 @@ BuildInput createBuildInput(
9191
linkModePreference: LinkModePreference.dynamic,
9292
android: os != OS.android
9393
? null
94-
: AndroidConfig(
94+
: AndroidCodeConfig(
9595
targetNdkApi: androidTargetNdkApi,
9696
),
9797
iOS: os != OS.iOS
9898
? null
99-
: IOSConfig(
99+
: IOSCodeConfig(
100100
targetSdk: IOSSdk.fromString(iOSSdk!),
101101
targetVersion: iOSTargetVersion,
102102
),
103-
macOS: MacOSConfig(targetVersion: macOSTargetVersion));
103+
macOS: MacOSCodeConfig(targetVersion: macOSTargetVersion));
104104
return BuildInput(inputBuilder.json);
105105
}

pkgs/native_assets_cli/lib/code_assets.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,21 @@ export 'native_assets_cli.dart'
1111
EncodedAssetBuildOutputBuilder,
1212
EncodedAssetLinkOutputBuilder;
1313
export 'src/code_assets/architecture.dart' show Architecture;
14-
export 'src/code_assets/c_compiler_config.dart' show CCompilerConfig;
14+
export 'src/code_assets/c_compiler_config.dart'
15+
show CCompilerConfig, DeveloperCommandPrompt, WindowsCCompilerConfig;
1516
export 'src/code_assets/code_asset.dart' show CodeAsset, OSLibraryNaming;
1617
export 'src/code_assets/config.dart'
1718
show
18-
AndroidConfig,
19+
AndroidCodeConfig,
1920
CodeAssetBuildOutputBuilder,
2021
CodeAssetBuildOutputBuilderAdd,
2122
CodeAssetHookConfig,
2223
CodeAssetLinkInput,
2324
CodeAssetLinkOutputBuilder,
2425
CodeAssetLinkOutputBuilderAdd,
2526
CodeConfig,
26-
IOSConfig,
27-
MacOSConfig;
27+
IOSCodeConfig,
28+
MacOSCodeConfig;
2829
export 'src/code_assets/ios_sdk.dart' show IOSSdk;
2930
export 'src/code_assets/link_mode.dart'
3031
show

0 commit comments

Comments
 (0)