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 function Set-Environment
{ {
if ($poco_base -eq '') { $script:poco_base = Get-Location } 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 '') $Env:OPENSSL_DIR = "$openssl_base"
{ $Env:OPENSSL_INCLUDE = "$Env:OPENSSL_DIR\include"
if ($platform -eq 'x64') { $openssl_base = 'C:\OpenSSL-Win64' } $Env:OPENSSL_LIB = "$Env:OPENSSL_DIR\lib;$Env:OPENSSL_DIR\lib\VC"
else { $openssl_base = 'C:\OpenSSL-Win32' } Add-Env-Var "OPENSSL", "INCLUDE"
} Add-Env-Var "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"
$Env:INCLUDE = "$Env:INCLUDE;$Env:OPENSSL_INCLUDE"
$Env:LIB = "$Env:LIB;$Env:OPENSSL_LIB"
if ($mysql_base -ne '')
{
$Env:MYSQL_DIR = "$mysql_base" $Env:MYSQL_DIR = "$mysql_base"
$Env:MYSQL_INCLUDE = "$Env:MYSQL_DIR\include" $Env:MYSQL_INCLUDE = "$Env:MYSQL_DIR\include"
$Env:MYSQL_LIB = "$Env:MYSQL_DIR\lib" $Env:MYSQL_LIB = "$Env:MYSQL_DIR\lib"
$Env:INCLUDE = "$Env:INCLUDE;$Env:MYSQL_INCLUDE" Add-Env-Var "MYSQL", "INCLUDE"
$Env:LIB = "$Env:LIB;$Env:MYSQL_LIB" Add-Env-Var "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"
} }
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 Set-Environment
Write-Host "Building:" Write-Host "Build configuration:"
Write-Host "------" Write-Host "--------------------"
Write-Host "Poco Base: $poco_base" Write-Host "Poco Base: $poco_base"
Write-Host "Version: $vs_version" Write-Host "Version: $vs_version"
Write-Host "Action: $action" Write-Host "Action: $action"
@@ -181,6 +188,9 @@ function Process-Input
Write-Host "MySQL: $mysql_base" 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 = "$cfg"
$projectConfig += "_$mode" $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 else #config
{ {
$projectConfig = "$config" $projectConfig = "$config"
$projectConfig += "_$mode" $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 = "$cfg"
$projectConfig += "_$mode" $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 else #config
{ {
$projectConfig = "$config" $projectConfig = "$config"
$projectConfig += "_$linkmode" $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"
} }
} }
} }