summaryrefslogtreecommitdiff
path: root/libs/tdlib/td/example/uwp/build.ps1
diff options
context:
space:
mode:
Diffstat (limited to 'libs/tdlib/td/example/uwp/build.ps1')
-rw-r--r--libs/tdlib/td/example/uwp/build.ps1142
1 files changed, 142 insertions, 0 deletions
diff --git a/libs/tdlib/td/example/uwp/build.ps1 b/libs/tdlib/td/example/uwp/build.ps1
new file mode 100644
index 0000000000..71156b0a2d
--- /dev/null
+++ b/libs/tdlib/td/example/uwp/build.ps1
@@ -0,0 +1,142 @@
+param (
+ [string]$vcpkg_root = $(throw "-vcpkg_root=<path to vcpkg> is required"),
+ [string]$arch = "",
+ [string]$mode = "all",
+ [string]$compress = "7z"
+)
+$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) {
+ $msg = @"
+EXE RETURNED EXIT CODE $LastExitCode
+CALLSTACK:$(Get-PSCallStack | Out-String)
+"@
+ throw $msg
+ }
+}
+
+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
+ cmake --build . --target prepare_cross_compiling
+ CheckLastExitCode
+
+ cd ..
+}
+
+function config {
+ New-Item -ItemType Directory -Force -Path build-uwp
+ cd build-uwp
+
+ 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
+ New-Item -ItemType Directory -Force -Path vsix
+ cp ../SDKManifest.xml vsix
+ cp ../extension.vsixmanifest vsix
+ cp '../`[Content_Types`].xml' vsix
+ cp ../LICENSE_1_0.txt vsix
+
+ 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}
+
+ 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","*.xml" vsix/References/CommonConfiguration/${arch}/
+ }
+
+ cd vsix
+
+ if ($compress -eq "zip") {
+ zip -r tdlib.vsix *
+ } elseif ($compress -eq "winrar") {
+ WinRAR.exe a -afzip -r -ep1 tdlib.vsix *
+ } else {
+ 7z.exe a -tzip -r tdlib.vsix *
+ }
+ cd ..
+}
+
+function run {
+ Push-Location
+ Try {
+ if ($mode -eq "clean") {
+ clean
+ }
+ 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