mirror of
https://github.com/pocoproject/poco.git
synced 2025-02-21 06:37:42 +01:00
tidied up build script (added pause/ctrl-c, straightened OpenSSL and MySQL environment generation, added msbuild useenv switch)
This commit is contained in:
parent
e044d77717
commit
89fc463186
102
buildwin.ps1
102
buildwin.ps1
@ -60,6 +60,15 @@ Param
|
||||
)
|
||||
|
||||
|
||||
function Add-Env-Var([string] $lib, [string] $var)
|
||||
{
|
||||
if ((${Env:$var} -eq $null) -or (-not ${Env:$var}.Contains(${Env:$lib_$var"})))
|
||||
{
|
||||
${Env:$var} = ${Env:$lib_$var;$Env:$var}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function Set-Environment
|
||||
{
|
||||
if ($poco_base -eq '') { $script:poco_base = Get-Location }
|
||||
@ -79,53 +88,51 @@ function Set-Environment
|
||||
}
|
||||
}
|
||||
|
||||
if ($Env:POCO_BUILD_ENVIRONMENT_SET -ne "TRUE")
|
||||
if ($openssl_base -eq '')
|
||||
{
|
||||
if ($platform -eq 'x64') { $script:openssl_base = 'C:\OpenSSL-Win64' }
|
||||
else { $script:openssl_base = 'C:\OpenSSL-Win32' }
|
||||
}
|
||||
|
||||
if ($openssl_base -eq '')
|
||||
{
|
||||
if ($platform -eq 'x64') { $openssl_base = 'C:\OpenSSL-Win64' }
|
||||
else { $openssl_base = 'C:\OpenSSL-Win32' }
|
||||
}
|
||||
|
||||
$Env:OPENSSL_DIR = "$openssl_base"
|
||||
$Env:OPENSSL_INCLUDE = "$Env:OPENSSL_DIR\include"
|
||||
$Env:OPENSSL_LIB = "$Env:OPENSSL_DIR\lib;$Env:OPENSSL_DIR\lib\VC"
|
||||
$Env:INCLUDE = "$Env:INCLUDE;$Env:OPENSSL_INCLUDE"
|
||||
$Env:LIB = "$Env:LIB;$Env:OPENSSL_LIB"
|
||||
$Env:OPENSSL_DIR = "$openssl_base"
|
||||
$Env:OPENSSL_INCLUDE = "$Env:OPENSSL_DIR\include"
|
||||
$Env:OPENSSL_LIB = "$Env:OPENSSL_DIR\lib;$Env:OPENSSL_DIR\lib\VC"
|
||||
Add-Env-Var "OPENSSL", "INCLUDE"
|
||||
Add-Env-Var "OPENSSL", "LIB"
|
||||
|
||||
if ($mysql_base -ne '')
|
||||
{
|
||||
$Env:MYSQL_DIR = "$mysql_base"
|
||||
$Env:MYSQL_INCLUDE = "$Env:MYSQL_DIR\include"
|
||||
$Env:MYSQL_LIB = "$Env:MYSQL_DIR\lib"
|
||||
$Env:INCLUDE = "$Env:INCLUDE;$Env:MYSQL_INCLUDE"
|
||||
$Env:LIB = "$Env:LIB;$Env:MYSQL_LIB"
|
||||
|
||||
$Env:PATH = "$Env:POCO_BASE\bin64;$Env:POCO_BASE\bin;$Env:PATH"
|
||||
|
||||
$vsct = "VS$($vs_version)COMNTOOLS"
|
||||
$vsdir = (Get-Item Env:$vsct).Value
|
||||
$Command = ''
|
||||
if ($platform -eq 'x64')
|
||||
{
|
||||
$Command = "$($vsdir)..\..\VC\bin\x86_amd64\vcvarsx86_amd64.bat"
|
||||
}
|
||||
else
|
||||
{
|
||||
$Command = "$($vsdir)vsvars32.bat"
|
||||
}
|
||||
|
||||
$tempFile = [IO.Path]::GetTempFileName()
|
||||
cmd /c " `"$Command`" && set > `"$tempFile`" "
|
||||
Get-Content $tempFile | Foreach-Object {
|
||||
if($_ -match "^(.*?)=(.*)$")
|
||||
{
|
||||
Set-Content "Env:$($matches[1])" $matches[2]
|
||||
}
|
||||
}
|
||||
Remove-Item $tempFile
|
||||
|
||||
$Env:POCO_BUILD_ENVIRONMENT_SET = "TRUE"
|
||||
Add-Env-Var "MYSQL", "INCLUDE"
|
||||
Add-Env-Var "MYSQL", "LIB"
|
||||
}
|
||||
|
||||
if (-Not $Env:PATH.Contains("$Env:POCO_BASE\bin64;$Env:POCO_BASE\bin;"))
|
||||
{ $Env:PATH = "$Env:POCO_BASE\bin64;$Env:POCO_BASE\bin;$Env:PATH" }
|
||||
|
||||
$vsct = "VS$($vs_version)COMNTOOLS"
|
||||
$vsdir = (Get-Item Env:$vsct).Value
|
||||
$Command = ''
|
||||
if ($platform -eq 'x64')
|
||||
{
|
||||
$Command = "$($vsdir)..\..\VC\bin\x86_amd64\vcvarsx86_amd64.bat"
|
||||
}
|
||||
else
|
||||
{
|
||||
$Command = "$($vsdir)vsvars32.bat"
|
||||
}
|
||||
|
||||
$tempFile = [IO.Path]::GetTempFileName()
|
||||
cmd /c " `"$Command`" && set > `"$tempFile`" "
|
||||
Get-Content $tempFile | Foreach-Object {
|
||||
if($_ -match "^(.*?)=(.*)$")
|
||||
{
|
||||
Set-Content "Env:$($matches[1])" $matches[2]
|
||||
}
|
||||
}
|
||||
Remove-Item $tempFile
|
||||
}
|
||||
|
||||
|
||||
@ -154,8 +161,8 @@ function Process-Input
|
||||
{
|
||||
Set-Environment
|
||||
|
||||
Write-Host "Building:"
|
||||
Write-Host "------"
|
||||
Write-Host "Build configuration:"
|
||||
Write-Host "--------------------"
|
||||
Write-Host "Poco Base: $poco_base"
|
||||
Write-Host "Version: $vs_version"
|
||||
Write-Host "Action: $action"
|
||||
@ -181,6 +188,9 @@ function Process-Input
|
||||
Write-Host "MySQL: $mysql_base"
|
||||
}
|
||||
|
||||
# NB: this won't work in PowerShell ISE
|
||||
Write-Host "Press Ctrl-C to exit or any other key to continue ..."
|
||||
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp")
|
||||
}
|
||||
}
|
||||
|
||||
@ -201,14 +211,14 @@ function Build-MSBuild([string] $vsProject)
|
||||
{
|
||||
$projectConfig = "$cfg"
|
||||
$projectConfig += "_$mode"
|
||||
Invoke-Expression "msbuild $vsProject /t:$action /p:Configuration=$projectConfig /p:Platform=$platform"
|
||||
Invoke-Expression "msbuild $vsProject /t:$action /p:Configuration=$projectConfig /p:Platform=$platform /p:useenv=true"
|
||||
}
|
||||
}
|
||||
else #config
|
||||
{
|
||||
$projectConfig = "$config"
|
||||
$projectConfig += "_$mode"
|
||||
Invoke-Expression "msbuild $vsProject /t:$action /p:Configuration=$projectConfig /p:Platform=$platform"
|
||||
Invoke-Expression "msbuild $vsProject /t:$action /p:Configuration=$projectConfig /p:Platform=$platform /p:useenv=true"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -221,14 +231,14 @@ function Build-MSBuild([string] $vsProject)
|
||||
{
|
||||
$projectConfig = "$cfg"
|
||||
$projectConfig += "_$mode"
|
||||
Invoke-Expression "msbuild $vsProject /t:$action /p:Configuration=$projectConfig /p:Platform=$platform"
|
||||
Invoke-Expression "msbuild $vsProject /t:$action /p:Configuration=$projectConfig /p:Platform=$platform /p:useenv=true"
|
||||
}
|
||||
}
|
||||
else #config
|
||||
{
|
||||
$projectConfig = "$config"
|
||||
$projectConfig += "_$linkmode"
|
||||
Invoke-Expression "msbuild $vsProject /t:$action /p:Configuration=$projectConfig /p:Platform=$platform"
|
||||
Invoke-Expression "msbuild $vsProject /t:$action /p:Configuration=$projectConfig /p:Platform=$platform /p:useenv=true"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user