Add VisualStudio selection for building poco

This commit is contained in:
Francis ANDRE 2018-06-29 08:11:12 +02:00
parent 95c3e7e245
commit 2f8f131f8e
4 changed files with 192 additions and 93 deletions

View File

@ -16,7 +16,7 @@ model {
exportedHeaders {
srcDir 'include'
}
lib project: ':Foundation', library: 'Foundation'
//lib project: ':Foundation', library: 'Foundation'
}
}
}

View File

@ -199,6 +199,46 @@ class SliceTasksPlugin extends RuleSource {
}
}
def getSelectedVisualStudioToolChain() {
String selector = System.properties["VS"]
if (selector == null) {
selector = "VS2017"
}
String installDir = null
String toolset = null;
String vsvers = null;
switch (selector) {
case "VS2008":
installDir = "file://C:/Program Files (x86)/Microsoft Visual Studio 9.0";vsvers="vs90";toolset = "v90";
break;
case "VS2010":
installDir = "file://C:/Program Files (x86)/Microsoft Visual Studio 10.0";vsvers="vs100";toolset = "v100";
break;
case "VS2012":
installDir = "file://C:/Program Files (x86)/Microsoft Visual Studio 11.0";vsvers="vs110";toolset = "v110";
break;
case "VS2013":
installDir = "file://C:/Program Files (x86)/Microsoft Visual Studio 12.0";vsvers="vs120";toolset = "v120";
break;
case "VS2015":
installDir = "file://C:/Program Files (x86)/Microsoft Visual Studio 14.0";vsvers="vs140";toolset = "v140";
break;
case "VS2017":
installDir = "file://C:/Program Files (x86)/Microsoft Visual Studio/2017/Community";vsvers="vs150";toolset = "v141";
break;
default:
throw new IllegalArgumentException()
}
return [
vsyear: selector,
vsvers: vsvers,
toolset: toolset,
installDir: installDir,
]
}
allprojects {
buildDir = new File('guild') // DO NOT REMOVE OR CHANGE to 'build' since 'build' is a Poco directory
@ -229,13 +269,36 @@ subprojects {
release
debug
}
toolChains {
def vsToolChain = getSelectedVisualStudioToolChain()
create(vsToolChain.vsyear, VisualCpp) {
installDir vsToolChain.installDir
}
}
/*
toolChains {
visualCpp(VisualCpp) {
// Specify the installDir if Visual Studio cannot be located
// installDir "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community"
// installDir "C:/Program Files (x86)/Microsoft Visual Studio 14.0"
/* toolChains {
VS2008(VisualCpp) {
installDir = VS2008installDir
}
VS2010(VisualCpp) {
installDir = VS2010installDir
}
VS2012(VisualCpp) {
installDir = VS2012installDir
}
VS2013(VisualCpp) {
installDir = VS2013installDir
}
VS2015(VisualCpp) {
installDir = VS2015installDir
}
VS2017(VisualCpp) {
installDir "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community"
eachPlatform {
cppCompiler.withArguments { args ->
args << "-DFRENCH"
}
}
}
gcc(Gcc) {
@ -243,8 +306,9 @@ subprojects {
// path "/usr/bin/gcc"
}
clang(Clang)
}
*/
*/
platforms {
win32 {
operatingSystem "windows"
@ -957,72 +1021,98 @@ ext.commonNuspecMetadata = [
copyright: 'Copyright 2018',
releaseNotes: 'releaseNotes'
]
task nugetCopyx86Target(type: Copy) {
def vsToolChain = getSelectedVisualStudioToolChain()
String toolset = vsToolChain.toolset
from file("$rootDir/packaging/Windows/NuGet/Pocoproject.Poco.x86.targets")
rename { String filename ->
int insert = filename.indexOf("x86")
return filename[0..insert - 1] + toolset + "." + filename.substring(insert)
}
into file("$rootDir/packaging/Windows/NuGet")
}
task nugetCopyx64Target(type: Copy) {
def vsToolChain = getSelectedVisualStudioToolChain()
String toolset = vsToolChain.toolset
from file("$rootDir/packaging/Windows/NuGet/Pocoproject.Poco.x64.targets")
rename { String filename ->
int insert = filename.indexOf("x64")
return filename[0..insert - 1] + toolset + "." + filename.substring(insert)
}
into file("$rootDir/packaging/Windows/NuGet")
}
task 'nugetSpec-x86'(type: NuGetSpec) {
dependsOn 'nugetCopyx86Target'
def vsToolChain = getSelectedVisualStudioToolChain()
String toolset = vsToolChain.toolset
nuspec = [
metadata: commonNuspecMetadata + [
id: "Pocoproject.Poco.v141.x86",
title: "Pocoproject Poco v141 $version x86",
id: "Pocoproject.Poco.${toolset}.x86",
title: "Pocoproject Poco ${toolset} $version x86",
dependencies: [ { dependency(id: "Pocoproject.OpenSSL.vs120.x86", version: "1.1.0") } ]
],
files: [
{ file(src: "$rootDir\\packaging\\Windows\\NuGet\\Pocoproject.Poco.v141.x86.targets", target: "build\\native") },
{ file(src: "$rootDir\\bin\\Poco*.*", target: "build\\native\\bin", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\lib\\Poco*.*", target: "build\\native\\lib", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\bin\\Poco*d.*", target: "build\\native\\bin", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\lib\\Poco*d.*", target: "build\\native\\lib", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\CppUnit\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Foundation\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Crypto\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\MySQL\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\ODBC\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\SQLite\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Encodings\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Foundation\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\JSON\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\MongoDB\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Net\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\NetSSL_OpenSSL\\include\\**",target: "build\\native\\inc") },
{ file(src: "$rootDir\\NetSSL_Win\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\PDF\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Util\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\XML\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Zip\\include\\**", target: "build\\native\\inc") }
{ file(src: "$rootDir\\packaging\\Windows\\NuGet\\Pocoproject.Poco.${vsToolChain["toolset"]}.x86.targets", target: "build\\native") },
{ file(src: "$rootDir\\bin\\Poco*.*", target: "build\\native\\bin", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\lib\\Poco*.*", target: "build\\native\\lib", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\bin\\Poco*d.*", target: "build\\native\\bin", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\lib\\Poco*d.*", target: "build\\native\\lib", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\CppUnit\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Foundation\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Encodings\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Crypto\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\MySQL\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\ODBC\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\SQLite\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\PostgreSQL\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\JSON\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\MongoDB\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Net\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\NetSSL_OpenSSL\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\NetSSL_Win\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\PDF\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Util\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\XML\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Zip\\include\\**", target: "build\\native\\inc") }
]
]
outputs.file(nuspecFile)
}
task 'nugetSpec-x64'(type: NuGetSpec) {
dependsOn 'nugetCopyx64Target'
def vsToolChain = getSelectedVisualStudioToolChain()
String toolset = vsToolChain.toolset
nuspec = [
metadata: commonNuspecMetadata + [
id: "Pocoproject.Poco.v141.x64",
title: "Pocoproject Poco v141 $version x64",
id: "Pocoproject.Poco.${toolset}.x64",
title: "Pocoproject Poco ${toolset} $version x64",
dependencies: [ { dependency(id: "Pocoproject.OpenSSL.vs120.x64", version: "1.1.0") } ]
],
files: [
{ file(src: "$rootDir\\packaging\\Windows\\NuGet\\Pocoproject.Poco.v141.x64.targets", target: "build\\native") },
{ file(src: "$rootDir\\bin64\\Poco*64.*", target: "build\\native\\bin64", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\lib64\\Poco*.*", target: "build\\native\\lib64", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\bin64\\Poco*64d.*", target: "build\\native\\bin64", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\lib64\\Poco*d.*", target: "build\\native\\lib64", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\CppUnit\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Foundation\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Crypto\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\MySQL\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\ODBC\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\SQLite\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Encodings\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Foundation\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\JSON\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\MongoDB\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Net\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\NetSSL_OpenSSL\\include\\**",target: "build\\native\\inc") },
{ file(src: "$rootDir\\NetSSL_Win\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\PDF\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Util\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\XML\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Zip\\include\\**", target: "build\\native\\inc") }
{ file(src: "$rootDir\\packaging\\Windows\\NuGet\\Pocoproject.Poco.${vsToolChain["toolset"]}.x64.targets", target: "build\\native") },
{ file(src: "$rootDir\\bin64\\Poco*64.*", target: "build\\native\\bin64", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\lib64\\Poco*.*", target: "build\\native\\lib64", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\bin64\\Poco*64d.*", target: "build\\native\\bin64", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\lib64\\Poco*d.*", target: "build\\native\\lib64", exclude: "$rootDir\\bin\\*CppParser*.*") },
{ file(src: "$rootDir\\CppUnit\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Foundation\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Encodings\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Crypto\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\MySQL\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\ODBC\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\PostgreSQL\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Data\\SQLite\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\JSON\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\MongoDB\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Net\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\NetSSL_OpenSSL\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\NetSSL_Win\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\PDF\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Util\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\XML\\include\\**", target: "build\\native\\inc") },
{ file(src: "$rootDir\\Zip\\include\\**", target: "build\\native\\inc") }
]
]
outputs.file(nuspecFile)

View File

@ -2,81 +2,87 @@
# Windows Customization
###############################################################################
# https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19-win32.zip
mysql32Home=C:/mysql-5.6.37-win32
# mysql32Home=C:/mysql-5.6.37-win32
# https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip
mysql64Home=C:/mysql-5.6.37-winx64
# mysql64Home=C:/mysql-5.6.37-winx64
# https://get.enterprisedb.com/postgresql/postgresql-9.6.3-2-windows-binaries.zip
postgres32Home=C:/postgresql-9.6.3-2-win32/pgsql
# postgres32Home=C:/postgresql-9.6.3-2-win32/pgsql
# https://get.enterprisedb.com/postgresql/postgresql-9.6.3-2-windows-x64-binaries.zip
postgres64Home=C:/postgresql-9.6.3-2-win64/pgsql
# postgres64Home=C:/postgresql-9.6.3-2-win64/pgsql
# Windows Development Kit
WDKHome=C:/Program Files (x86)/Windows Kits/10
WDKVers=10.0.16299.0
# WDKHome=C:/Program Files (x86)/Windows Kits/10
# WDKVers=10.0.16299.0
#C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt
# C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\x86
# VisualStudio 2015
#VCHome=C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC
# VCHome=C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC
# VisualStudio 2017
# c:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503
VCHome=C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.13.26128
# VCHome=C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428
# C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\114.13.26128\bin\HostX86\x86\cl.exe
CLPath=C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.13.26128/bin/HostX86/x86
# CLPath=C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x86
VS2008installDir = "C:/Program Files (x86)/Microsoft Visual Studio 9.0"
VS2010installDir = "C:/Program Files (x86)/Microsoft Visual Studio 10.0"
VS2012installDir = "C:/Program Files (x86)/Microsoft Visual Studio 11.0"
VS2013installDir = "C:/Program Files (x86)/Microsoft Visual Studio 12.0"
VS2015installDir = "C:/Program Files (x86)/Microsoft Visual Studio 14.0"
VS2017installDir = "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community"
# https://github.com/wixtoolset/wix3/releases/download/wix311rtm/wix311.exe
WiXHome=C:/Program Files (x86)/WiX Toolset v3.11
# WiXHome=C:/Program Files (x86)/WiX Toolset v3.11
# https://dist.nuget.org/win-x86-commandline/v4.3.0/nuget.exe
NuGetHome=C:/Program Files (x86)/NuGet
# NuGetHome=C:/Program Files (x86)/NuGet
#https://github.com/OpenCppCoverage/OpenCppCoverage/releases
OpenCppCoverageHome=C:/Program Files/OpenCppCoverage
# OpenCppCoverageHome=C:/Program Files/OpenCppCoverage
#https://github.com/danielpalme/ReportGenerator/releases
#ReportGeneratorHome=C:/ProgramFiles/ReportGenerator
ReportGeneratorHome=C:/ProgramFiles/ReportGenerator
# ReportGeneratorHome=C:/ProgramFiles/ReportGenerator
openSSLWindowsHome = openssl/build
# openSSLWindowsHome = openssl/build
###############################################################################
# Linux Customization
###############################################################################
openSSL32LinuxLib = /usr/local/lib
openSSL32LinuxInc = /usr/local/include/openssl
# openSSL32LinuxLib = /usr/local/lib
# openSSL32LinuxInc = /usr/local/include/openssl
openSSL64LinuxLib = /usr/local/lib
openSSL64LinuxInc = /usr/local/include/openssl
# openSSL64LinuxLib = /usr/local/lib
# openSSL64LinuxInc = /usr/local/include/openssl
mysql32LinuxLib =
mysql32LinuxInc = /usr/local
# mysql32LinuxLib =
# mysql32LinuxInc = /usr/local
mysql64LinuxLib =
mysql64LinuxInc = /usr/local
# mysql64LinuxLib =
# mysql64LinuxInc = /usr/local
postgres32LinuxLib = /usr/lib/x86-linux-gnu/
postgres32LinuxInc = /usr/local/postgresql/
# postgres32LinuxLib = /usr/lib/x86-linux-gnu/
# postgres32LinuxInc = /usr/local/postgresql/
postgres64LinuxLib = /usr/lib/x86_64-linux-gnu/
postgres64LinuxInc = /usr/include/postgresql/
# postgres64LinuxLib = /usr/lib/x86_64-linux-gnu/
# postgres64LinuxInc = /usr/include/postgresql/
###############################################################################
# Mac OSX Customization
###############################################################################
openSSLBrewHome = /usr/local/opt/openssl
# openSSLBrewHome = /usr/local/opt/openssl
postgres32OSXHome =
postgres32OSXLib =
postgres32OSXInc = /usr/local
# postgres32OSXHome =
# postgres32OSXLib =
# postgres32OSXInc = /usr/local
postgres64OSXLib = /usr/lib/x86_64-linux-gnu/
postgres64OSXInc = /usr/include/postgresql/
# postgres64OSXLib = /usr/lib/x86_64-linux-gnu/
# postgres64OSXInc = /usr/include/postgresql/
###############################################################################
# Common

View File

@ -7,6 +7,9 @@
<?define ProductAuthor = 'Applied Informatics Software Engineering GmbH and Contributors' ?>
<?define ProductAppFolder = 'InstallLocation' ?>
<?define VisualStudio = '$(var.VSYEAR)' ?>
<?if $(var.VisualStudio) = VS2017 ?>
<?define PlatformToolSetVersion = 'v141' ?>
<?endif ?>
<?if $(var.Platform) = x64 ?>
<?define ProductDisplayName = '$(var.ProductName) 64-bit' ?>
<!-- <?define ProductId = 'DAEF6430-C2C6-427F-BB76-B17908FC3162' ?> -->
@ -83,8 +86,8 @@
</Directory>
</Directory>
<DirectoryRef Id="APPLICATIONFOLDER">
<Directory Id="VisualStudio" Name="$(var.VisualStudio)">
<Directory Id="Version" Name="$(var.VERSION)">
<Directory Id="Version" Name="$(var.ProductVersion)">
<Directory Id="VisualStudio" Name="$(var.PlatformToolSetVersion)">
<Directory Id="bin" Name="bin">
<?if $(var.Platform) = x64 ?>
<Component Win64="$(var.Win64)" Id="PocoCppUnit64.shared.debug" DiskId="1" Guid="1139732C-64FC-4F3C-82F0-2442CBEB3E43">