MinetestMapperGUI-Bundle/build.ps1

108 lines
2.7 KiB
PowerShell

# get usage information by using 'get-help .\build.ps1'
<#
.SYNOPSIS
Automatically build MinetestmapperGui
.DESCRIPTION
Automatically installs the reqired dependencies from vcpkg,
executes cmake and generates a zip archive
.EXAMPLE
PS> .\build.ps1 -vcpkg_root D:\vcpkg\ -triplet x64-windows
#>
param (
## Specifies the path to the vcpkg.exe. e.g D:\vcpkg
[Parameter(Mandatory = $true)]
[string]$vcpkg_root = "D:\vcpkg",
## Specifies the target triplet eg. x64-windows or x68-windows-static.
[Parameter(Mandatory = $true)]
[string]$triplet = "x64-windows",
## Specify the Visual studio version (15 = VS 2017)
[int32]$vs_version = 15,
## Specify the qt version to use
$qt_version = "5.12.1"
)
$aTriplet = $triplet.Split('-')
$arch = $aTriplet[0]
$os = $aTriplet[1]
$linkage = $aTriplet[2]
$generator = ""
if ($vs_version -lt 14) {
throw "Visual Studio versions older then 2015 are not supported!"
}
elseif ($vs_version -eq 14) {
$generator = "Visual Studio 14 2015"
$qt_dir = "C:\Qt\$qt_version\msvc2015"
}
elseif ($vs_version -eq 15) {
$generator = "Visual Studio 15 2017"
$qt_dir = "C:\Qt\$qt_version\msvc2017"
}
elseif ($vs_version -eq 16) {
$generator = "Visual Studio 16 2019"
$qt_dir = "C:\Qt\$qt_version\msvc2019"
Write-Warning "$generator is currently not tested and may work or not"
}
$cmake_generator = $generator
if ($arch -eq "x64") {
$cmake_generator = "$generator Win64"
$qt_dir += "_64"
}
$build_dir = ".\build\$triplet"
if ($linkage -eq "static") {
Write-Output "Building $arch-$os-static"
}
else {
Write-Output "Building $arch-$os-dynamic"
}
Write-Output "Qt Dir: $qt_dir"
Write-Output "Build Dir: $build_dir"
Write-Output "Triplet: $triplet"
Write-Output "Generator: $cmake_generator"
try {
& "$vcpkg_root\vcpkg" install zlib sqlite3 libgd[core,png] --triplet "$triplet"
if ($LASTEXITCODE -ne 0) {throw "Error while installing dependencies"}
if (!(test-path $build_dir)) {
New-Item -ItemType Directory -Force -Path $build_dir
}
Push-Location $build_dir
if (Test-Path "CMakeCache.txt") {
Remove-Item "CMakeCache.txt" # Perform a clean build
}
cmake ../.. -G"$cmake_generator" `
-DVCPKG_TARGET_TRIPLET="$triplet" `
-DVCPKG_APPLOCAL_DEPS=ON `
-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake `
-DCMAKE_BUILD_TYPE=Release `
-DCMAKE_PREFIX_PATH="$qt_dir\lib\cmake"
if ($LASTEXITCODE -ne 0) {throw "Error while configuring"}
cmake --build . --config Release
if ($LASTEXITCODE -ne 0) {throw "Error while building"}
cpack -G "ZIP"
if ($LASTEXITCODE -ne 0) {throw "Error while packing"}
}
catch {
Write-Error $_.Exception.Message
}
Finally {
Pop-Location
}