Skip to content

Commit 52645d6

Browse files
committed
[native_assets_cli] Nest config extensions
1 parent 2335817 commit 52645d6

15 files changed

+450
-175
lines changed

pkgs/code_assets/doc/schema/shared/shared_definitions.schema.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,17 @@
255255
"properties": {
256256
"code": {
257257
"$ref": "#/definitions/CodeConfig"
258+
},
259+
"extensions": {
260+
"$ref": "#/definitions/ConfigExtensions"
261+
}
262+
}
263+
},
264+
"ConfigExtensions": {
265+
"type": "object",
266+
"properties": {
267+
"code_assets": {
268+
"$ref": "#/definitions/CodeConfig"
258269
}
259270
}
260271
},

pkgs/code_assets/test/data/build_input_android.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,21 @@
1717
"target_architecture": "arm",
1818
"target_os": "android"
1919
},
20+
"extensions": {
21+
"code_assets": {
22+
"android": {
23+
"target_ndk_api": 21
24+
},
25+
"c_compiler": {
26+
"ar": "/Users/dacoharkes/Library/Android/sdk/ndk/28.0.12674087/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar",
27+
"cc": "/Users/dacoharkes/Library/Android/sdk/ndk/28.0.12674087/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang",
28+
"ld": "/Users/dacoharkes/Library/Android/sdk/ndk/28.0.12674087/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
29+
},
30+
"link_mode_preference": "dynamic",
31+
"target_architecture": "arm",
32+
"target_os": "android"
33+
}
34+
},
2035
"linking_enabled": true
2136
},
2237
"out_dir": "/Users/dacoharkes/src/dacoharkes/playground/my_package/example/.dart_tool/native_assets_builder/my_package/c540d75d10834674921701cd6c3c7c15/out/",

pkgs/code_assets/test/data/build_input_ios.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,22 @@
1818
"target_architecture": "arm64",
1919
"target_os": "ios"
2020
},
21+
"extensions": {
22+
"code_assets": {
23+
"c_compiler": {
24+
"ar": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar",
25+
"cc": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang",
26+
"ld": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld"
27+
},
28+
"ios": {
29+
"target_sdk": "iphonesimulator",
30+
"target_version": 12
31+
},
32+
"link_mode_preference": "dynamic",
33+
"target_architecture": "arm64",
34+
"target_os": "ios"
35+
}
36+
},
2137
"linking_enabled": false
2238
},
2339
"out_dir": "/Users/dacoharkes/src/dacoharkes/playground/my_package/example/.dart_tool/native_assets_builder/my_package/51d66b45a7c440edc44bf124509a5dda/out/",

pkgs/code_assets/test/data/build_input_linux.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,18 @@
1414
"target_architecture": "x64",
1515
"target_os": "linux"
1616
},
17+
"extensions": {
18+
"code_assets": {
19+
"c_compiler": {
20+
"ar": "/usr/lib/llvm-16/bin/llvm-ar",
21+
"cc": "/usr/lib/llvm-16/bin/clang",
22+
"ld": "/usr/lib/llvm-16/bin/ld.lld"
23+
},
24+
"link_mode_preference": "dynamic",
25+
"target_architecture": "x64",
26+
"target_os": "linux"
27+
}
28+
},
1729
"linking_enabled": false
1830
},
1931
"out_dir": "/usr/local/google/home/dacoharkes/src/dacoharkes/playground/my_package/example/.dart_tool/native_assets_builder/my_package/79cc7fbaec53b1465c3e388e6848234b/out/",

pkgs/code_assets/test/data/build_input_macos.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,21 @@
1717
"target_architecture": "arm64",
1818
"target_os": "macos"
1919
},
20+
"extensions": {
21+
"code_assets": {
22+
"c_compiler": {
23+
"ar": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar",
24+
"cc": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang",
25+
"ld": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld"
26+
},
27+
"link_mode_preference": "dynamic",
28+
"macos": {
29+
"target_version": 13
30+
},
31+
"target_architecture": "arm64",
32+
"target_os": "macos"
33+
}
34+
},
2035
"linking_enabled": false
2136
},
2237
"dependency_metadata": {

pkgs/code_assets/test/data/build_input_windows.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,26 @@
2222
"target_architecture": "x64",
2323
"target_os": "windows"
2424
},
25+
"extensions": {
26+
"code_assets": {
27+
"c_compiler": {
28+
"ar": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\bin\\Hostx64\\x64\\lib.exe",
29+
"cc": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\bin\\Hostx64\\x64\\cl.exe",
30+
"env_script": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat",
31+
"env_script_arguments": [],
32+
"ld": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\bin\\Hostx64\\x64\\link.exe",
33+
"windows": {
34+
"developer_command_prompt": {
35+
"arguments": [],
36+
"script": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat"
37+
}
38+
}
39+
},
40+
"link_mode_preference": "dynamic",
41+
"target_architecture": "x64",
42+
"target_os": "windows"
43+
}
44+
},
2545
"linking_enabled": false
2646
},
2747
"out_dir": "C:\\src\\dacoharkes\\playground\\my_package\\example\\.dart_tool\\native_assets_builder\\my_package\\190c04c47dc2f9eb26d2411b1968b2cf\\out\\",

pkgs/code_assets/test/data/link_input_macos.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,21 @@
2828
},
2929
"target_architecture": "arm64",
3030
"target_os": "macos"
31+
},
32+
"extensions": {
33+
"code_assets": {
34+
"c_compiler": {
35+
"ar": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar",
36+
"cc": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang",
37+
"ld": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld"
38+
},
39+
"link_mode_preference": "dynamic",
40+
"macos": {
41+
"target_version": 13
42+
},
43+
"target_architecture": "arm64",
44+
"target_os": "macos"
45+
}
3146
}
3247
},
3348
"out_dir": "/Users/dacoharkes/src/dacoharkes/playground/my_package/example/.dart_tool/native_assets_builder/my_package/ca4e7d3d4e7b8912cbd24d9e8a6cecdc/out/",

pkgs/code_assets/test/schema/schema_test.dart

Lines changed: 90 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -96,21 +96,25 @@ FieldsFunction _codeFields(AllTestData allTestData) {
9696
];
9797

9898
return <(List<Object>, void Function(ValidationResults result))>[
99-
if (inputOrOutput == InputOrOutput.input) ...[
100-
(['config', 'code', 'c_compiler'], expectOptionalFieldMissing),
101-
(['config', 'code', 'c_compiler', 'ar'], expectRequiredFieldMissing),
102-
(['config', 'code', 'c_compiler', 'cc'], expectRequiredFieldMissing),
103-
(['config', 'code', 'c_compiler', 'ld'], expectRequiredFieldMissing),
104-
(['config', 'code', 'macos'], expectRequiredFieldMissing),
105-
(
106-
['config', 'code', 'macos', 'target_version'],
107-
expectRequiredFieldMissing,
108-
),
109-
if (hook == Hook.link) ...[
110-
for (final field in requiredCodeAssetFields)
111-
(['assets', 0, ...field], expectRequiredFieldMissing),
99+
for (final codeConfigPath in [
100+
['config', 'code'],
101+
['config', 'extensions', 'code_assets'],
102+
])
103+
if (inputOrOutput == InputOrOutput.input) ...[
104+
([...codeConfigPath, 'c_compiler'], expectOptionalFieldMissing),
105+
([...codeConfigPath, 'c_compiler', 'ar'], expectRequiredFieldMissing),
106+
([...codeConfigPath, 'c_compiler', 'cc'], expectRequiredFieldMissing),
107+
([...codeConfigPath, 'c_compiler', 'ld'], expectRequiredFieldMissing),
108+
([...codeConfigPath, 'macos'], expectRequiredFieldMissing),
109+
(
110+
[...codeConfigPath, 'macos', 'target_version'],
111+
expectRequiredFieldMissing,
112+
),
113+
if (hook == Hook.link) ...[
114+
for (final field in requiredCodeAssetFields)
115+
(['assets', 0, ...field], expectRequiredFieldMissing),
116+
],
112117
],
113-
],
114118
if (inputOrOutput == InputOrOutput.output) ...[
115119
for (final field in requiredCodeAssetFields)
116120
(['assets', 0, ...field], expectRequiredFieldMissing),
@@ -147,55 +151,74 @@ _codeFieldsWindows({
147151
required Hook hook,
148152
required Party party,
149153
}) => <(List<Object>, void Function(ValidationResults result))>[
150-
if (inputOrOutput == InputOrOutput.input && hook == Hook.build) ...[
151-
(
152-
['config', 'code', 'c_compiler', 'env_script'],
153-
expectOptionalFieldMissing,
154-
),
155-
(
156-
['config', 'code', 'c_compiler', 'env_script_arguments'],
157-
expectOptionalFieldMissing,
158-
),
159-
(['config', 'code', 'c_compiler', 'windows'], expectRequiredFieldMissing),
160-
(
161-
['config', 'code', 'c_compiler', 'windows', 'developer_command_prompt'],
162-
expectOptionalFieldMissing,
163-
),
164-
(
165-
[
166-
'config',
167-
'code',
168-
'c_compiler',
169-
'windows',
170-
'developer_command_prompt',
171-
'script',
172-
],
173-
expectRequiredFieldMissing,
174-
),
175-
(
176-
[
177-
'config',
178-
'code',
179-
'c_compiler',
180-
'windows',
181-
'developer_command_prompt',
182-
'arguments',
183-
],
184-
expectRequiredFieldMissing,
185-
),
186-
],
154+
if (inputOrOutput == InputOrOutput.input && hook == Hook.build)
155+
for (final codeConfigPath in [
156+
['config', 'code'],
157+
['config', 'extensions', 'code_assets'],
158+
]) ...[
159+
(
160+
[...codeConfigPath, 'c_compiler', 'env_script'],
161+
expectOptionalFieldMissing,
162+
),
163+
(
164+
[...codeConfigPath, 'c_compiler', 'env_script_arguments'],
165+
expectOptionalFieldMissing,
166+
),
167+
(
168+
[...codeConfigPath, 'c_compiler', 'windows'],
169+
expectRequiredFieldMissing,
170+
),
171+
(
172+
[
173+
...codeConfigPath,
174+
'c_compiler',
175+
'windows',
176+
'developer_command_prompt',
177+
],
178+
expectOptionalFieldMissing,
179+
),
180+
(
181+
[
182+
'config',
183+
'code',
184+
'c_compiler',
185+
'windows',
186+
'developer_command_prompt',
187+
'script',
188+
],
189+
expectRequiredFieldMissing,
190+
),
191+
(
192+
[
193+
'config',
194+
'code',
195+
'c_compiler',
196+
'windows',
197+
'developer_command_prompt',
198+
'arguments',
199+
],
200+
expectRequiredFieldMissing,
201+
),
202+
],
187203
];
188204

189205
List<(List<Object>, void Function(ValidationResults result))> _codeFieldsIOS({
190206
required InputOrOutput inputOrOutput,
191207
required Hook hook,
192208
required Party party,
193209
}) => <(List<Object>, void Function(ValidationResults result))>[
194-
if (inputOrOutput == InputOrOutput.input && hook == Hook.build) ...[
195-
(['config', 'code', 'ios'], expectRequiredFieldMissing),
196-
(['config', 'code', 'ios', 'target_sdk'], expectRequiredFieldMissing),
197-
(['config', 'code', 'ios', 'target_version'], expectRequiredFieldMissing),
198-
],
210+
if (inputOrOutput == InputOrOutput.input && hook == Hook.build)
211+
for (final codeConfigPath in [
212+
['config', 'code'],
213+
['config', 'extensions', 'code_assets'],
214+
]) ...[
215+
([...codeConfigPath, 'ios'], expectRequiredFieldMissing),
216+
([...codeConfigPath, 'ios', 'target_sdk'], expectRequiredFieldMissing),
217+
(
218+
[...codeConfigPath, 'ios', 'target_version'],
219+
expectRequiredFieldMissing,
220+
),
221+
],
199222
];
200223

201224
List<(List<Object>, void Function(ValidationResults result))>
@@ -204,11 +227,15 @@ _codeFieldsAndroid({
204227
required Hook hook,
205228
required Party party,
206229
}) => <(List<Object>, void Function(ValidationResults result))>[
207-
if (inputOrOutput == InputOrOutput.input && hook == Hook.build) ...[
208-
(['config', 'code', 'android'], expectRequiredFieldMissing),
209-
(
210-
['config', 'code', 'android', 'target_ndk_api'],
211-
expectRequiredFieldMissing,
212-
),
213-
],
230+
if (inputOrOutput == InputOrOutput.input && hook == Hook.build)
231+
for (final codeConfigPath in [
232+
['config', 'code'],
233+
['config', 'extensions', 'code_assets'],
234+
]) ...[
235+
([...codeConfigPath, 'android'], expectRequiredFieldMissing),
236+
(
237+
[...codeConfigPath, 'android', 'target_ndk_api'],
238+
expectRequiredFieldMissing,
239+
),
240+
],
214241
];

pkgs/hook/doc/schema/shared/shared_definitions.schema.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,19 @@
8989
"items": {
9090
"type": "string"
9191
}
92+
},
93+
"extensions": {
94+
"$ref": "#/definitions/ConfigExtensions"
9295
}
9396
},
9497
"required": [
9598
"build_asset_types"
9699
]
97100
},
101+
"ConfigExtensions": {
102+
"type": "object",
103+
"additionalProperties": true
104+
},
98105
"HookInput": {
99106
"type": "object",
100107
"properties": {

pkgs/hook/tool/generate_syntax.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ void main(List<String> args) {
4040
publicSetters: [
4141
'BuildOutput',
4242
'Config',
43+
'ConfigExtensions',
4344
'HookInput',
4445
'HookOutput',
4546
'LinkOutput',
@@ -56,6 +57,7 @@ void main(List<String> args) {
5657
'DeveloperCommandPrompt',
5758
'CodeConfig',
5859
'Config',
60+
'ConfigExtensions',
5961
'IOSCodeConfig',
6062
'LinkMode',
6163
'DynamicLoadingBundleLinkMode',

0 commit comments

Comments
 (0)