diff --git a/build_vs170.cmd b/build_vs170.cmd
new file mode 100644
index 000000000..abd77e853
--- /dev/null
+++ b/build_vs170.cmd
@@ -0,0 +1,2 @@
+@echo off
+buildwin 170 build shared both Win32 samples tests
diff --git a/buildwin.cmd b/buildwin.cmd
index 9934c7075..eaa9e8379 100644
--- a/buildwin.cmd
+++ b/buildwin.cmd
@@ -5,7 +5,7 @@ rem
rem buildwin.cmd
rem
rem POCO C++ Libraries command-line build script
-rem for MS Visual Studio 2015 to 2019
+rem for MS Visual Studio 2015 to 2022
rem
rem Copyright (c) 2006-2020 by Applied Informatics Software Engineering GmbH
rem and Contributors.
diff --git a/buildwin.ps1 b/buildwin.ps1
index d75039bf9..c57150b77 100644
--- a/buildwin.ps1
+++ b/buildwin.ps1
@@ -4,7 +4,7 @@
# Usage:
# ------
# buildwin.ps1 [-poco_base dir]
-# [-vs 140 | 150 | 160]
+# [-vs 140 | 150 | 160| 170]
# [-action build | rebuild | clean]
# [-linkmode shared | static_mt | static_md | all]
# [-config release | debug | both]
@@ -21,52 +21,52 @@
[CmdletBinding()]
Param
(
- [Parameter()]
- [string] $poco_base,
+ [Parameter()]
+ [string] $poco_base,
- [Parameter()]
- [ValidateSet(140, 150, 160)]
- [int] $vs = 140,
+ [Parameter()]
+ [ValidateSet(140, 150, 160, 170)]
+ [int] $vs = 140,
- [Parameter()]
- [ValidateSet('build', 'rebuild', 'clean')]
- [string] $action = 'build',
+ [Parameter()]
+ [ValidateSet('build', 'rebuild', 'clean')]
+ [string] $action = 'build',
- [Parameter()]
- [ValidateSet('shared', 'static_mt', 'static_md', 'all')]
- [string] $linkmode = 'shared',
+ [Parameter()]
+ [ValidateSet('shared', 'static_mt', 'static_md', 'all')]
+ [string] $linkmode = 'shared',
- [Parameter()]
- [ValidateSet('release', 'debug', 'both')]
- [string] $config = 'release',
+ [Parameter()]
+ [ValidateSet('release', 'debug', 'both')]
+ [string] $config = 'release',
- [Parameter()]
- [ValidateSet('Win32', 'x64', 'WinCE', 'WEC2013')]
- [string] $platform = 'x64',
+ [Parameter()]
+ [ValidateSet('Win32', 'x64', 'WinCE', 'WEC2013')]
+ [string] $platform = 'x64',
- [switch] $tests = $false,
- [switch] $samples = $false,
- [string] $omit,
+ [switch] $tests = $false,
+ [switch] $samples = $false,
+ [string] $omit,
- [Parameter()]
- [ValidateSet('msbuild', 'devenv')]
- [string] $tool = 'msbuild',
+ [Parameter()]
+ [ValidateSet('msbuild', 'devenv')]
+ [string] $tool = 'msbuild',
- [Parameter()]
- [ValidateSet('env', 'noenv')]
- [string] $useenv = 'env',
+ [Parameter()]
+ [ValidateSet('env', 'noenv')]
+ [string] $useenv = 'env',
- [Parameter()]
- [ValidateSet('quiet', 'm[inimal]', 'n[ormal]', 'd[etailed]', 'diag[nostic]')]
- [string] $verbosity = 'minimal',
+ [Parameter()]
+ [ValidateSet('quiet', 'm[inimal]', 'n[ormal]', 'd[etailed]', 'diag[nostic]')]
+ [string] $verbosity = 'minimal',
- [Parameter()]
- [string] $openssl_base,
+ [Parameter()]
+ [string] $openssl_base,
- [Parameter()]
- [string] $mysql_base,
+ [Parameter()]
+ [string] $mysql_base,
- [switch] $help
+ [switch] $help
)
function Add-VSCOMNTOOLS([int] $vsver)
@@ -89,6 +89,10 @@ function Add-VSCOMNTOOLS([int] $vsver)
{
$range='[16.0,17.0)'
}
+ if ($vsver -eq 170)
+ {
+ $range='[17.0,18.0)'
+ }
$installationPath = Get-VSSetupInstance | Select-VSSetupInstance -Version $range -Latest -Require Microsoft.VisualStudio.Component.VC.Tools.x86.x64 | select InstallationPath
$vscomntools = $installationPath.psobject.properties.Value;
@@ -102,399 +106,411 @@ function Add-VSCOMNTOOLS([int] $vsver)
set-item -force -path "ENV:VS160COMNTOOLS" -value "$vscomntools\Common7\Tools\"
Write-Host "`nVS160COMNTOOLS=$env:VS160COMNTOOLS" -ForegroundColor Yellow
}
-
+ if ($vsver -eq 170)
+ {
+ set-item -force -path "ENV:VS170COMNTOOLS" -value "$vscomntools\Common7\Tools\"
+ Write-Host "`nVS170COMNTOOLS=$env:VS170COMNTOOLS" -ForegroundColor Yellow
+ }
}
}
function Add-Env-Var([string] $lib, [string] $var)
{
- if ((${Env:$var} -eq $null) -or (-not ${Env:$var}.Contains(${Env:$lib_$var"})))
- {
- $libvar = "$lib" + "_" + "$var"
- $envvar = [Environment]::GetEnvironmentVariable($var, "Process")
- $envvar = $envvar + ';' + [Environment]::GetEnvironmentVariable($libvar, "Process")
- [Environment]::SetEnvironmentVariable($var, $envvar, "Process")
- }
+ if ((${Env:$var} -eq $null) -or (-not ${Env:$var}.Contains(${Env:$lib_$var"})))
+ {
+ $libvar = "$lib" + "_" + "$var"
+ $envvar = [Environment]::GetEnvironmentVariable($var, "Process")
+ $envvar = $envvar + ';' + [Environment]::GetEnvironmentVariable($libvar, "Process")
+ [Environment]::SetEnvironmentVariable($var, $envvar, "Process")
+ }
}
function Set-Environment
{
- if ($poco_base -eq '') { $script:poco_base = Get-Location }
+ if ($poco_base -eq '') { $script:poco_base = Get-Location }
- switch ( $vs )
- {
- 140 { }
+ switch ( $vs )
+ {
+ 140 { }
default { Add-VSCOMNTOOLS $vs }
- }
+ }
- 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" }
+ 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" }
- if ($openssl_base -eq '')
- {
- $script:openssl_base = '$poco_base\openssl'
- }
+ if ($openssl_base -eq '')
+ {
+ $script:openssl_base = '$poco_base\openssl'
+ }
- $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"
+ $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"
- Add-Env-Var "MYSQL" "INCLUDE"
- Add-Env-Var "MYSQL" "LIB"
- }
+ if ($mysql_base -ne '')
+ {
+ $Env:MYSQL_DIR = "$mysql_base"
+ $Env:MYSQL_INCLUDE = "$Env:MYSQL_DIR\include"
+ $Env:MYSQL_LIB = "$Env:MYSQL_DIR\lib"
+ Add-Env-Var "MYSQL" "INCLUDE"
+ Add-Env-Var "MYSQL" "LIB"
+ }
- $vsct = "VS$($vs)COMNTOOLS"
- $vsdir = ''
- $vsdir = (Get-Item Env:$vsct).Value
- $Command = ''
- $CommandArg = ''
- if ($platform -eq 'x64') { $CommandArg = "amd64" }
- else { $CommandArg = "x86" }
- if ($vs -eq 150)
- {
- $Command = Resolve-Path "$($vsdir)\..\..\VC\Auxiliary\Build\vcvarsall.bat"
- $script:msbuild_exe = Resolve-Path "$($vsdir)\..\..\MSBuild\15.0\Bin\MSBuild.exe"
- } else {
- if ($vs -eq 160)
- {
- $Command = Resolve-Path "$($vsdir)\..\..\VC\Auxiliary\Build\vcvarsall.bat"
- $script:msbuild_exe = Resolve-Path "$($vsdir)\..\..\MSBuild\Current\Bin\MSBuild.exe"
- }
- else
- {
- $Command = Resolve-Path "$($vsdir)\..\..\VC\vcvarsall.bat"
- $script:msbuild_exe = "MSBuild.exe"
- }}
+ $vsct = "VS$($vs)COMNTOOLS"
+ $vsdir = ''
+ $vsdir = (Get-Item Env:$vsct).Value
+ $Command = ''
+ $CommandArg = ''
+ if ($platform -eq 'x64') { $CommandArg = "amd64" }
+ else { $CommandArg = "x86" }
+ if ($vs -eq 150)
+ {
+ $Command = Resolve-Path "$($vsdir)\..\..\VC\Auxiliary\Build\vcvarsall.bat"
+ $script:msbuild_exe = Resolve-Path "$($vsdir)\..\..\MSBuild\15.0\Bin\MSBuild.exe"
+ } else {
+ if ($vs -eq 160)
+ {
+ $Command = Resolve-Path "$($vsdir)\..\..\VC\Auxiliary\Build\vcvarsall.bat"
+ $script:msbuild_exe = Resolve-Path "$($vsdir)\..\..\MSBuild\Current\Bin\MSBuild.exe"
+ }
+ else
+ {
+ if ($vs -eq 170)
+ {
+ $Command = Resolve-Path "$($vsdir)\..\..\VC\Auxiliary\Build\vcvarsall.bat"
+ $script:msbuild_exe = Resolve-Path "$($vsdir)\..\..\MSBuild\Current\Bin\MSBuild.exe"
+ }
+ else
+ {
+ $Command = Resolve-Path "$($vsdir)\..\..\VC\vcvarsall.bat"
+ $script:msbuild_exe = "MSBuild.exe"
+ }
+ }}
- $tempFile = [IO.Path]::GetTempFileName()
- cmd /c " `"$Command`" $CommandArg && set > `"$tempFile`" "
- Get-Content $tempFile | Foreach-Object {
- if($_ -match "^(.*?)=(.*)$")
- {
- Set-Content "Env:$($matches[1])" $matches[2]
- }
- }
- Remove-Item $tempFile
+ $tempFile = [IO.Path]::GetTempFileName()
+ cmd /c " `"$Command`" $CommandArg && set > `"$tempFile`" "
+ Get-Content $tempFile | Foreach-Object {
+ if($_ -match "^(.*?)=(.*)$")
+ {
+ Set-Content "Env:$($matches[1])" $matches[2]
+ }
+ }
+ Remove-Item $tempFile
}
function Process-Input
{
- if ($help -eq $true)
- {
- Write-Host 'Usage:'
- Write-Host '------'
- Write-Host 'buildwin.ps1 [-poco_base
]'
- Write-Host ' [-vs 140 | 150 | 160]'
- Write-Host ' [-action build | rebuild | clean]'
- Write-Host ' [-linkmode shared | static_mt | static_md | all]'
- Write-Host ' [-config release | debug | both]'
- Write-Host ' [-platform Win32 | x64 | WinCE | WEC2013]'
- Write-Host ' [-samples]'
- Write-Host ' [-tests]'
- Write-Host ' [-omit "Lib1X;LibY;LibZ;..."]'
- Write-Host ' [-tool msbuild | devenv]'
- Write-Host ' [-useenv env | noenv]'
- Write-Host ' [-verbosity minimal | quiet | normal | detailed | diagnostic'
- Write-Host ' [-openssl_base ]'
- Write-Host ' [-mysql_base ]'
+ if ($help -eq $true)
+ {
+ Write-Host 'Usage:'
+ Write-Host '------'
+ Write-Host 'buildwin.ps1 [-poco_base ]'
+ Write-Host ' [-vs 140 | 150 | 160 | 170]'
+ Write-Host ' [-action build | rebuild | clean]'
+ Write-Host ' [-linkmode shared | static_mt | static_md | all]'
+ Write-Host ' [-config release | debug | both]'
+ Write-Host ' [-platform Win32 | x64 | WinCE | WEC2013]'
+ Write-Host ' [-samples]'
+ Write-Host ' [-tests]'
+ Write-Host ' [-omit "Lib1X;LibY;LibZ;..."]'
+ Write-Host ' [-tool msbuild | devenv]'
+ Write-Host ' [-useenv env | noenv]'
+ Write-Host ' [-verbosity minimal | quiet | normal | detailed | diagnostic'
+ Write-Host ' [-openssl_base ]'
+ Write-Host ' [-mysql_base ]'
- Exit
- }
- else
- {
- Set-Environment
+ Exit
+ }
+ else
+ {
+ Set-Environment
- Write-Host "Build configuration:"
- Write-Host "--------------------"
- Write-Host "Poco Base: $poco_base"
- Write-Host "Version: $vs"
- Write-Host "Action: $action"
- Write-Host "Link Mode: $linkmode"
- Write-Host "Configuration: $config"
- Write-Host "Platform: $platform"
- Write-Host "Tests: $tests"
- Write-Host "Samples: $samples"
- Write-Host "Build Tool: $tool"
+ Write-Host "Build configuration:"
+ Write-Host "--------------------"
+ Write-Host "Poco Base: $poco_base"
+ Write-Host "Version: $vs"
+ Write-Host "Action: $action"
+ Write-Host "Link Mode: $linkmode"
+ Write-Host "Configuration: $config"
+ Write-Host "Platform: $platform"
+ Write-Host "Tests: $tests"
+ Write-Host "Samples: $samples"
+ Write-Host "Build Tool: $tool"
- if ($omit -ne '')
- {
- Write-Host "Omit: $omit"
- }
+ if ($omit -ne '')
+ {
+ Write-Host "Omit: $omit"
+ }
- if ($openssl_base -ne '')
- {
- Write-Host "OpenSSL: $openssl_base"
- }
+ if ($openssl_base -ne '')
+ {
+ Write-Host "OpenSSL: $openssl_base"
+ }
- if ($mysql_base -ne '')
- {
- Write-Host "MySQL: $mysql_base"
- }
+ if ($mysql_base -ne '')
+ {
+ 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")
- }
+ # 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")
+ }
}
function Exec-MSBuild([string] $vsProject, [string] $projectConfig)
{
- if (!(Test-Path -Path $vsProject -PathType leaf)) {
- Write-Host "Project $vsProject not found, skipping."
- return
- }
+ if (!(Test-Path -Path $vsProject -PathType leaf)) {
+ Write-Host "Project $vsProject not found, skipping."
+ return
+ }
- $cmd = "&`"$script:msbuild_exe`" $vsProject /nologo /m /t:$action /p:Configuration=$projectConfig /p:BuildProjectReferences=false /p:Platform=$platform /p:useenv=$useenv /v:$verbosity"
- Write-Host $cmd
- Invoke-Expression $cmd
- if ($LastExitCode -ne 0) { Exit $LastExitCode }
+ $cmd = "&`"$script:msbuild_exe`" $vsProject /nologo /m /t:$action /p:Configuration=$projectConfig /p:BuildProjectReferences=false /p:Platform=$platform /p:useenv=$useenv /v:$verbosity"
+ Write-Host $cmd
+ Invoke-Expression $cmd
+ if ($LastExitCode -ne 0) { Exit $LastExitCode }
}
function Build-MSBuild([string] $vsProject, [switch] $skipStatic)
{
- if ($linkmode -contains "static" -and $skipStatic) { Return }
+ if ($linkmode -contains "static" -and $skipStatic) { Return }
- if ($linkmode -eq 'all')
- {
- $linkModeArr = @('shared')
- if (-not $skipStatic)
- {
- $linkModeArr += 'static_mt', 'static_md'
- }
+ if ($linkmode -eq 'all')
+ {
+ $linkModeArr = @('shared')
+ if (-not $skipStatic)
+ {
+ $linkModeArr += 'static_mt', 'static_md'
+ }
- foreach ($mode in $linkModeArr)
- {
- if ($config -eq 'both')
- {
- $configArr = 'release', 'debug'
- foreach ($cfg in $configArr)
- {
- Exec-MSBuild $vsProject "$($cfg)_$($mode)"
- }
- }
- else #config
- {
- Exec-MSBuild $vsProject "$($config)_$($mode)"
- }
- }
- }
- else #linkmode
- {
- if ($config -eq 'both')
- {
- $configArr = 'release', 'debug'
- foreach ($cfg in $configArr)
- {
- Exec-MSBuild $vsProject "$($cfg)_$($linkmode)"
- }
- }
- else #config
- {
- Exec-MSBuild $vsProject "$($config)_$($linkmode)"
- }
- }
+ foreach ($mode in $linkModeArr)
+ {
+ if ($config -eq 'both')
+ {
+ $configArr = 'release', 'debug'
+ foreach ($cfg in $configArr)
+ {
+ Exec-MSBuild $vsProject "$($cfg)_$($mode)"
+ }
+ }
+ else #config
+ {
+ Exec-MSBuild $vsProject "$($config)_$($mode)"
+ }
+ }
+ }
+ else #linkmode
+ {
+ if ($config -eq 'both')
+ {
+ $configArr = 'release', 'debug'
+ foreach ($cfg in $configArr)
+ {
+ Exec-MSBuild $vsProject "$($cfg)_$($linkmode)"
+ }
+ }
+ else #config
+ {
+ Exec-MSBuild $vsProject "$($config)_$($linkmode)"
+ }
+ }
}
function Exec-Devenv([string] $projectConfig, [string] $vsProject)
{
- $cmd = "devenv /useenv /$action $projectConfig $vsProject"
- Write-Host $cmd
- Invoke-Expression $cmd
+ $cmd = "devenv /useenv /$action $projectConfig $vsProject"
+ Write-Host $cmd
+ Invoke-Expression $cmd
}
function Build-Devenv([string] $vsProject, [switch] $skipStatic)
{
- if ($linkmode -contains "static" -and $skipStatic) { Return }
+ if ($linkmode -contains "static" -and $skipStatic) { Return }
- if ($linkmode -eq 'all')
- {
- $linkModeArr = @('shared')
- if (-not $skipStatic)
- {
- $linkModeArr += 'static_mt', 'static_md'
- }
+ if ($linkmode -eq 'all')
+ {
+ $linkModeArr = @('shared')
+ if (-not $skipStatic)
+ {
+ $linkModeArr += 'static_mt', 'static_md'
+ }
- foreach ($mode in $linkModeArr)
- {
- if ($config -eq 'both')
- {
- $configArr = 'release', 'debug'
- foreach ($cfg in $configArr)
- {
- Exec-Devenv "$($cfg)_$($mode)" $vsProject
- }
- }
- else #config
- {
- Exec-Devenv "$($config)_$($mode)" $vsProject
- }
- }
- }
- else #linkmode
- {
- if ($config -eq 'both')
- {
- $configArr = 'release', 'debug'
- foreach ($cfg in $configArr)
- {
- Exec-Devenv "$($cfg)_$($linkmode)" $vsProject
- }
- }
- else #config
- {
- Exec-Devenv "$($config)_$($linkmode)" $vsProject
- }
- }
+ foreach ($mode in $linkModeArr)
+ {
+ if ($config -eq 'both')
+ {
+ $configArr = 'release', 'debug'
+ foreach ($cfg in $configArr)
+ {
+ Exec-Devenv "$($cfg)_$($mode)" $vsProject
+ }
+ }
+ else #config
+ {
+ Exec-Devenv "$($config)_$($mode)" $vsProject
+ }
+ }
+ }
+ else #linkmode
+ {
+ if ($config -eq 'both')
+ {
+ $configArr = 'release', 'debug'
+ foreach ($cfg in $configArr)
+ {
+ Exec-Devenv "$($cfg)_$($linkmode)" $vsProject
+ }
+ }
+ else #config
+ {
+ Exec-Devenv "$($config)_$($linkmode)" $vsProject
+ }
+ }
}
function Build-samples
{
- process {
- $sampleName = $_.BaseName.split("_")[0]
- $sampleProjName = "$($poco_base)\$($componentDir)\samples\$($sampleName)\$($_)"
- if ($tool -eq 'devenv') { Build-Devenv $sampleProjName }
- elseif ($tool -eq 'msbuild') { Build-MSBuild $sampleProjName }
- else{ Write-Host "Tool not supported: $tool" }
- }
+ process {
+ $sampleName = $_.BaseName.split("_")[0]
+ $sampleProjName = "$($poco_base)\$($componentDir)\samples\$($sampleName)\$($_)"
+ if ($tool -eq 'devenv') { Build-Devenv $sampleProjName }
+ elseif ($tool -eq 'msbuild') { Build-MSBuild $sampleProjName }
+ else{ Write-Host "Tool not supported: $tool" }
+ }
}
function Build-Exec([string] $tool, [string] $vsProject, [switch] $skipStatic)
{
- if (!(Test-Path -Path $vsProject)) # not found
- {
- Write-Host "+------------------------------------------------------------------"
- Write-Host "| VS project $vsProject not found, skipping."
- Write-Host "+------------------------------------------------------------------"
- Return
- }
- if ($tool -eq 'devenv') { Build-Devenv $vsProject -skipStatic:$skipStatic }
- elseif ($tool -eq 'msbuild') { Build-MSBuild $vsProject -skipStatic:$skipStatic }
- else
- {
- Write-Host "Build tool $tool not supported. Exiting."
- Exit -1
- }
+ if (!(Test-Path -Path $vsProject)) # not found
+ {
+ Write-Host "+------------------------------------------------------------------"
+ Write-Host "| VS project $vsProject not found, skipping."
+ Write-Host "+------------------------------------------------------------------"
+ Return
+ }
+ if ($tool -eq 'devenv') { Build-Devenv $vsProject -skipStatic:$skipStatic }
+ elseif ($tool -eq 'msbuild') { Build-MSBuild $vsProject -skipStatic:$skipStatic }
+ else
+ {
+ Write-Host "Build tool $tool not supported. Exiting."
+ Exit -1
+ }
}
function Build-Components([string] $extension, [string] $platformName, [string] $type)
{
- Get-Content "$poco_base\components" | Foreach-Object {
+ Get-Content "$poco_base\components" | Foreach-Object {
- $component = $_
- $componentDir = $_.Replace("/", "\")
- $componentArr = $_.split('/')
- $componentName = $componentArr[$componentArr.Length - 1]
- $suffix = "_vs$vs"
+ $component = $_
+ $componentDir = $_.Replace("/", "\")
+ $componentArr = $_.split('/')
+ $componentName = $componentArr[$componentArr.Length - 1]
+ $suffix = "_vs$vs"
- $omitArray = @()
- $omit.Split(',;') | ForEach {
- $omitArray += $_.Trim()
- }
+ $omitArray = @()
+ $omit.Split(',;') | ForEach {
+ $omitArray += $_.Trim()
+ }
- if ($omitArray -NotContains $component)
- {
- $vsProject = "$poco_base\$componentDir\$componentName$($platformName)$($suffix).$($extension)"
+ if ($omitArray -NotContains $component)
+ {
+ $vsProject = "$poco_base\$componentDir\$componentName$($platformName)$($suffix).$($extension)"
- if (!(Test-Path -Path $vsProject)) # when VS project name is not same as directory name
- {
- $vsProject = "$poco_base\$componentDir$($platformName)$($suffix).$($extension)"
- if (!(Test-Path -Path $vsProject)) # not found
- {
- Write-Host "+------------------------------------------------------------------"
- Write-Host "| VS project $vsProject not found, skipping."
- Write-Host "+------------------------------------------------------------------"
- Return # since Foreach-Object is a function, this is actually loop "continue"
- }
- }
+ if (!(Test-Path -Path $vsProject)) # when VS project name is not same as directory name
+ {
+ $vsProject = "$poco_base\$componentDir$($platformName)$($suffix).$($extension)"
+ if (!(Test-Path -Path $vsProject)) # not found
+ {
+ Write-Host "+------------------------------------------------------------------"
+ Write-Host "| VS project $vsProject not found, skipping."
+ Write-Host "+------------------------------------------------------------------"
+ Return # since Foreach-Object is a function, this is actually loop "continue"
+ }
+ }
- Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- Write-Host "| Building $vsProject"
- Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ Write-Host "| Building $vsProject"
+ Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- if ($type -eq "lib")
- {
- Build-Exec $tool $vsProject
- }
- ElseIf ($tests -and ($type -eq "test"))
- {
- $vsTestProject = "$poco_base\$componentDir\testsuite\TestSuite$($platformName)$($suffix).$($extension)"
- Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- Write-Host "| Building $vsTestProject"
- Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- Build-Exec $tool $vsTestProject
+ if ($type -eq "lib")
+ {
+ Build-Exec $tool $vsProject
+ }
+ ElseIf ($tests -and ($type -eq "test"))
+ {
+ $vsTestProject = "$poco_base\$componentDir\testsuite\TestSuite$($platformName)$($suffix).$($extension)"
+ Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ Write-Host "| Building $vsTestProject"
+ Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ Build-Exec $tool $vsTestProject
- if ($component -eq "Foundation") # special case for Foundation, which needs test app and dll
- {
- $vsTestProject = "$poco_base\$componentDir\testsuite\TestApp$($platformName)$($suffix).$($extension)"
- Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- Write-Host "| Building $vsTestProject"
- Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- Build-Exec $tool $vsTestProject
+ if ($component -eq "Foundation") # special case for Foundation, which needs test app and dll
+ {
+ $vsTestProject = "$poco_base\$componentDir\testsuite\TestApp$($platformName)$($suffix).$($extension)"
+ Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ Write-Host "| Building $vsTestProject"
+ Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ Build-Exec $tool $vsTestProject
- $vsTestProject = "$poco_base\$componentDir\testsuite\TestLibrary$($platformName)$($suffix).$($extension)"
- Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- Write-Host "| Building $vsTestProject"
- Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- Build-Exec $tool $vsTestProject -skipStatic
- }
- }
- ElseIf ($samples -and ($type -eq "sample"))
- {
- if ($platform -eq 'x64')
- {
- Get-Childitem "$poco_base\$($componentDir)" -Recurse |`
- Where {$_.Extension -Match $extension -And $_.DirectoryName -Like "*samples*" -And $_.BaseName -Like "*$platformName$($suffix)" } `
- | Build-samples "$_"
- }
- else
- {
- Get-Childitem "$poco_base\$($componentDir)" -Recurse |`
- Where {$_.Extension -Match $extension -And $_.DirectoryName -Like "*samples*" -And $_.BaseName -Like "*$($suffix)" -And $_.BaseName -NotLike "*_x64_*" } `
- | Build-samples "$_"
- }
- }
- }
- else
- {
- Write-Host "-------------------------------"
- Write-Host "# Skipping $componentDir"
- Write-Host "-------------------------------"
- }
- }
+ $vsTestProject = "$poco_base\$componentDir\testsuite\TestLibrary$($platformName)$($suffix).$($extension)"
+ Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ Write-Host "| Building $vsTestProject"
+ Write-Host "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+ Build-Exec $tool $vsTestProject -skipStatic
+ }
+ }
+ ElseIf ($samples -and ($type -eq "sample"))
+ {
+ if ($platform -eq 'x64')
+ {
+ Get-Childitem "$poco_base\$($componentDir)" -Recurse |`
+ Where {$_.Extension -Match $extension -And $_.DirectoryName -Like "*samples*" -And $_.BaseName -Like "*$platformName$($suffix)" } `
+ | Build-samples "$_"
+ }
+ else
+ {
+ Get-Childitem "$poco_base\$($componentDir)" -Recurse |`
+ Where {$_.Extension -Match $extension -And $_.DirectoryName -Like "*samples*" -And $_.BaseName -Like "*$($suffix)" -And $_.BaseName -NotLike "*_x64_*" } `
+ | Build-samples "$_"
+ }
+ }
+ }
+ else
+ {
+ Write-Host "-------------------------------"
+ Write-Host "# Skipping $componentDir"
+ Write-Host "-------------------------------"
+ }
+ }
}
function Build
{
- Process-Input
+ Process-Input
- if ($vs -lt 100) { $extension = 'vcproj' }
- else { $extension = 'vcxproj' }
+ if ($vs -lt 100) { $extension = 'vcproj' }
+ else { $extension = 'vcxproj' }
- $platformName = ''
- if ($platform -eq 'x64') { $platformName = '_x64' }
- elseif ($platform -eq 'WinCE') { $platformName = '_CE' }
+ $platformName = ''
+ if ($platform -eq 'x64') { $platformName = '_x64' }
+ elseif ($platform -eq 'WinCE') { $platformName = '_CE' }
- Build-Components $extension $platformName "lib"
- Build-Components $extension $platformName "test"
- Build-Components $extension $platformName "sample"
+ Build-Components $extension $platformName "lib"
+ Build-Components $extension $platformName "test"
+ Build-Components $extension $platformName "sample"
}