2021-02-01 17:59:21 -08:00
|
|
|
function CreateNugetPackage
|
|
|
|
|
{
|
|
|
|
|
md builds\pkg\nuget -Force
|
|
|
|
|
|
|
|
|
|
# runtimes
|
|
|
|
|
md pkg\nuget\ZeroTier.Sockets\runtimes\win10-x86\native -Force
|
|
|
|
|
md pkg\nuget\ZeroTier.Sockets\runtimes\win10-x64\native -Force
|
|
|
|
|
md pkg\nuget\ZeroTier.Sockets\runtimes\win10-x64\lib\uap10.0 -Force
|
|
|
|
|
md pkg\nuget\ZeroTier.Sockets\runtimes\win10-arm\native -Force
|
|
|
|
|
|
|
|
|
|
# frameworks
|
|
|
|
|
md pkg\nuget\ZeroTier.Sockets\lib\net48 -Force
|
|
|
|
|
md pkg\nuget\ZeroTier.Sockets\lib\net5.0 -Force
|
|
|
|
|
|
|
|
|
|
# Build native libzt with exported P/INVOKE symbols
|
|
|
|
|
Build-Library -BuildType "Release" -Arch "x64" -LanguageBinding "csharp"
|
|
|
|
|
Build-Library -BuildType "Release" -Arch "x64" -LanguageBinding ""
|
|
|
|
|
|
|
|
|
|
Build-Library -BuildType "Release" -Arch "Win32" -LanguageBinding "csharp"
|
|
|
|
|
#Build-Library -BuildType "Release" -Arch "ARM" -LanguageBinding "csharp"
|
|
|
|
|
|
|
|
|
|
# Copy assemblies into NuGet package tree
|
|
|
|
|
Copy-Item .\lib\release\win-x64-pinvoke\*.dll pkg\nuget\ZeroTier.Sockets\runtimes\win10-x64\lib\uap10.0\libzt.dll
|
|
|
|
|
Copy-Item .\lib\release\win-x64\*.dll pkg\nuget\ZeroTier.Sockets\runtimes\win10-x64\native\libzt.dll
|
|
|
|
|
|
|
|
|
|
Copy-Item .\lib\release\win-x86-pinvoke\*.dll pkg\nuget\ZeroTier.Sockets\runtimes\win10-x86\native\libzt.dll
|
|
|
|
|
#Copy-Item .\lib\release\win-arm-pinvoke\*.dll pkg\nuget\ZeroTier.Sockets\runtimes\win10-arm\native\libzt.dll
|
|
|
|
|
|
|
|
|
|
# Build wrapper library for C# ZeroTier.Sockets abstraction
|
|
|
|
|
csc -target:library -out:pkg\nuget\ZeroTier.Sockets\lib\net5.0\ZeroTier.Sockets.dll .\src\bindings\csharp\*.cs
|
|
|
|
|
|
|
|
|
|
# Package everything
|
|
|
|
|
Push-Location -Path pkg\nuget\ZeroTier.Sockets
|
|
|
|
|
|
|
|
|
|
del ZeroTier.Sockets.*.nupkg
|
|
|
|
|
nuget pack ZeroTier.Sockets.nuspec -OutputDirectory ..\..\..\builds\pkg\nuget
|
|
|
|
|
|
|
|
|
|
Pop-Location
|
|
|
|
|
}
|
|
|
|
|
|
2021-01-05 23:58:07 -08:00
|
|
|
function Clean
|
|
|
|
|
{
|
2021-02-01 17:59:21 -08:00
|
|
|
Remove-Item builds -Recurse -Force -Confirm:$false -ErrorAction:'silentlycontinue'
|
2021-01-05 23:58:07 -08:00
|
|
|
Remove-Item tmp -Recurse -Force -Confirm:$false -ErrorAction:'silentlycontinue'
|
|
|
|
|
Remove-Item lib -Recurse -Force -Confirm:$false -ErrorAction:'silentlycontinue'
|
|
|
|
|
Remove-Item bin -Recurse -Force -Confirm:$false -ErrorAction:'silentlycontinue'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Build-Library([string]$BuildType, [string]$Arch, [string]$LanguageBinding)
|
|
|
|
|
{
|
|
|
|
|
$OptionalLanguageBinding=""
|
|
|
|
|
|
|
|
|
|
if ($LanguageBinding -eq "csharp") {
|
|
|
|
|
$OptionalLanguageBinding="-DZTS_PINVOKE:BOOL=ON"
|
|
|
|
|
$LanguageBindingPostfix="-pinvoke"
|
|
|
|
|
}
|
|
|
|
|
if ($LanguageBinding -eq "java") {
|
|
|
|
|
#$OptionalLanguageBinding="-DSDK_JNI=ON -DSDK_JNI=1"
|
|
|
|
|
#$LanguageBindingPostfix="-jni"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$archAlias = ""
|
|
|
|
|
$bitCount = ""
|
|
|
|
|
|
|
|
|
|
if ($Arch -eq "Win32") {
|
|
|
|
|
$bitCount="32"
|
|
|
|
|
$archAlias="win-x86"
|
|
|
|
|
}
|
|
|
|
|
if ($Arch -eq "x64") {
|
|
|
|
|
$bitCount="64"
|
|
|
|
|
$archAlias="win-x64"
|
|
|
|
|
}
|
2021-02-01 17:59:21 -08:00
|
|
|
#if ($Arch -eq "ARM32") {
|
|
|
|
|
# $bitCount="32"
|
|
|
|
|
# $archAlias="win-arm"
|
|
|
|
|
#}
|
|
|
|
|
if ($Arch -eq "ARM") {
|
2021-01-05 23:58:07 -08:00
|
|
|
$bitCount="64"
|
|
|
|
|
$archAlias="win-arm64"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($archAlias -eq "" -or $bitCount -eq "") {
|
|
|
|
|
echo "No valid architecture specified. Breaking."
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Directory for CMake to build and store intermediate files
|
|
|
|
|
$env:BuildDir="tmp\$BuildType\"+$Arch+$LanguageBindingPostfix
|
2021-01-29 00:12:48 -08:00
|
|
|
md $env:BuildDir -ErrorAction:'silentlycontinue'
|
2021-01-05 23:58:07 -08:00
|
|
|
# Directory where we plan to store the resultant libraries
|
|
|
|
|
$env:OutputDir="lib\"+$BuildType.ToLower()
|
2021-01-29 00:12:48 -08:00
|
|
|
md $env:OutputDir\$archAlias$LanguageBindingPostfix -ErrorAction:'silentlycontinue'
|
2021-01-05 23:58:07 -08:00
|
|
|
Push-Location -Path $env:BuildDir
|
|
|
|
|
cmake ${OptionalLanguageBinding} -G "Visual Studio 16 2019" -A $Arch ../../../
|
|
|
|
|
cmake --build . --config $BuildType
|
|
|
|
|
Pop-Location
|
|
|
|
|
Copy-Item $env:BuildDir\$BuildType\zt.lib $env:OutputDir\$archAlias$LanguageBindingPostfix\libzt$bitCount.lib
|
|
|
|
|
Copy-Item $env:BuildDir\$BuildType\zt-shared.dll $env:OutputDir\$archAlias$LanguageBindingPostfix\libzt$bitCount.dll
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Build-All
|
|
|
|
|
{
|
|
|
|
|
# Win32
|
|
|
|
|
Build-Library -BuildType "Release" -Arch "Win32" -LanguageBinding ""
|
|
|
|
|
Build-Library -BuildType "Release" -Arch "Win32" -LanguageBinding "pinvoke"
|
|
|
|
|
Build-Library -BuildType "Debug" -Arch "Win32" -LanguageBinding ""
|
|
|
|
|
Build-Library -BuildType "Debug" -Arch "Win32" -LanguageBinding "pinvoke"
|
|
|
|
|
# x64
|
|
|
|
|
Build-Library -BuildType "Release" -Arch "x64" -LanguageBinding ""
|
|
|
|
|
Build-Library -BuildType "Release" -Arch "x64" -LanguageBinding "pinvoke"
|
|
|
|
|
Build-Library -BuildType "Debug" -Arch "x64" -LanguageBinding ""
|
|
|
|
|
Build-Library -BuildType "Debug" -Arch "x64" -LanguageBinding "pinvoke"
|
|
|
|
|
}
|