Skip to content

Commit b5b784a

Browse files
committed
Bootstrap the main build through the Antlr3.CodeGenerator NuGet package
1 parent b0d30ce commit b5b784a

File tree

7 files changed

+66
-77
lines changed

7 files changed

+66
-77
lines changed

Directory.Build.props

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,12 @@
2323
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)Antlr3.ruleset</CodeAnalysisRuleSet>
2424
</PropertyGroup>
2525

26+
<PropertyGroup>
27+
<BootstrapBuild Condition="'$(BootstrapBuild)' == '' AND Exists('$(MSBuildThisFileDirectory)NuGet.config')">True</BootstrapBuild>
28+
</PropertyGroup>
29+
30+
<ItemGroup Condition="'$(BootstrapBuild)' == 'true'">
31+
<PackageReference Include="Antlr3.CodeGenerator" Version="3.5.2-dev" />
32+
</ItemGroup>
33+
2634
</Project>

Directory.Build.targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
<None Condition="'$(SignAssembly)' == 'true'" Include="$(AssemblyOriginatorKeyFile)" Link="%(Filename)%(Extension)" />
66
</ItemGroup>
77

8-
<PropertyGroup>
8+
<PropertyGroup Condition="'$(BootstrapBuild)' != 'true'">
99
<!-- Folder containing AntlrBuildTask.dll -->
1010
<AntlrBuildTaskPath>$(MSBuildThisFileDirectory)build\Bootstrap</AntlrBuildTaskPath>
1111
<!-- Path to the ANTLR Tool itself. -->
1212
<AntlrToolPath>$(MSBuildThisFileDirectory)build\Bootstrap\Antlr3.exe</AntlrToolPath>
1313
</PropertyGroup>
1414

15-
<Import Project="$(MSBuildThisFileDirectory)build\Bootstrap\Antlr3.targets" />
15+
<Import Condition="'$(BootstrapBuild)' != 'true'" Project="$(MSBuildThisFileDirectory)build\Bootstrap\Antlr3.targets" />
1616

1717
</Project>

NuGet.config.bootstrap

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<configuration>
3+
<config>
4+
<add key="globalPackagesFolder" value="packages" />
5+
</config>
6+
<packageSources>
7+
<add key="Local Build" value=".\build\prep\nuget" />
8+
</packageSources>
9+
</configuration>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project>
3+
</Project>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project>
3+
</Project>

build/prep/Antlr3.CodeGenerator.nuspec

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,33 @@
2121
<files>
2222
<!-- Tools -->
2323

24-
<file src="Bootstrap\**\*.*" target="tools"/>
24+
<file src="..\..\bin\$Configuration$\Antlr3.exe" target="tools"/>
25+
<file src="..\..\bin\$Configuration$\Antlr3.pdb" target="tools"/>
26+
<file src="..\..\bin\$Configuration$\Antlr3.exe.config" target="tools"/>
27+
<file src="..\..\bin\$Configuration$\Antlr3.Runtime.Debug.dll" target="tools"/>
28+
<file src="..\..\bin\$Configuration$\Antlr3.Runtime.Debug.pdb" target="tools"/>
29+
<file src="..\..\bin\$Configuration$\Antlr3.Runtime.dll" target="tools"/>
30+
<file src="..\..\bin\$Configuration$\Antlr3.Runtime.pdb" target="tools"/>
31+
<file src="..\..\bin\$Configuration$\Antlr4.StringTemplate.dll" target="tools"/>
32+
<file src="..\..\bin\$Configuration$\Antlr4.StringTemplate.pdb" target="tools"/>
33+
<file src="..\..\bin\$Configuration$\Codegen\Templates\*.stg" target="tools\Codegen\Templates"/>
34+
<file src="..\..\bin\$Configuration$\Codegen\Templates\CSharp2\*.stg" target="tools\Codegen\Templates\CSharp2"/>
35+
<file src="..\..\bin\$Configuration$\Codegen\Templates\CSharp3\*.stg" target="tools\Codegen\Templates\CSharp3"/>
36+
<file src="..\..\bin\$Configuration$\Targets\Antlr3.Targets.CSharp2.dll" target="tools\Targets"/>
37+
<file src="..\..\bin\$Configuration$\Targets\Antlr3.Targets.CSharp2.pdb" target="tools\Targets"/>
38+
<file src="..\..\bin\$Configuration$\Targets\Antlr3.Targets.CSharp3.dll" target="tools\Targets"/>
39+
<file src="..\..\bin\$Configuration$\Targets\Antlr3.Targets.CSharp3.pdb" target="tools\Targets"/>
40+
<file src="..\..\bin\$Configuration$\Tool\Templates\**\*.stg" target="tools\Tool\Templates"/>
2541

2642
<!-- Build Configuration -->
2743

28-
<file src="Tool\Antlr3.props" target="build\Antlr3.CodeGenerator.props"/>
29-
<file src="Tool\Antlr3.targets" target="build\Antlr3.CodeGenerator.targets"/>
30-
<file src="Tool\AntlrBuildTask.dll" target="build"/>
31-
<file src="Tool\Rules\Antlr3.ProjectItemsSchema.xml" target="build\Rules" />
32-
<file src="Tool\Rules\Antlr3.xml" target="build\Rules" />
33-
<file src="Tool\Rules\AntlrAbstractGrammar.xml" target="build\Rules" />
34-
<file src="Tool\Rules\AntlrTokens.xml" target="build\Rules" />
44+
<file src="..\..\bin\$Configuration$\Antlr3.props" target="build\Antlr3.CodeGenerator.props" />
45+
<file src="..\..\bin\$Configuration$\Antlr3.targets" target="build\Antlr3.CodeGenerator.targets" />
46+
<file src="..\..\bin\$Configuration$\AntlrBuildTask.dll" target="build" />
47+
<file src="..\..\bin\$Configuration$\AntlrBuildTask.pdb" target="build" />
48+
<file src="..\..\bin\$Configuration$\Rules\Antlr3.ProjectItemsSchema.xml" target="build\Rules" />
49+
<file src="..\..\bin\$Configuration$\Rules\Antlr3.xml" target="build\Rules" />
50+
<file src="..\..\bin\$Configuration$\Rules\AntlrAbstractGrammar.xml" target="build\Rules" />
51+
<file src="..\..\bin\$Configuration$\Rules\AntlrTokens.xml" target="build\Rules" />
3552
</files>
3653
</package>

build/prep/prepare.ps1

Lines changed: 16 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ param (
66
[switch]$NoValidate
77
)
88

9+
$AntlrVersion = "3.5.2-dev"
10+
$STVersion = "4.0.9-dev"
11+
912
# build the solution
1013
$SolutionPath = "..\..\Antlr3.sln"
1114

@@ -43,6 +46,11 @@ If ($Logger) {
4346
$LoggerArgument = "/logger:$Logger"
4447
}
4548

49+
# Make sure we don't have a stray config file from the bootstrap build
50+
If (Test-Path '..\..\NuGet.config') {
51+
Remove-Item '..\..\NuGet.config'
52+
}
53+
4654
# Restore packages
4755
.\NuGet.exe update -self
4856
.\NuGet.exe restore $SolutionPath -Project2ProjectTimeOut 1200
@@ -57,82 +65,25 @@ If (-not $?) {
5765
$ArchivePath = ".\Backup\Bootstrap-" + [System.IO.Path]::GetFileNameWithoutExtension([System.IO.Path]::GetRandomFileName()) + ".7z"
5866
.\7z.exe a -r $ArchivePath "..\Bootstrap\*"
5967

60-
# copy the new bootstrap files
61-
if ($DebugBuild) {
62-
$BootstrapBinaries = "Antlr3.exe", "Antlr3.exe.config", "Antlr3.Runtime.dll", "Antlr3.Runtime.Debug.dll", "Antlr4.StringTemplate.dll", "Antlr4.StringTemplate.Visualizer.dll", "Antlr3.targets", "Antlr3.props", "AntlrBuildTask.dll"
63-
}
64-
else {
65-
$BootstrapBinaries = "Antlr3.exe", "Antlr3.exe.config", "Antlr3.Runtime.dll", "Antlr3.Runtime.Debug.dll", "Antlr4.StringTemplate.dll", "Antlr3.targets", "Antlr3.props", "AntlrBuildTask.dll"
66-
}
67-
68-
$BootstrapBinaries | ForEach-Object {
69-
copy -force "..\..\bin\$BuildConfig\$_" "..\Bootstrap"
70-
If (-not $?) {
71-
$host.ui.WriteErrorLine("Bootstrap update failed, Aborting!")
72-
exit 1
73-
}
74-
}
75-
76-
If (-not $?) {
77-
$host.ui.WriteErrorLine("Bootstrap update failed, Aborting!")
78-
exit 1
79-
}
80-
81-
if (-not (Test-Path "..\Bootstrap\Codegen\Templates\CSharp2")) {
82-
mkdir "..\Bootstrap\Codegen\Templates\CSharp2"
83-
}
84-
85-
copy -force "..\..\bin\$BuildConfig\Codegen\Templates\LeftRecursiveRules.stg" "..\Bootstrap\Codegen\Templates"
86-
If (-not $?) {
87-
$host.ui.WriteErrorLine("Bootstrap update failed, Aborting!")
88-
exit 1
89-
}
90-
91-
copy -force "..\..\bin\$BuildConfig\Codegen\Templates\CSharp2\*" "..\Bootstrap\Codegen\Templates\CSharp2"
92-
If (-not $?) {
93-
$host.ui.WriteErrorLine('Bootstrap update failed, Aborting!')
94-
exit 1
95-
}
96-
97-
copy -force "..\..\bin\$BuildConfig\Codegen\Templates\CSharp3\*" "..\Bootstrap\Codegen\Templates\CSharp3"
98-
If (-not $?) {
99-
$host.ui.WriteErrorLine("Bootstrap update failed, Aborting!")
100-
exit 1
101-
}
102-
103-
copy -force "..\..\bin\$BuildConfig\Targets\Antlr3.Targets.CSharp2.dll" "..\Bootstrap\Targets"
104-
If (-not $?) {
105-
$host.ui.WriteErrorLine("Bootstrap update failed, Aborting!")
106-
exit 1
107-
}
108-
109-
copy -force "..\..\bin\$BuildConfig\Targets\Antlr3.Targets.CSharp3.dll" "..\Bootstrap\Targets"
110-
If (-not $?) {
111-
$host.ui.WriteErrorLine("Bootstrap update failed, Aborting!")
112-
exit 1
113-
}
114-
115-
copy -r -force "..\..\bin\$BuildConfig\Tool\*" "..\Bootstrap\Tool"
116-
If (-not $?) {
117-
$host.ui.WriteErrorLine("Bootstrap update failed, Aborting!")
118-
exit 1
119-
}
120-
121-
copy -r -force "..\..\bin\$BuildConfig\Rules\*" "..\Bootstrap"
68+
# Build Antlr3.CodeGenerator so we can use it for the boostrap build
69+
.\NuGet.exe pack .\Antlr3.CodeGenerator.nuspec -OutputDirectory nuget -Prop Configuration=$BuildConfig -Version $AntlrVersion -Prop ANTLRVersion=$AntlrVersion -Prop STVersion=$STVersion -Symbols
12270
If (-not $?) {
123-
$host.ui.WriteErrorLine("Bootstrap update failed, Aborting!")
71+
$host.ui.WriteErrorLine("Failed to create NuGet package prior to bootstrap, Aborting!")
12472
exit 1
12573
}
12674

127-
Remove-Item -force "..\Bootstrap\Tool\Templates\messages\formats\gnu.stg"
128-
12975
# build the project again with the new bootstrap files
76+
copy -force '..\..\NuGet.config.bootstrap' '..\..\NuGet.config'
77+
.\NuGet.exe restore $SolutionPath -Project2ProjectTimeOut 1200
13078
&$msbuild /nologo /m /nr:false /t:rebuild "/verbosity:$Verbosity" /p:Configuration=$BuildConfig $SolutionPath
13179
If (-not $?) {
13280
$host.ui.WriteErrorLine("Build Failed, Aborting!")
81+
Remove-Item '..\..\NuGet.config'
13382
exit 1
13483
}
13584

85+
Remove-Item '..\..\NuGet.config'
86+
13687
# copy files from the build
13788
mkdir Runtime
13889
mkdir Tool
@@ -225,8 +176,6 @@ copy "..\..\bin\$BuildConfig\Antlr4.StringTemplate.Visualizer.xml" ".\ST4"
225176
copy "..\..\LICENSE.txt" ".\ST4"
226177

227178
# compress the distributable packages
228-
$AntlrVersion = "3.5.2-dev"
229-
$STVersion = "4.0.9-dev"
230179

231180
$ArchivePath = ".\dist\antlr-dotnet-csharpbootstrap-" + $AntlrVersion + ".7z"
232181
.\7z.exe a -r -mx9 $ArchivePath ".\Bootstrap\*"

0 commit comments

Comments
 (0)