Skip to content

Commit c14c2bb

Browse files
Alexander OvchinnikovAlexander Ovchinnikov
Alexander Ovchinnikov
authored and
Alexander Ovchinnikov
committed
Add Windows arm64 native binaries
1 parent 84713e3 commit c14c2bb

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ jobs:
2222
- os: windows-2019
2323
name: win-x64
2424
param: -x64
25+
- os: windows-2019
26+
name: win-arm64
27+
param: -arm64
2528
- os: ubuntu-20.04
2629
name: linux-x64
2730
- os: ubuntu-20.04

build.libgit2.ps1

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,19 @@
66
.PARAMETER debug
77
If set, build the "Debug" configuration of libgit2, rather than "Release" (default).
88
.PARAMETER x86
9-
If set, the 32-bit version will be built.
9+
If set, the x86 version will be built.
1010
.PARAMETER x64
11-
If set, the 64-bit version will be built.
11+
If set, the x64 version will be built.
12+
.PARAMETER arm64
13+
If set, the arm64 version will be built.
1214
#>
1315

1416
Param(
1517
[switch]$test,
1618
[switch]$debug,
1719
[switch]$x86,
1820
[switch]$x64
21+
[switch]$arm64
1922
)
2023

2124
Set-StrictMode -Version Latest
@@ -24,6 +27,7 @@ $projectDirectory = Split-Path $MyInvocation.MyCommand.Path
2427
$libgit2Directory = Join-Path $projectDirectory "libgit2"
2528
$x86Directory = Join-Path $projectDirectory "nuget.package\runtimes\win-x86\native"
2629
$x64Directory = Join-Path $projectDirectory "nuget.package\runtimes\win-x64\native"
30+
$arm64Directory = Join-Path $projectDirectory "nuget.package\runtimes\win-arm64\native"
2731
$hashFile = Join-Path $projectDirectory "nuget.package\libgit2\libgit2_hash.txt"
2832
$sha = Get-Content $hashFile
2933
$binaryFilename = "git2-" + $sha.Substring(0,7)
@@ -113,7 +117,7 @@ try {
113117
cd build
114118

115119
if ($x86.IsPresent) {
116-
Write-Output "Building 32-bit..."
120+
Write-Output "Building x86..."
117121
Run-Command -Fatal { & $cmake -G "Visual Studio 16 2019" -A Win32 -D ENABLE_TRACE=ON -D USE_SSH=OFF -D "BUILD_CLAR=$build_clar" -D "LIBGIT2_FILENAME=$binaryFilename" .. }
118122
Run-Command -Fatal { & $cmake --build . --config $configuration }
119123
if ($test.IsPresent) { Run-Command -Quiet -Fatal { & $ctest -V . } }
@@ -127,7 +131,7 @@ try {
127131
}
128132

129133
if ($x64.IsPresent) {
130-
Write-Output "Building 64-bit..."
134+
Write-Output "Building x64..."
131135
Run-Command -Quiet { & mkdir build64 }
132136
cd build64
133137
Run-Command -Fatal { & $cmake -G "Visual Studio 16 2019" -A x64 -D THREADSAFE=ON -D USE_SSH=OFF -D ENABLE_TRACE=ON -D "BUILD_CLAR=$build_clar" -D "LIBGIT2_FILENAME=$binaryFilename" ../.. }
@@ -141,6 +145,21 @@ try {
141145
Run-Command -Quiet -Fatal { & copy -fo * $x64Directory -Exclude *.lib }
142146
}
143147

148+
if ($arm64.IsPresent) {
149+
Write-Output "Building arm64..."
150+
Run-Command -Quiet { & mkdir buildarm64 }
151+
cd buildarm64
152+
Run-Command -Fatal { & $cmake -G "Visual Studio 16 2019" -A ARM64 -D THREADSAFE=ON -D USE_SSH=OFF -D ENABLE_TRACE=ON -D "BUILD_CLAR=$build_clar" -D "LIBGIT2_FILENAME=$binaryFilename" ../.. }
153+
Run-Command -Fatal { & $cmake --build . --config $configuration }
154+
if ($test.IsPresent) { Run-Command -Quiet -Fatal { & $ctest -V . } }
155+
cd $configuration
156+
Assert-Consistent-Naming "$binaryFilename.dll" "*.dll"
157+
Run-Command -Quiet { & rm *.exp }
158+
Run-Command -Quiet { & rm $arm64Directory\* -ErrorAction Ignore }
159+
Run-Command -Quiet { & mkdir -fo $arm64Directory }
160+
Run-Command -Quiet -Fatal { & copy -fo * $arm64Directory -Exclude *.lib }
161+
}
162+
144163
Write-Output "Done!"
145164
}
146165
finally {

nuget.package/build/net46/LibGit2Sharp.NativeBinaries.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<ItemGroup>
88
<ContentWithTargetPath Include="$(MSBuildThisFileDirectory)\..\..\runtimes\win-x86\native\*" TargetPath="lib\win32\x86\%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest" />
99
<ContentWithTargetPath Include="$(MSBuildThisFileDirectory)\..\..\runtimes\win-x64\native\*" TargetPath="lib\win32\x64\%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest" />
10+
<ContentWithTargetPath Include="$(MSBuildThisFileDirectory)\..\..\runtimes\win-arm64\native\*" TargetPath="lib\win32\arm64\%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest" />
1011
<ContentWithTargetPath Include="$(MSBuildThisFileDirectory)\..\..\runtimes\**\*" Exclude="$(MSBuildThisFileDirectory)\..\..\runtimes\win-*\**\*" TargetPath="lib\%(RecursiveDir)..\%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest" />
1112
<ContentWithTargetPath Include="$(MSBuildThisFileDirectory)\..\..\libgit2\LibGit2Sharp.dll.config" TargetPath="LibGit2Sharp.dll.config" CopyToOutputDirectory="PreserveNewest" />
1213
</ItemGroup>

0 commit comments

Comments
 (0)