2018-02-28 19:19:33 +01:00
|
|
|
param (
|
|
|
|
[string]$vcpkg_root = $(throw "-vcpkg_root=<path to vcpkg> is required"),
|
|
|
|
[string]$arch = "",
|
2018-03-07 12:31:57 +01:00
|
|
|
[string]$mode = "all",
|
2018-03-07 09:46:01 +01:00
|
|
|
[string]$compress = "7z"
|
2018-02-28 19:19:33 +01:00
|
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
|
|
|
|
$vcpkg_root = Resolve-Path $vcpkg_root
|
|
|
|
|
|
|
|
$vcpkg_cmake="${vcpkg_root}\scripts\buildsystems\vcpkg.cmake"
|
|
|
|
$arch_list = @( "x86", "x64", "arm" )
|
|
|
|
if ($arch) {
|
|
|
|
$arch_list = @(, $arch)
|
|
|
|
}
|
|
|
|
|
|
|
|
$td_root = Resolve-Path "../.."
|
|
|
|
|
|
|
|
function CheckLastExitCode {
|
|
|
|
if ($LastExitCode -ne 0) {
|
2018-03-07 11:50:21 +01:00
|
|
|
$msg = @"
|
2018-02-28 19:19:33 +01:00
|
|
|
EXE RETURNED EXIT CODE $LastExitCode
|
|
|
|
CALLSTACK:$(Get-PSCallStack | Out-String)
|
|
|
|
"@
|
2018-03-07 11:50:21 +01:00
|
|
|
throw $msg
|
2018-02-28 19:19:33 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function clean {
|
|
|
|
Remove-Item build-* -Force -Recurse -ErrorAction SilentlyContinue
|
|
|
|
}
|
|
|
|
|
|
|
|
function prepare {
|
|
|
|
New-Item -ItemType Directory -Force -Path build-native
|
|
|
|
|
|
|
|
cd build-native
|
|
|
|
|
|
|
|
cmake $td_root -DCMAKE_TOOLCHAIN_FILE="$vcpkg_cmake" -DTD_ENABLE_DOTNET=1
|
|
|
|
CheckLastExitCode
|
2018-03-02 14:55:55 +01:00
|
|
|
cmake --build . --target prepare_cross_compiling
|
2018-02-28 19:19:33 +01:00
|
|
|
CheckLastExitCode
|
|
|
|
|
|
|
|
cd ..
|
|
|
|
}
|
|
|
|
|
|
|
|
function config {
|
|
|
|
New-Item -ItemType Directory -Force -Path build-uwp
|
|
|
|
cd build-uwp
|
2018-03-02 14:55:55 +01:00
|
|
|
|
2018-02-28 19:19:33 +01:00
|
|
|
ForEach($arch in $arch_list) {
|
|
|
|
echo "Config Arch = [$arch]"
|
|
|
|
New-Item -ItemType Directory -Force -Path $arch
|
|
|
|
cd $arch
|
|
|
|
echo "${td_root}"
|
|
|
|
$fixed_arch = $arch
|
|
|
|
if ($arch -eq "x86") {
|
|
|
|
$fixed_arch = "win32"
|
|
|
|
}
|
|
|
|
cmake "$td_root" -A $fixed_arch -DCMAKE_SYSTEM_VERSION="10.0" -DCMAKE_SYSTEM_NAME="WindowsStore" -DCMAKE_TOOLCHAIN_FILE="$vcpkg_cmake" -DTD_ENABLE_DOTNET=1
|
|
|
|
CheckLastExitCode
|
|
|
|
cd ..
|
|
|
|
}
|
|
|
|
echo "done"
|
|
|
|
cd ..
|
|
|
|
}
|
|
|
|
|
|
|
|
function build {
|
|
|
|
cd build-uwp
|
|
|
|
ForEach($arch in $arch_list) {
|
|
|
|
echo "Build Arch = [$arch]"
|
|
|
|
cd $arch
|
|
|
|
cmake --build . --config Release --target tddotnet
|
|
|
|
cmake --build . --config Debug --target tddotnet
|
|
|
|
cd ..
|
|
|
|
}
|
|
|
|
cd ..
|
|
|
|
}
|
|
|
|
|
|
|
|
function export {
|
|
|
|
cd build-uwp
|
|
|
|
Remove-Item vsix -Force -Recurse -ErrorAction SilentlyContinue
|
|
|
|
mkdir vsix
|
2018-03-02 14:55:55 +01:00
|
|
|
cp ../SDKManifest.xml vsix
|
2018-02-28 19:19:33 +01:00
|
|
|
cp ../extension.vsixmanifest vsix
|
|
|
|
cp '../`[Content_Types`].xml' vsix
|
2018-03-02 14:55:55 +01:00
|
|
|
|
2018-02-28 19:19:33 +01:00
|
|
|
ForEach($arch in $arch_list) {
|
|
|
|
New-Item -ItemType Directory -Force -Path vsix/DesignTime/Debug/${arch}
|
|
|
|
New-Item -ItemType Directory -Force -Path vsix/DesignTime/Retail/${arch}
|
|
|
|
New-Item -ItemType Directory -Force -Path vsix/Redist/Debug/${arch}
|
|
|
|
New-Item -ItemType Directory -Force -Path vsix/Redist/Retail/${arch}
|
|
|
|
New-Item -ItemType Directory -Force -Path vsix/References/CommonConfiguration/${arch}
|
2018-03-02 14:55:55 +01:00
|
|
|
|
|
|
|
cp ${arch}/Debug/* -include "LIBEAY*","SSLEAY*","zlib*" vsix/Redist/Debug/${arch}/
|
|
|
|
cp ${arch}/Release/* -include "LIBEAY*","SSLEAY*","zlib*" vsix/Redist/Retail/${arch}/
|
|
|
|
|
|
|
|
cp ${arch}/Debug/* -filter "Telegram.Td.*" -include "*.lib" vsix/DesignTime/Debug/${arch}/
|
|
|
|
cp ${arch}/Release/* -filter "Telegram.Td.*" -include "*.lib" vsix/DesignTime/Retail/${arch}/
|
|
|
|
|
|
|
|
cp ${arch}/Debug/* -filter "Telegram.Td.*" -include "*.pdb","*.dll" vsix/Redist/Debug/${arch}/
|
|
|
|
cp ${arch}/Release/* -filter "Telegram.Td.*" -include "*.pdb","*.dll" vsix/Redist/Retail/${arch}/
|
|
|
|
|
|
|
|
cp ${arch}/Release/* -filter "Telegram.Td.*" -include "*.pri","*.winmd" vsix/References/CommonConfiguration/${arch}/
|
2018-02-28 19:19:33 +01:00
|
|
|
}
|
2018-03-02 14:55:55 +01:00
|
|
|
|
2018-02-28 19:19:33 +01:00
|
|
|
cd vsix
|
2018-03-02 14:55:55 +01:00
|
|
|
|
2018-03-07 09:46:01 +01:00
|
|
|
if ($compress -eq "zip") {
|
|
|
|
zip -r tdlib.vsix *
|
2018-03-07 12:31:57 +01:00
|
|
|
} elseif ($compress -eq "winrar") {
|
2018-03-07 09:46:01 +01:00
|
|
|
WinRAR.exe a -afzip -r -ep1 tdlib.vsix *
|
|
|
|
} else {
|
|
|
|
7z.exe a -tzip -r tdlib.vsix *
|
|
|
|
}
|
2018-02-28 19:19:33 +01:00
|
|
|
cd ..
|
|
|
|
}
|
|
|
|
|
|
|
|
function run {
|
|
|
|
Push-Location
|
|
|
|
Try {
|
2018-03-07 12:31:57 +01:00
|
|
|
if ($mode -eq "clean") {
|
|
|
|
clean
|
|
|
|
}
|
2018-02-28 19:19:33 +01:00
|
|
|
if (($mode -eq "prepare") -or ($mode -eq "all")) {
|
|
|
|
prepare
|
|
|
|
}
|
|
|
|
if (($mode -eq "config") -or ( $mode -eq "all")) {
|
|
|
|
config
|
|
|
|
}
|
|
|
|
if (($mode -eq "build") -or ($mode -eq "all")) {
|
|
|
|
build
|
|
|
|
}
|
|
|
|
if (($mode -eq "export") -or ($mode -eq "all")) {
|
|
|
|
export
|
|
|
|
}
|
|
|
|
} Finally {
|
|
|
|
Pop-Location
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
run
|