Skip to content

Commit f159aa2

Browse files
authored
WiX: parametrize authoring for toolchain MSIs
This is a follow up change to #428, #433 and #433. And the last change before adding full toolchain variant msi's. In this change we parametrize the authoring in the wxi files for bld, cli, dbg and ide. Similar to previous changes, this should not have any functional changes; it just makes the authoring reusable in the future to add new variants. The changes are mostly mechanical. e.g. a directory id `toolchain_asserts_usr_include` becomes `toolchain_$(VariantName)_usr_include`. This allows the same authoring to be used to create different layouts based on the variant without duplicating, and files added are added in one place. Changes include: - directory Ids that have variant name in them - Component and ComponentGroup Ids that have variant name in them - Upgrade Codes since these are specific to the msi - Cab name, again since these are different passed on msi - Product name, that is the name of the msi
1 parent bd9e9e9 commit f159aa2

File tree

9 files changed

+185
-167
lines changed

9 files changed

+185
-167
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2+
<?define ToolchainRoot = $(ImageRoot)\Toolchains\$(ProductVersion)+Asserts?>
3+
<?define VariantName = asserts ?>
4+
<?define VariantUpgradeCode = $(BldAssertsUpgradeCode)?>
5+
<?define VariantProductName = !(loc.BldAsserts_ProductName)?>
6+
<?define VariantCabinetName = bld.asserts.cab?>
7+
<?define ToolchainVersionedVariantDirectory = ToolchainVersionedAsserts ?>
8+
<?define VariantEnvironmentComponentGUID = ab52b870-23ee-42e8-9581-3fcbdfb9228c?>
9+
210
<?include ../bld.wxi ?>
311
</Wix>

platforms/Windows/bld/bld.wxi

Lines changed: 55 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,41 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
33

4-
<?define ToolchainRoot = $(ImageRoot)\Toolchains\$(ProductVersion)+Asserts?>
5-
64
<Package
75
Language="1033"
86
Manufacturer="!(loc.ManufacturerName)"
9-
Name="!(loc.BldAsserts_ProductName)"
10-
UpgradeCode="$(BldAssertsUpgradeCode)"
7+
Name="$(VariantProductName)"
8+
UpgradeCode="$(VariantUpgradeCode)"
119
Version="$(NonSemVerProductVersion)"
1210
Scope="$(PackageScope)">
1311

14-
<Media Id="1" Cabinet="bld.asserts.cab" EmbedCab="$(ArePackageCabsEmbedded)" />
12+
<Media Id="1" Cabinet="$(VariantCabinetName)" EmbedCab="$(ArePackageCabsEmbedded)" />
1513

16-
<WixVariable Id="SideBySidePackageUpgradeCode" Value="$(BldAssertsUpgradeCode)" />
14+
<WixVariable Id="SideBySidePackageUpgradeCode" Value="$(VariantUpgradeCode)" />
1715
<FeatureGroupRef Id="SideBySideUpgradeStrategy" />
1816

19-
<DirectoryRef Id="toolchain_asserts_usr_include">
20-
<Directory Id="toolchain_asserts_usr_include_llvm_c" Name="llvm-c" />
21-
<Directory Id="toolchain_asserts_usr_include_swift" Name="swift" />
17+
<DirectoryRef Id="toolchain_$(VariantName)_usr_include">
18+
<Directory Id="toolchain_$(VariantName)_usr_include_llvm_c" Name="llvm-c" />
19+
<Directory Id="toolchain_$(VariantName)_usr_include_swift" Name="swift" />
2220
</DirectoryRef>
2321

24-
<DirectoryRef Id="toolchain_asserts_usr_lib_swift">
25-
<Directory Id="toolchain_asserts_usr_lib_swift_migrator" Name="migrator" />
26-
<Directory Id="toolchain_asserts_usr_lib_swift_swiftToCxx" Name="swiftToCxx" />
22+
<DirectoryRef Id="toolchain_$(VariantName)_usr_lib_swift">
23+
<Directory Id="toolchain_$(VariantName)_usr_lib_swift_migrator" Name="migrator" />
24+
<Directory Id="toolchain_$(VariantName)_usr_lib_swift_swiftToCxx" Name="swiftToCxx" />
2725
</DirectoryRef>
2826

29-
<DirectoryRef Id="toolchain_asserts_usr_share">
30-
<Directory Id="toolchain_asserts_usr_share_clang" Name="clang" />
31-
<Directory Id="toolchain_asserts_usr_share_swift" Name="swift" />
32-
<Directory Id="toolchain_asserts_usr_share_doc" Name="doc">
33-
<Directory Id="toolchain_asserts_usr_share_doc_swift" Name="swift">
34-
<Directory Id="toolchain_asserts_usr_share_doc_swift_diagnostics" Name="diagnostics">
27+
<DirectoryRef Id="toolchain_$(VariantName)_usr_share">
28+
<Directory Id="toolchain_$(VariantName)_usr_share_clang" Name="clang" />
29+
<Directory Id="toolchain_$(VariantName)_usr_share_swift" Name="swift" />
30+
<Directory Id="toolchain_$(VariantName)_usr_share_doc" Name="doc">
31+
<Directory Id="toolchain_$(VariantName)_usr_share_doc_swift" Name="swift">
32+
<Directory Id="toolchain_$(VariantName)_usr_share_doc_swift_diagnostics" Name="diagnostics">
3533
</Directory>
3634
</Directory>
3735
</Directory>
3836
</DirectoryRef>
3937

40-
<ComponentGroup Id="cmark_gfm" Directory="toolchain_asserts_usr_bin">
38+
<ComponentGroup Id="cmark_gfm" Directory="toolchain_$(VariantName)_usr_bin">
4139
<Component>
4240
<File Source="$(ToolchainRoot)\usr\bin/cmark-gfm.dll" />
4341
</Component>
@@ -46,7 +44,7 @@
4644
</Component>
4745
</ComponentGroup>
4846

49-
<ComponentGroup Id="binutils" Directory="toolchain_asserts_usr_bin">
47+
<ComponentGroup Id="binutils" Directory="toolchain_$(VariantName)_usr_bin">
5048
<!-- TODO(compnerd) can we use symbolic links to llvm-ar.exe instead? -->
5149
<Component>
5250
<File Source="$(ToolchainRoot)\usr\bin\llvm-dlltool.exe" />
@@ -145,26 +143,26 @@
145143
</ComponentGroup>
146144

147145
<ComponentGroup Id="lto">
148-
<Component Directory="toolchain_asserts_usr_bin">
146+
<Component Directory="toolchain_$(VariantName)_usr_bin">
149147
<File Source="$(ToolchainRoot)\usr\bin\LTO.dll" />
150148
</Component>
151149

152-
<Component Directory="toolchain_asserts_usr_lib">
150+
<Component Directory="toolchain_$(VariantName)_usr_lib">
153151
<File Source="$(ToolchainRoot)\usr\lib\LTO.lib" />
154152
</Component>
155153

156-
<Component Directory="toolchain_asserts_usr_include_llvm_c">
154+
<Component Directory="toolchain_$(VariantName)_usr_include_llvm_c">
157155
<File Source="$(ToolchainRoot)\usr\include\llvm-c\lto.h" />
158156
</Component>
159157
</ComponentGroup>
160158

161-
<ComponentGroup Id="ClangFeatures" Directory="toolchain_asserts_usr_share_clang">
159+
<ComponentGroup Id="ClangFeatures" Directory="toolchain_$(VariantName)_usr_share_clang">
162160
<Component>
163161
<File Source="$(ToolchainRoot)\usr\share\clang\features.json" />
164162
</Component>
165163
</ComponentGroup>
166164

167-
<ComponentGroup Id="clang" Directory="toolchain_asserts_usr_bin">
165+
<ComponentGroup Id="clang" Directory="toolchain_$(VariantName)_usr_bin">
168166
<ComponentGroupRef Id="ClangFeatures" />
169167

170168
<!-- TODO(compnerd) can we use symbolic links to clang.exe instead? -->
@@ -195,7 +193,7 @@
195193
-->
196194
</ComponentGroup>
197195

198-
<ComponentGroup Id="lld" Directory="toolchain_asserts_usr_bin">
196+
<ComponentGroup Id="lld" Directory="toolchain_$(VariantName)_usr_bin">
199197
<!-- TODO(compnerd) can we use symbolic links to lld.exe instead? -->
200198
<Component>
201199
<File Source="$(ToolchainRoot)\usr\bin\ld.lld.exe" />
@@ -215,30 +213,30 @@
215213
</ComponentGroup>
216214

217215
<ComponentGroup Id="BlocksRuntime">
218-
<Component Directory="toolchain_asserts_usr_bin">
216+
<Component Directory="toolchain_$(VariantName)_usr_bin">
219217
<File Source="$(ToolchainRoot)\usr\bin\BlocksRuntime.dll" />
220218
</Component>
221219

222-
<Component Directory="toolchain_asserts_usr_lib">
220+
<Component Directory="toolchain_$(VariantName)_usr_lib">
223221
<File Source="$(ToolchainRoot)\usr\lib\BlocksRuntime.lib" />
224222
</Component>
225223

226224
<!-- TODO(compnerd) should we install the block headers? -->
227225
</ComponentGroup>
228226

229227
<ComponentGroup Id="libdispatch">
230-
<Component Directory="toolchain_asserts_usr_bin">
228+
<Component Directory="toolchain_$(VariantName)_usr_bin">
231229
<File Source="$(ToolchainRoot)\usr\bin\dispatch.dll" />
232230
</Component>
233231

234-
<Component Directory="toolchain_asserts_usr_lib">
232+
<Component Directory="toolchain_$(VariantName)_usr_lib">
235233
<File Source="$(ToolchainRoot)\usr\lib\dispatch.lib" />
236234
</Component>
237235

238236
<!-- TODO(compnerd) should we install the dispatch headers? -->
239237
</ComponentGroup>
240238

241-
<ComponentGroup Id="SwiftCxx" Directory="toolchain_asserts_usr_lib_swift_swiftToCxx">
239+
<ComponentGroup Id="SwiftCxx" Directory="toolchain_$(VariantName)_usr_lib_swift_swiftToCxx">
242240
<Component>
243241
<File Source="$(ToolchainRoot)\usr\lib\swift\swiftToCxx\_SwiftCxxInteroperability.h" />
244242
</Component>
@@ -249,27 +247,27 @@
249247
<File Source="$(ToolchainRoot)\usr\lib\swift\swiftToCxx\experimental-interoperability-version.json" />
250248
</Component>
251249

252-
<Component Directory="toolchain_asserts_usr_include_swift">
250+
<Component Directory="toolchain_$(VariantName)_usr_include_swift">
253251
<File Source="$(ToolchainRoot)\usr\include\swift\bridging.modulemap" />
254252
</Component>
255-
<Component Directory="toolchain_asserts_usr_include_swift">
253+
<Component Directory="toolchain_$(VariantName)_usr_include_swift">
256254
<File Source="$(ToolchainRoot)\usr\include\swift\bridging" />
257255
</Component>
258-
<Component Directory="toolchain_asserts_usr_include_swift">
256+
<Component Directory="toolchain_$(VariantName)_usr_include_swift">
259257
<File Source="$(ToolchainRoot)\usr\include\module.modulemap" />
260258
</Component>
261259
</ComponentGroup>
262260

263261
<ComponentGroup Id="SwiftDemangle">
264-
<Component Directory="toolchain_asserts_usr_bin">
262+
<Component Directory="toolchain_$(VariantName)_usr_bin">
265263
<File Source="$(ToolchainRoot)\usr\bin\swiftDemangle.dll" />
266264
</Component>
267-
<Component Directory="toolchain_asserts_usr_lib">
265+
<Component Directory="toolchain_$(VariantName)_usr_lib">
268266
<File Source="$(ToolchainRoot)\usr\lib\swiftDemangle.lib" />
269267
</Component>
270268
</ComponentGroup>
271269

272-
<ComponentGroup Id="SwiftEducationalNotes" Directory="toolchain_asserts_usr_share_doc_swift_diagnostics">
270+
<ComponentGroup Id="SwiftEducationalNotes" Directory="toolchain_$(VariantName)_usr_share_doc_swift_diagnostics">
273271
<Component>
274272
<File Source="$(ToolchainRoot)\usr\share\doc\swift\diagnostics\dynamic-callable-requirements.md" />
275273
</Component>
@@ -308,13 +306,13 @@
308306
</Component>
309307
</ComponentGroup>
310308

311-
<ComponentGroup Id="SwiftFeatures" Directory="toolchain_asserts_usr_share_swift">
309+
<ComponentGroup Id="SwiftFeatures" Directory="toolchain_$(VariantName)_usr_share_swift">
312310
<Component>
313311
<File Source="$(ToolchainRoot)\usr\share\swift\features.json" />
314312
</Component>
315313
</ComponentGroup>
316314

317-
<ComponentGroup Id="SwiftMigrator" Directory="toolchain_asserts_usr_lib_swift_migrator">
315+
<ComponentGroup Id="SwiftMigrator" Directory="toolchain_$(VariantName)_usr_lib_swift_migrator">
318316
<Component>
319317
<File Source="$(ToolchainRoot)\usr\lib\swift\migrator\ios4.json" />
320318
</Component>
@@ -347,7 +345,7 @@
347345
</Component>
348346
</ComponentGroup>
349347

350-
<ComponentGroup Id="swift" Directory="toolchain_asserts_usr_bin">
348+
<ComponentGroup Id="swift" Directory="toolchain_$(VariantName)_usr_bin">
351349
<ComponentGroupRef Id="SwiftCxx" />
352350
<ComponentGroupRef Id="SwiftDemangle" />
353351
<ComponentGroupRef Id="SwiftEducationalNotes" />
@@ -372,7 +370,7 @@
372370
</Component>
373371
</ComponentGroup>
374372

375-
<ComponentGroup Id="SwiftMacros" Directory="toolchain_asserts_usr_bin">
373+
<ComponentGroup Id="SwiftMacros" Directory="toolchain_$(VariantName)_usr_bin">
376374
<Component>
377375
<File Source="$(ToolchainRoot)\usr\bin\ObservationMacros.dll" />
378376
</Component>
@@ -381,25 +379,25 @@
381379
</Component>
382380
</ComponentGroup>
383381

384-
<ComponentGroup Id="FoundationMacros" Directory="toolchain_asserts_usr_bin">
382+
<ComponentGroup Id="FoundationMacros" Directory="toolchain_$(VariantName)_usr_bin">
385383
<Component>
386384
<File Source="$(ToolchainRoot)\usr\bin\FoundationMacros.dll" />
387385
</Component>
388386
</ComponentGroup>
389387

390-
<ComponentGroup Id="TestingMacros" Directory="toolchain_asserts_usr_bin">
388+
<ComponentGroup Id="TestingMacros" Directory="toolchain_$(VariantName)_usr_bin">
391389
<Component>
392390
<File Source="$(ToolchainRoot)\usr\bin\TestingMacros.dll" />
393391
</Component>
394392
</ComponentGroup>
395393

396-
<ComponentGroup Id="argument_parser" Directory="toolchain_asserts_usr_bin">
394+
<ComponentGroup Id="argument_parser" Directory="toolchain_$(VariantName)_usr_bin">
397395
<Component>
398396
<File Source="$(ToolchainRoot)\usr\bin\ArgumentParser.dll" />
399397
</Component>
400398
</ComponentGroup>
401399

402-
<ComponentGroup Id="tools_support_core" Directory="toolchain_asserts_usr_bin">
400+
<ComponentGroup Id="tools_support_core" Directory="toolchain_$(VariantName)_usr_bin">
403401
<Component>
404402
<File Source="$(ToolchainRoot)\usr\bin\TSCBasic.dll" />
405403
</Component>
@@ -408,7 +406,7 @@
408406
</Component>
409407
</ComponentGroup>
410408

411-
<ComponentGroup Id="swift_driver" Directory="toolchain_asserts_usr_bin">
409+
<ComponentGroup Id="swift_driver" Directory="toolchain_$(VariantName)_usr_bin">
412410
<!-- TODO(compnerd) can we use symbolic links to swift.exe instead? -->
413411
<Component>
414412
<File Name="swiftc.exe" Source="$(ToolchainRoot)\usr\bin\swift-driver.exe" />
@@ -432,7 +430,7 @@
432430
</Component>
433431
</ComponentGroup>
434432

435-
<ComponentGroup Id="compiler_swift_syntax" Directory="toolchain_asserts_usr_bin">
433+
<ComponentGroup Id="compiler_swift_syntax" Directory="toolchain_$(VariantName)_usr_bin">
436434
<Component>
437435
<File Source="$(ToolchainRoot)\usr\bin\_CompilerSwiftBasicFormat.dll" />
438436
</Component>
@@ -474,7 +472,7 @@
474472
</Component>
475473
</ComponentGroup>
476474

477-
<ComponentGroup Id="swift_syntax" Directory="toolchain_asserts_usr_bin">
475+
<ComponentGroup Id="swift_syntax" Directory="toolchain_$(VariantName)_usr_bin">
478476
<Component>
479477
<File Source="$(ToolchainRoot)\usr\bin\SwiftBasicFormat.dll" />
480478
</Component>
@@ -516,7 +514,7 @@
516514
</Component>
517515
</ComponentGroup>
518516

519-
<ComponentGroup Id="plugin_server" Directory="toolchain_asserts_usr_bin">
517+
<ComponentGroup Id="plugin_server" Directory="toolchain_$(VariantName)_usr_bin">
520518
<Component>
521519
<File Source="$(ToolchainRoot)\usr\bin\swift-plugin-server.exe" />
522520
</Component>
@@ -525,7 +523,7 @@
525523
</Component>
526524
</ComponentGroup>
527525

528-
<ComponentGroup Id="mimalloc" Directory="toolchain_asserts_usr_bin">
526+
<ComponentGroup Id="mimalloc" Directory="toolchain_$(VariantName)_usr_bin">
529527
<Component>
530528
<File Source="$(ToolchainRoot)\usr\bin\mimalloc.dll" />
531529
</Component>
@@ -539,18 +537,18 @@
539537
</ComponentGroup>
540538

541539
<ComponentGroup Id="Configuration">
542-
<Component Directory="ToolchainVersionedAsserts">
540+
<Component Directory="$(ToolchainVersionedVariantDirectory)">
543541
<File Source="$(ToolchainRoot)\ToolchainInfo.plist" />
544542
</Component>
545543
</ComponentGroup>
546544

547545
<ComponentGroup Id="EnvironmentVariables">
548-
<Component Id="UserPathVariable" Condition="NOT ALLUSERS=1" Directory="toolchain_asserts_usr_bin" Guid="ab52b870-23ee-42e8-9581-3fcbdfb9228c">
549-
<Environment Action="set" Name="Path" Part="last" Permanent="no" System="no" Value="[toolchain_asserts_usr_bin]" />
546+
<Component Id="UserPathVariable" Condition="NOT ALLUSERS=1" Directory="toolchain_$(VariantName)_usr_bin" Guid="$(VariantEnvironmentComponentGUID)">
547+
<Environment Action="set" Name="Path" Part="last" Permanent="no" System="no" Value="[toolchain_$(VariantName)_usr_bin]" />
550548
</Component>
551549
</ComponentGroup>
552550

553-
<Feature Id="BuildTools" AllowAbsent="no" Title="!(loc.BldAsserts_ProductName)">
551+
<Feature Id="BuildTools" AllowAbsent="no" Title="$(VariantProductName)">
554552
<ComponentGroupRef Id="cmark_gfm" />
555553

556554
<ComponentGroupRef Id="binutils" />
@@ -571,9 +569,9 @@
571569
<ComponentGroupRef Id="TestingMacros" />
572570
<ComponentGroupRef Id="mimalloc" />
573571

574-
<ComponentGroupRef Id="ClangResources_asserts" />
575-
<ComponentGroupRef Id="SwiftClangResources_asserts" />
576-
<ComponentGroupRef Id="SwiftStaticClangResources_asserts" />
572+
<ComponentGroupRef Id="ClangResources_$(VariantName)" />
573+
<ComponentGroupRef Id="SwiftClangResources_$(VariantName)" />
574+
<ComponentGroupRef Id="SwiftStaticClangResources_$(VariantName)" />
577575

578576
<ComponentGroupRef Id="Configuration" />
579577
<ComponentGroupRef Id="EnvironmentVariables" />
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2+
<?define ToolchainRoot = $(ImageRoot)\Toolchains\$(ProductVersion)+Asserts?>
3+
<?define VariantName = asserts ?>
4+
<?define VariantUpgradeCode = $(CliAssertsUpgradeCode)?>
5+
<?define VariantProductName = !(loc.CliAsserts_ProductName)?>
6+
<?define VariantCabinetName = cli.asserts.cab?>
7+
28
<?include ../cli.wxi ?>
39
</Wix>

0 commit comments

Comments
 (0)