tidied up build script (added pause/ctrl-c, straightened OpenSSL and MySQL environment generation, added msbuild useenv switch)

This commit is contained in:
Alex Fabijanic 2014-04-24 21:15:54 -05:00
parent e044d77717
commit 89fc463186

View File

@ -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"
}
}
}