diff --git a/.gitignore b/.gitignore
index 0b7f2eb69..5b94880ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,7 +22,7 @@ config.build
config.make
# CMake #
-########
+#########
cmake_install.cmake
cmake_uninstall.cmake
CMakeFiles
@@ -32,6 +32,22 @@ CPackSourceConfig.cmake
cmake_*
cmake-build*
+# Gradle #
+##########
+.gradle/
+gradle/
+coverage/
+
+# NuGet #
+#########
+*.nupkg
+
+# WiX #
+#######
+*.msi
+*.wixobj
+*.wixpdb
+
# Packages #
############
# it's better to unpack these files and commit the raw source
@@ -52,6 +68,7 @@ cmake-build*
*.db
test*.txt
XML/testsuite/rss.xml
+Zip/testsuite/test.dat
# OS generated files #
######################
diff --git a/.gitmodules b/.gitmodules
index 42c0b9895..905744bdd 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
[submodule "openssl"]
path = openssl
url = https://github.com/pocoproject/openssl
+[submodule "gradle"]
+ path = gradle
+ url = https://github.com/pocoproject/gradle.git
diff --git a/CppParser/build.gradle b/CppParser/build.gradle
new file mode 100644
index 000000000..da7e51b9b
--- /dev/null
+++ b/CppParser/build.gradle
@@ -0,0 +1,32 @@
+model {
+ components {
+ CppParser(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "CppParser_EXPORTS"
+ }
+ }
+ }
+}
+task poco { dependsOn "assemble" }
diff --git a/CppParser/testsuite/build.gradle b/CppParser/testsuite/build.gradle
new file mode 100644
index 000000000..3cdf0ca7f
--- /dev/null
+++ b/CppParser/testsuite/build.gradle
@@ -0,0 +1,52 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit'
+ lib project: ':CppParser', library: 'CppParser'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ testSuites {
+ CppParserTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ all {
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
+
+
diff --git a/CppUnit/WinTestRunner/build.gradle b/CppUnit/WinTestRunner/build.gradle
new file mode 100644
index 000000000..c19921c99
--- /dev/null
+++ b/CppUnit/WinTestRunner/build.gradle
@@ -0,0 +1,33 @@
+project(":CppUnit/WinTestRunner") {
+ model {
+ components {
+ PocoWinTestRunner(NativeExecutableSpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':CppUnit', library: 'PocoCppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "WinTestRunner_EXPORTS"
+ }
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':CppUnit', library: 'PocoCppUnit', linkage: 'static'
+ }
+ }
+ }
+}
+
diff --git a/CppUnit/build.gradle b/CppUnit/build.gradle
new file mode 100644
index 000000000..3d51671fb
--- /dev/null
+++ b/CppUnit/build.gradle
@@ -0,0 +1,35 @@
+model {
+ components {
+ CppUnit(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ }
+ }
+ }
+ }
+ binaries {
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "CppUnit_EXPORTS"
+ }
+ }
+ withType(StaticLibraryBinarySpec) {
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
+
diff --git a/Crypto/build.gradle b/Crypto/build.gradle
new file mode 100644
index 000000000..5a90c159e
--- /dev/null
+++ b/Crypto/build.gradle
@@ -0,0 +1,45 @@
+model {
+ components {
+ Crypto(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib library: 'ssl'
+ lib library: 'crypto'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ if (toolChain in VisualCpp) {
+ linker.args "ws2_32.lib"
+ linker.args "iphlpapi.lib"
+ }
+ if (toolChain in Gcc) {
+ linker.args "-lssl"
+ linker.args "-lcrypto"
+ }
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "Crypto_EXPORTS"
+ }
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
diff --git a/Crypto/samples/build.gradle b/Crypto/samples/build.gradle
new file mode 100644
index 000000000..8b938c9e5
--- /dev/null
+++ b/Crypto/samples/build.gradle
@@ -0,0 +1,27 @@
+model {
+ components {
+ genrsakey(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'genrsakey/src' include '**/*.cpp' }
+ cpp.lib project: ':Crypto', library: 'Crypto'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ withType(NativeExecutableSpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ }
+}
+task sample { dependsOn "assemble" }
+
+
diff --git a/Crypto/testsuite/build.gradle b/Crypto/testsuite/build.gradle
new file mode 100644
index 000000000..d53ccbcbc
--- /dev/null
+++ b/Crypto/testsuite/build.gradle
@@ -0,0 +1,65 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit'
+ lib project: ':Crypto', library: 'Crypto'
+ lib library: 'ssl'
+ lib library: 'crypto'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ testSuites {
+ CryptoTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
+
diff --git a/Foundation/build.gradle b/Foundation/build.gradle
new file mode 100644
index 000000000..c1b0f10b8
--- /dev/null
+++ b/Foundation/build.gradle
@@ -0,0 +1,115 @@
+model {
+ components {
+ Foundation(NativeLibrarySpec) { m ->
+ sources {
+//
+// mc {
+// source {
+// srcDir 'src'
+// include '**/*.mc'
+// }
+// }
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ c {
+ source {
+ srcDir 'src'
+ include '**/*.c'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude 'ByteOrder.cpp'
+ exclude 'String.cpp'
+ exclude 'SignalHandler.cpp'
+ exclude 'Environment_*.cpp'
+ exclude 'FPEnvironment_*.cpp'
+ exclude 'Timezone_*.cpp'
+ exclude 'DirectoryIterator_*.cpp'
+ exclude 'File_*.cpp'
+ exclude 'FileStream_*.cpp'
+ exclude 'Path_*.cpp'
+ exclude 'LogFile_*.cpp'
+ exclude 'NamedEvent_*.cpp'
+ exclude 'NamedMutex_*.cpp'
+ exclude 'PipeImpl_*.cpp'
+ exclude 'Process_*.cpp'
+ exclude 'SharedMemory_*.cpp'
+ exclude 'SharedLibrary_*.cpp'
+ exclude 'Event_*.cpp'
+ exclude 'Mutex_*.cpp'
+ exclude 'RWLock_*.cpp'
+ exclude 'Semaphore_*.cpp'
+ exclude 'Thread_*.cpp'
+
+ exclude 'EventLogChannel.cpp'
+ exclude 'UnWindows.cpp'
+ exclude 'WindowsConsoleChannel.cpp'
+ exclude 'OpcomChannel.cpp'
+ exclude 'AndroidLogChannel.cpp'
+ exclude 'SyslogChannel.cpp'
+
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ }
+ }
+ binaries.all {
+ sources {
+ if (targetPlatform.operatingSystem.windows) {
+ platformWindows(CppSourceSet) {
+ lib m.sources.cpp
+ source {
+ srcDir 'src'
+ include 'EventLogChannel.cpp'
+ include 'UnWindows.cpp'
+ include 'WindowsConsoleChannel.cpp'
+ }
+ }
+ } else
+ if (targetPlatform.operatingSystem.macOsX || targetPlatform.operatingSystem.linux) {
+ platformNix(CppSourceSet) {
+ lib m.sources.cpp
+ source {
+ srcDir 'src'
+ include 'SignalHandler.cpp'
+ include 'SyslogChannel.cpp'
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ if (toolChain in VisualCpp) {
+ linker.args "ws2_32.lib"
+ linker.args "iphlpapi.lib"
+ }
+ }
+ withType(NativeExecutableSpec) {
+ }
+ withType(StaticLibraryBinarySpec) {
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+// addCompilerDefine "Foundation_EXPORTS" ""
+ cCompiler.define "Foundation_EXPORTS"
+ cppCompiler.define "Foundation_EXPORTS"
+ }
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
diff --git a/Foundation/samples/build.gradle b/Foundation/samples/build.gradle
new file mode 100644
index 000000000..14611660a
--- /dev/null
+++ b/Foundation/samples/build.gradle
@@ -0,0 +1,146 @@
+model {
+ components {
+ ActiveMethod(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'ActiveMethod/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ Activity(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'ActiveMethod/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ base64decode(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'base64decode/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ base64encode(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'base64encode/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ Benchmark(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'Benchmark/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ BinaryReaderWriter(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'BinaryReaderWriter/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ DateTime(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'DateTime/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ deflate(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'deflate/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ dir(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'dir/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ grep(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'grep/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ hmacmd5(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'hmacmd5/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ inflate(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'inflate/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ LineEndingConverter(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'LineEndingConverter/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ Logger(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'Logger/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ LogRotation(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'LogRotation/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ md5(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'md5/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ NotificationQueue(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'NotificationQueue/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ StringTokenizer(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'StringTokenizer/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ Timer(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'Timer/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ URI(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'URI/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ uuidgen(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'uuidgen/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ withType(NativeExecutableSpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/Foundation/testsuite/build.gradle b/Foundation/testsuite/build.gradle
new file mode 100644
index 000000000..fc3d8416a
--- /dev/null
+++ b/Foundation/testsuite/build.gradle
@@ -0,0 +1,92 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestLib(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include 'TestLibrary.cpp'
+ include 'TestPlugin.cpp'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ TestApp(NativeExecutableSpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include 'TestApp.cpp'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ lib library: 'TestLib', linkage: 'shared'
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ exclude '*_WINCE.cpp'
+ exclude 'TestApp*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ testSuites {
+ FoundationTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+
+}
+task testsuite { dependsOn "assemble" }
+
+
diff --git a/JSON/build.gradle b/JSON/build.gradle
new file mode 100644
index 000000000..9c4745195
--- /dev/null
+++ b/JSON/build.gradle
@@ -0,0 +1,47 @@
+model {
+ components {
+ JSON(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ c {
+ source {
+ srcDir 'src'
+ include '**/*.c'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ if (toolChain in VisualCpp) {
+ }
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "JSON_EXPORTS"
+ }
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
diff --git a/JSON/samples/build.gradle b/JSON/samples/build.gradle
new file mode 100644
index 000000000..5c3e9cd8a
--- /dev/null
+++ b/JSON/samples/build.gradle
@@ -0,0 +1,27 @@
+model {
+ components {
+ Benchmark(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'Benchmark/src' include '**/*.cpp' }
+ cpp.lib project: ':JSON', library: 'JSON'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ withType(NativeExecutableSpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/JSON/testsuite/build.gradle b/JSON/testsuite/build.gradle
new file mode 100644
index 000000000..2c3e9d7d8
--- /dev/null
+++ b/JSON/testsuite/build.gradle
@@ -0,0 +1,63 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':JSON', library: 'JSON', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ testSuites {
+ JSONTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
+
diff --git a/MongoDB/build.gradle b/MongoDB/build.gradle
new file mode 100644
index 000000000..d80e1322d
--- /dev/null
+++ b/MongoDB/build.gradle
@@ -0,0 +1,37 @@
+model {
+ components {
+ MongoDB(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Net', library: 'Net'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "MongoDB_EXPORTS"
+ }
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
+
diff --git a/MongoDB/samples/build.gradle b/MongoDB/samples/build.gradle
new file mode 100644
index 000000000..fc9684742
--- /dev/null
+++ b/MongoDB/samples/build.gradle
@@ -0,0 +1,25 @@
+model {
+ components {
+ SQLToMongo(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'SQLToMongo/src' include '**/*.cpp' }
+ cpp.lib project: ':MongoDB', library: 'MongoDB'
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ }
+ withType(StaticLibraryBinarySpec) {
+ }
+ withType(NativeExecutableSpec) {
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/MongoDB/testsuite/build.gradle b/MongoDB/testsuite/build.gradle
new file mode 100644
index 000000000..a7c40eabd
--- /dev/null
+++ b/MongoDB/testsuite/build.gradle
@@ -0,0 +1,63 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':MongoDB', library: 'MongoDB', linkage: 'shared'
+ lib project: ':Net', library: 'Net', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ testSuites {
+ MongoDBTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
diff --git a/Net/build.gradle b/Net/build.gradle
new file mode 100644
index 000000000..dac3c2867
--- /dev/null
+++ b/Net/build.gradle
@@ -0,0 +1,40 @@
+model {
+ components {
+ Net(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ if (targetPlatform.operatingSystem.windows) {
+ linker.args "ws2_32.lib"
+ linker.args "iphlpapi.lib"
+ }
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "Net_EXPORTS"
+ }
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
+
diff --git a/Net/samples/build.gradle b/Net/samples/build.gradle
new file mode 100644
index 000000000..3e245adae
--- /dev/null
+++ b/Net/samples/build.gradle
@@ -0,0 +1,118 @@
+model {
+ components {
+ dict(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'dict/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ download(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'download/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ EchoServer(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'EchoServer/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ HTTPFormServer(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'HTTPFormServer/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ httpget(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'httpget/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ HTTPLoadTest(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'HTTPLoadTest/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ HTTPTimeServer(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'HTTPTimeServer/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ ifconfig(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'ifconfig/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ Mail(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'Mail/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ Ping(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'Ping/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ SMTPLogger(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'SMTPLogger/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ TimeServer(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'TimeServer/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ WebSocketServer(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'WebSocketServer/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ withType(NativeExecutableSpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/Net/testsuite/build.gradle b/Net/testsuite/build.gradle
new file mode 100644
index 000000000..f397ef090
--- /dev/null
+++ b/Net/testsuite/build.gradle
@@ -0,0 +1,69 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':Net', library: 'Net', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ testSuites {
+ NetTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ all {
+ if (targetPlatform.operatingSystem.windows) {
+ linker.args "ws2_32.lib"
+ linker.args "iphlpapi.lib"
+ }
+ }
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
+
diff --git a/NetSSL_OpenSSL/build.gradle b/NetSSL_OpenSSL/build.gradle
new file mode 100644
index 000000000..188062619
--- /dev/null
+++ b/NetSSL_OpenSSL/build.gradle
@@ -0,0 +1,41 @@
+model {
+ components {
+ NetSSL(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib library: 'ssl'
+ lib library: 'crypto'
+ lib project: ':Crypto', library: 'Crypto'
+ lib project: ':Net', library: 'Net'
+ lib project: ':Util', library: 'Util'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "NetSSL_EXPORTS"
+ }
+ }
+ withType(StaticLibraryBinarySpec) {
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
+
diff --git a/NetSSL_OpenSSL/samples/build.gradle b/NetSSL_OpenSSL/samples/build.gradle
new file mode 100644
index 000000000..b9b789b03
--- /dev/null
+++ b/NetSSL_OpenSSL/samples/build.gradle
@@ -0,0 +1,68 @@
+model {
+ components {
+ download(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'download/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':NetSSL_OpenSSL', library: 'NetSSL'
+ cpp.lib project: ':Crypto', library: 'Crypto'
+ cpp.lib library: 'crypto'
+ cpp.lib library: 'ssl'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ HTTPSTimeServer(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'EchoServer/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':NetSSL_OpenSSL', library: 'NetSSL'
+ cpp.lib project: ':Crypto', library: 'Crypto'
+ cpp.lib library: 'crypto'
+ cpp.lib library: 'ssl'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ Mail(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'HTTPFormServer/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':NetSSL_OpenSSL', library: 'NetSSL'
+ cpp.lib project: ':Crypto', library: 'Crypto'
+ cpp.lib library: 'crypto'
+ cpp.lib library: 'ssl'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ TwitterClient(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'httpget/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':NetSSL_OpenSSL', library: 'NetSSL'
+ cpp.lib project: ':Crypto', library: 'Crypto'
+ cpp.lib library: 'crypto'
+ cpp.lib library: 'ssl'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ withType(NativeExecutableSpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/NetSSL_OpenSSL/testsuite/build.gradle b/NetSSL_OpenSSL/testsuite/build.gradle
new file mode 100644
index 000000000..3ddc09ce6
--- /dev/null
+++ b/NetSSL_OpenSSL/testsuite/build.gradle
@@ -0,0 +1,74 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit'
+ lib library: 'crypto'
+ lib library: 'ssl'
+ lib project: ':Crypto', library: 'Crypto'
+ lib project: ':Net', library: 'Net'
+ lib project: ':NetSSL_OpenSSL', library: 'NetSSL'
+ lib project: ':Util', library: 'Util'
+ lib project: ':JSON', library: 'JSON'
+ lib project: ':XML', library: 'XML'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ binaries.all {
+ if (targetPlatform.operatingSystem.windows) {
+ lib library: 'WS2_32', linkage: 'static'
+ }
+ }
+ }
+ }
+ testSuites {
+ NetSSLTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
diff --git a/NetSSL_Win/build.gradle b/NetSSL_Win/build.gradle
new file mode 100644
index 000000000..544e7089e
--- /dev/null
+++ b/NetSSL_Win/build.gradle
@@ -0,0 +1,46 @@
+model {
+ components {
+ NetSSLWin(NativeLibrarySpec) {
+ binaries.all {
+ if (targetPlatform.operatingSystem.windows) {
+ sources {
+ rc(WindowsResourceSet) {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp(CppSourceSet) {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Crypto', library: 'Crypto'
+ lib project: ':Net', library: 'Net'
+ lib project: ':Util', library: 'Util'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ if (toolChain in VisualCpp) {
+ linker.args "Crypt32.lib"
+ linker.args 'ws2_32.lib'
+ linker.args 'iphlpapi.lib'
+ }
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "NetSSL_Win_EXPORTS"
+ }
+ }
+ }
+}
+task poco { dependsOn "assemble" }
diff --git a/NetSSL_Win/samples/build.gradle b/NetSSL_Win/samples/build.gradle
new file mode 100644
index 000000000..9225dbc98
--- /dev/null
+++ b/NetSSL_Win/samples/build.gradle
@@ -0,0 +1,56 @@
+model {
+ components {
+ download(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'dict/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':NetSSL_OpenSSL', library: 'NetSSL'
+ cpp.lib project: ':Crypto', library: 'Crypto'
+ cpp.lib library: 'crypto'
+ cpp.lib library: 'ssl'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ HTTPSTimeServer(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'download/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':NetSSL_OpenSSL', library: 'NetSSL'
+ cpp.lib project: ':Crypto', library: 'Crypto'
+ cpp.lib library: 'crypto'
+ cpp.lib library: 'ssl'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ Mail(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'EchoServer/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':NetSSL_OpenSSL', library: 'NetSSL'
+ cpp.lib project: ':Crypto', library: 'Crypto'
+ cpp.lib library: 'crypto'
+ cpp.lib library: 'ssl'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ withType(NativeExecutableSpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/NetSSL_Win/testsuite/build.gradle b/NetSSL_Win/testsuite/build.gradle
new file mode 100644
index 000000000..693834c0a
--- /dev/null
+++ b/NetSSL_Win/testsuite/build.gradle
@@ -0,0 +1,70 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit'
+ lib library: 'crypto'
+ lib library: 'ssl'
+ lib project: ':Crypto', library: 'Crypto'
+ lib project: ':Net', library: 'Net'
+ lib project: ':NetSSL_OpenSSL', library: 'NetSSL'
+ lib project: ':Util', library: 'Util'
+ lib project: ':JSON', library: 'JSON'
+ lib project: ':XML', library: 'XML'
+ lib project: ':Foundation', library: 'Foundation'
+ lib library: 'WS2_32', linkage: 'static'
+ }
+ }
+ }
+ }
+ testSuites {
+ NetSSLTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
diff --git a/PDF/build.gradle b/PDF/build.gradle
index 3fecdb3b5..a9b7748e8 100644
--- a/PDF/build.gradle
+++ b/PDF/build.gradle
@@ -20,6 +20,7 @@ project(":PDF") {
exportedHeaders {
srcDirs 'include', 'include/Poco/PDF'
}
+ lib project: ':XML', library: 'XML'
lib project: ':Util', library: 'Util'
lib project: ':Foundation', library: 'Foundation'
}
diff --git a/PageCompiler/File2Page/build.gradle b/PageCompiler/File2Page/build.gradle
new file mode 100644
index 000000000..9b6e79957
--- /dev/null
+++ b/PageCompiler/File2Page/build.gradle
@@ -0,0 +1,29 @@
+project(":PageCompiler:File2Page") {
+ model {
+ components {
+ File2page(NativeExecutableSpec) {
+ baseName 'f2pc'
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Net', library: 'Net'
+ lib project: ':Util', library: 'Util'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ binaries.withType(NativeExecutableSpec) {
+ lib project: ':Net', library: 'Net', linkage: 'shared'
+ lib project: ':Util', library: 'Util', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+}
+
diff --git a/PageCompiler/build.gradle b/PageCompiler/build.gradle
new file mode 100644
index 000000000..314c23f08
--- /dev/null
+++ b/PageCompiler/build.gradle
@@ -0,0 +1,41 @@
+model {
+ components {
+ cpspc(NativeExecutableSpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Net', library: 'Net', linkage: 'shared'
+ lib project: ':Util', library: 'Util', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ binaries {
+ withType(NativeExecutableBinarySpec) {
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
+
diff --git a/PageCompiler/samples/build.gradle b/PageCompiler/samples/build.gradle
new file mode 100644
index 000000000..42f74405d
--- /dev/null
+++ b/PageCompiler/samples/build.gradle
@@ -0,0 +1,28 @@
+model {
+ components {
+ HTTPTimeServer(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'HTTPTimeServer/src' include '**/*.cpp' }
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ withType(NativeExecutableSpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/PocoDoc/build.gradle b/PocoDoc/build.gradle
new file mode 100644
index 000000000..de3e17622
--- /dev/null
+++ b/PocoDoc/build.gradle
@@ -0,0 +1,44 @@
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ PocoDoc(NativeExecutableSpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':CppParser', library: 'CppParser'
+ lib project: ':Util', library: 'Util'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ withType(NativeExecutableSpec) {
+ if (toolChain in VisualCpp) {
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+
+
diff --git a/PocoDoc/cfg/mkdoc-gradle.xml b/PocoDoc/cfg/mkdoc-gradle.xml
new file mode 100644
index 000000000..349e9e2fb
--- /dev/null
+++ b/PocoDoc/cfg/mkdoc-gradle.xml
@@ -0,0 +1,136 @@
+
+
+
+
+ ${PocoBuild}/*/include/Poco/*.h
+ ${PocoBuild}/*/include/Poco/*/*.h
+ ${PocoBuild}/*/include/Poco/*/*/*.h
+ ${PocoBuild}/*/include/Poco/*/*.h
+ ${PocoBuild}/*/*/include/Poco/*/*/*.h
+
+
+ *_*.h,
+ expat*.h,
+ zconf.h,
+ zlib.h,
+ Alignment.h,
+ QName.h,
+ CppUnitException.h,
+ Constants.h,
+ inffast.h,
+ PDF/include/*.h,
+ CppParser/include/*.h,
+ Data/include/*.h
+ Data/*/include/*.h
+
+
+
+ ${PocoBuild}/doc/*.page,
+ ${PocoBuild}/*/doc/*.page
+ ${PocoBuild}/*/*/doc/*.page
+
+
+ ${PocoBase}/PocoDoc/resources/css,
+ ${PocoBase}/PocoDoc/resources/js,
+ ${PocoBase}/PocoDoc/resources/images,
+ ${PocoBase}/PocoDoc/resources/index.thtml,
+ ${PocoBuild}/*/doc/images
+
+
+
+ cl.exe
+
+ ${Includes},
+ /I${PocoBase}/openssl/include
+ /I${VCH}/include,
+ /I${WDK}/shared
+ /I${WDK}/um
+ /I${WDK}/ucrt
+ /nologo,
+ /D_DEBUG,
+ /E,
+ /C,
+ /DPOCO_NO_GCC_API_ATTRIBUTE
+
+ ${CLP}
+ true
+
+
+ ${CXX} ${CXXFLAGS}
+
+ ${Includes},
+ -I/usr/local/mysql/include,
+ -I/usr/include/mysql,
+ -I/usr/include/postgresql,
+ -D_DEBUG,
+ -E,
+ -C,
+ -DPOCO_NO_GCC_API_ATTRIBUTE
+ -DPOCO_NO_WINDOWS_H
+
+
+ true
+
+
+ EN
+ utf-8
+ POCO C++ Libraries
+ Applied Informatics Software Engineering GmbH and Contributors
+ http://pocoproject.org/
+
+
+
+ All Base Classes
+ All Symbols
+ Anonymous
+ Constructors
+ Class
+ Deprecated
+ Description
+ Destructor
+ Direct Base Classes
+ Enumerations
+ Functions
+
+ if and only if
+ Inheritance
+ Inherited Functions
+ is deprecated and should no longer be used
+ Known Derived Classes
+ Library
+ Member Functions
+ Member Summary
+ more...
+ Namespaces
+ Namespace
+ Nested Classes
+ Package
+ Packages
+ Package Index
+ See also
+ Struct
+ Symbol Index
+ This
+ Types
+ Variables
+ Contents
+ User Guides and Tutorials
+ Introduction
+
+
+
+
+
+
+ c1
+ warning
+
+
+
+
+ ConsoleChannel
+ %s: [%p] %t
+
+
+
+
diff --git a/Redis/build.gradle b/Redis/build.gradle
new file mode 100644
index 000000000..fd68befb8
--- /dev/null
+++ b/Redis/build.gradle
@@ -0,0 +1,37 @@
+model {
+ components {
+ Redis(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Net', library: 'Net'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "Redis_EXPORTS"
+ }
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
+
diff --git a/Redis/testsuite/build.gradle b/Redis/testsuite/build.gradle
new file mode 100644
index 000000000..8c4a09549
--- /dev/null
+++ b/Redis/testsuite/build.gradle
@@ -0,0 +1,63 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':Redis', library: 'Redis', linkage: 'shared'
+ lib project: ':Net', library: 'Net', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ testSuites {
+ RedisTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
diff --git a/SQL/MySQL/build.gradle b/SQL/MySQL/build.gradle
new file mode 100644
index 000000000..574e2033f
--- /dev/null
+++ b/SQL/MySQL/build.gradle
@@ -0,0 +1,104 @@
+model {
+ repositories {
+ libs(PrebuiltLibraries) {
+ mysql {
+ headers.srcDir "$mysql32Home/include"
+ binaries.withType(StaticLibraryBinary) {
+ def libName = "foobar"
+ if (buildType == buildTypes.debug) {
+ libName = 'libmysqld.lib'
+ if (targetPlatform.name == 'win32') {
+ staticLibraryFile = file("$mysql32Home/lib/$libName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$mysql64Home/include"
+ staticLibraryFile = file("$mysql64Home/lib/$libName")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ libName = 'libmysql.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$mysql32Home/include"
+ staticLibraryFile = file("$mysql32Home/lib/$libName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$mysql64Home/include"
+ staticLibraryFile = file("$mysql64Home/lib/$libName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ binaries.withType(SharedLibraryBinary) {
+ def dllName
+ def linkName
+ if (buildType == buildTypes.debug) {
+ dllName = 'libmysqld.dll'
+ linkName = 'libmysqld.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$mysql32Home/include"
+ sharedLibraryFile = file("$mysql32Home/lib/$dllName")
+ sharedLibraryLinkFile = file("$mysql32Home/lib/$linkName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$mysql64Home/include"
+ sharedLibraryFile = file("$mysql64Home/lib/$dllName")
+ sharedLibraryLinkFile = file("$mysql64Home/lib/$linkName")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ dllName = 'libmysql.dll'
+ linkName = 'libmysql.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$mysql32Home/include"
+ sharedLibraryFile = file("$mysql32Home/lib/$dllName")
+ sharedLibraryLinkFile = file("$mysql32Home/lib/$linkName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$mysql64Home/include"
+ sharedLibraryFile = file("$mysql64Home/lib/$dllName")
+ sharedLibraryLinkFile = file("$mysql64Home/lib/$linkName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ }
+ }
+ }
+ components {
+ SQLMySQL(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib library: 'mysql'
+ lib project: ':SQL', library: 'SQL'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ cppCompiler.define "THREADSAFE"
+ cppCompiler.define "__LCC__"
+ cppCompiler.define "WINVER=0x0600"
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "MySQL_EXPORTS"
+ }
+ }
+ withType(StaticLibraryBinarySpec) {
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
+
diff --git a/SQL/MySQL/testsuite/build.gradle b/SQL/MySQL/testsuite/build.gradle
new file mode 100644
index 000000000..f149b4222
--- /dev/null
+++ b/SQL/MySQL/testsuite/build.gradle
@@ -0,0 +1,73 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':SQL:MySQL', library: 'mysql', linkage: 'shared'
+ lib project: ':SQL:MySQL', library: 'SQLMySQL', linkage: 'shared'
+ lib project: ':SQL', library: 'SQL', linkage: 'shared'
+ lib project: ':Util', library: 'Util'
+ lib project: ':JSON', library: 'JSON'
+ lib project: ':XML', library: 'XML'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ testSuites {
+ MySQLTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ all {
+ cppCompiler.define "THREADSAFE"
+ cppCompiler.define "__LCC__"
+ cppCompiler.define "WINVER=0x0600"
+ }
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
+
diff --git a/SQL/ODBC/build.gradle b/SQL/ODBC/build.gradle
new file mode 100644
index 000000000..b2f34d96f
--- /dev/null
+++ b/SQL/ODBC/build.gradle
@@ -0,0 +1,46 @@
+model {
+ components {
+ SQLODBC(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '../..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude 'Unicode_WIN32.cpp'
+ exclude 'Unicode_UNIXODBC.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':SQL', library: 'SQL'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "THREADSAFE=1"
+ }
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "ODBC_EXPORTS"
+ linker.args 'odbc32.lib'
+ linker.args 'odbccp32.lib'
+ }
+ }
+ withType(StaticLibraryBinarySpec) {
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
+
diff --git a/SQL/ODBC/testsuite/build.gradle b/SQL/ODBC/testsuite/build.gradle
new file mode 100644
index 000000000..04ff1bea8
--- /dev/null
+++ b/SQL/ODBC/testsuite/build.gradle
@@ -0,0 +1,69 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':SQL:ODBC', library: 'SQLODBC', linkage: 'shared'
+ lib project: ':SQL', library: 'SQL', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ testSuites {
+ ODBCTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ all {
+ if (toolChain in VisualCpp) {
+ linker.args 'odbc32.lib'
+ linker.args 'odbccp32.lib'
+ }
+ }
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
diff --git a/SQL/PostgreSQL/build.gradle b/SQL/PostgreSQL/build.gradle
new file mode 100644
index 000000000..fc01764b0
--- /dev/null
+++ b/SQL/PostgreSQL/build.gradle
@@ -0,0 +1,233 @@
+model {
+ repositories {
+ libs(PrebuiltLibraries) {
+ intl {
+ binaries.withType(StaticLibraryBinary) {
+ def libName = "foobar"
+ if (buildType == buildTypes.debug) {
+ libName = 'libintl.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ staticLibraryFile = file("$postgres32Home/lib/$libName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ staticLibraryFile = file("$postgres64Home/lib/$libName")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ libName = 'libintl.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ staticLibraryFile = file("$postgres32Home/lib/$libName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ staticLibraryFile = file("$postgres64Home/lib/$libName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ binaries.withType(SharedLibraryBinary) {
+ def dllName
+ def linkName
+ if (buildType == buildTypes.debug) {
+ dllName = 'libintl-8.dll'
+ linkName = 'libintl.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ sharedLibraryFile = file("$postgres32Home/bin/$dllName")
+ sharedLibraryLinkFile = file("$postgres32Home/lib/$linkName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ sharedLibraryFile = file("$postgres64Home/bin/$dllName")
+ sharedLibraryLinkFile = file("$postgres64Home/lib/$linkName")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ dllName = 'libintl-8.dll'
+ linkName = 'libintl.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ sharedLibraryFile = file("$postgres32Home/bin/$dllName")
+ sharedLibraryLinkFile = file("$postgres32Home/lib/$linkName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ sharedLibraryFile = file("$postgres64Home/bin/$dllName")
+ sharedLibraryLinkFile = file("$postgres64Home/lib/$linkName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ }
+ iconv {
+ binaries.withType(StaticLibraryBinary) {
+ def libName = "foobar"
+ if (buildType == buildTypes.debug) {
+ libName = 'iconv.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ staticLibraryFile = file("$postgres32Home/lib/$libName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ staticLibraryFile = file("$postgres64Home/lib/$libName")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ libName = 'iconv.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ staticLibraryFile = file("$postgres32Home/lib/$libName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ staticLibraryFile = file("$postgres64Home/lib/$libName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ binaries.withType(SharedLibraryBinary) {
+ def dllName
+ def linkName
+ if (buildType == buildTypes.debug) {
+ dllName = 'libiconv-2.dll'
+ linkName = 'iconv.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ sharedLibraryFile = file("$postgres32Home/bin/$dllName")
+ sharedLibraryLinkFile = file("$postgres32Home/lib/$linkName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ sharedLibraryFile = file("$postgres64Home/bin/$dllName")
+ sharedLibraryLinkFile = file("$postgres64Home/lib/$linkName")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ dllName = 'libiconv-2.dll'
+ linkName = 'iconv.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ sharedLibraryFile = file("$postgres32Home/bin/$dllName")
+ sharedLibraryLinkFile = file("$postgres32Home/lib/$linkName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ sharedLibraryFile = file("$postgres64Home/bin/$dllName")
+ sharedLibraryLinkFile = file("$postgres64Home/lib/$linkName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ }
+ postgres {
+ binaries.withType(StaticLibraryBinary) {
+ def libName = "foobar"
+ if (buildType == buildTypes.debug) {
+ libName = 'libpq.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ staticLibraryFile = file("$postgres32Home/lib/$libName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ staticLibraryFile = file("$postgres64Home/lib/$libName")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ libName = 'libpq.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ staticLibraryFile = file("$postgres32Home/lib/$libName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ staticLibraryFile = file("$postgres64Home/lib/$libName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ binaries.withType(SharedLibraryBinary) {
+ def dllName
+ def linkName
+ if (buildType == buildTypes.debug) {
+ dllName = 'libpq.dll'
+ linkName = 'libpq.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ sharedLibraryFile = file("$postgres32Home/lib/$dllName")
+ sharedLibraryLinkFile = file("$postgres32Home/lib/$linkName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ sharedLibraryFile = file("$postgres64Home/lib/$dllName")
+ sharedLibraryLinkFile = file("$postgres64Home/lib/$linkName")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ dllName = 'libpq.dll'
+ linkName = 'libpq.lib'
+ if (targetPlatform.name == 'win32') {
+ headers.srcDir "$postgres32Home/include"
+ sharedLibraryFile = file("$postgres32Home/lib/$dllName")
+ sharedLibraryLinkFile = file("$postgres32Home/lib/$linkName")
+ } else
+ if (targetPlatform.name == 'win64') {
+ headers.srcDir "$postgres64Home/include"
+ sharedLibraryFile = file("$postgres64Home/lib/$dllName")
+ sharedLibraryLinkFile = file("$postgres64Home/lib/$linkName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ }
+ }
+ }
+ components {
+ SQLPostgreSQL(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '../..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib library: 'postgres'
+ lib project: ':SQL', library: 'SQL'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "PostgreSQL_EXPORTS"
+ }
+ }
+ withType(StaticLibraryBinarySpec) {
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
+
diff --git a/SQL/PostgreSQL/testsuite/build.gradle b/SQL/PostgreSQL/testsuite/build.gradle
new file mode 100644
index 000000000..d5f1415f9
--- /dev/null
+++ b/SQL/PostgreSQL/testsuite/build.gradle
@@ -0,0 +1,66 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit'
+ lib project: ':SQL:PostgreSQL', library: 'SQLPostgreSQL'
+ lib project: ':SQL:PostgreSQL', library: 'postgres'
+ lib project: ':SQL:PostgreSQL', library: 'intl'
+ lib project: ':SQL:PostgreSQL', library: 'iconv'
+ lib project: ':SQL', library: 'SQL'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ testSuites {
+ PostgreSQLTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
diff --git a/SQL/SQLite/build.gradle b/SQL/SQLite/build.gradle
new file mode 100644
index 000000000..58560768a
--- /dev/null
+++ b/SQL/SQLite/build.gradle
@@ -0,0 +1,69 @@
+model {
+ components {
+ SQLSQLite(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '../..'
+ include 'DLLVersion.rc'
+ }
+ }
+ c {
+ source {
+ srcDir 'src'
+ include '**/*.c'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':SQL', library: 'SQL'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':SQL', library: 'SQL'
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ if (toolChain in VisualCpp) {
+ cCompiler.define "SQLITE_THREADSAFE=1"
+ cCompiler.define "SQLITE_ENABLE_FTS3"
+ cCompiler.define "SQLITE_ENABLE_FTS3_PARENTHESIS"
+ cCompiler.define "SQLITE_OMIT_UTF16"
+ cCompiler.define "SQLITE_OMIT_PROGRESS_CALLBACK"
+ cCompiler.define "SQLITE_OMIT_COMPLETE"
+ cCompiler.define "SQLITE_OMIT_TCL_VARIABLE"
+ cCompiler.define "SQLITE_OMIT_DEPRECATED"
+
+ cppCompiler.define "SQLITE_THREADSAFE=1"
+ cppCompiler.define "SQLITE_ENABLE_FTS3"
+ cppCompiler.define "SQLITE_ENABLE_FTS3_PARENTHESIS"
+ cppCompiler.define "SQLITE_OMIT_UTF16"
+ cppCompiler.define "SQLITE_OMIT_PROGRESS_CALLBACK"
+ cppCompiler.define "SQLITE_OMIT_COMPLETE"
+ cppCompiler.define "SQLITE_OMIT_TCL_VARIABLE"
+ cppCompiler.define "SQLITE_OMIT_DEPRECATED"
+ }
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "SQLite_EXPORTS"
+ }
+ }
+ withType(StaticLibraryBinarySpec) {
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
+
diff --git a/SQL/SQLite/testsuite/build.gradle b/SQL/SQLite/testsuite/build.gradle
new file mode 100644
index 000000000..922a5fbe9
--- /dev/null
+++ b/SQL/SQLite/testsuite/build.gradle
@@ -0,0 +1,64 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':SQL:SQLite', library: 'SQLSQLite', linkage: 'shared'
+ lib project: ':SQL', library: 'SQL', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ testSuites {
+ SQLiteTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
+
diff --git a/SQL/build.gradle b/SQL/build.gradle
new file mode 100644
index 000000000..fc88d77b9
--- /dev/null
+++ b/SQL/build.gradle
@@ -0,0 +1,35 @@
+model {
+ components {
+ SQL(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "SQL_EXPORTS"
+ }
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
diff --git a/SQL/samples/build.gradle b/SQL/samples/build.gradle
new file mode 100644
index 000000000..493777cf9
--- /dev/null
+++ b/SQL/samples/build.gradle
@@ -0,0 +1,69 @@
+model {
+ components {
+ Binding(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'Binding/src' include '**/*.cpp' }
+ cpp.lib project: ':SQL', library: 'SQL'
+ cpp.lib project: ':SQL:SQLite', library: 'SQLSQLite'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ RecordSet(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'RecordSet/src' include '**/*.cpp' }
+ cpp.lib project: ':SQL', library: 'SQL'
+ cpp.lib project: ':SQL:SQLite', library: 'SQLSQLite'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ RowFormatter(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'RowFormatter/src' include '**/*.cpp' }
+ cpp.lib project: ':SQL', library: 'SQL'
+ cpp.lib project: ':SQL:SQLite', library: 'SQLSQLite'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ Tuple(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'Tuple/src' include '**/*.cpp' }
+ cpp.lib project: ':SQL', library: 'SQL'
+ cpp.lib project: ':SQL:SQLite', library: 'SQLSQLite'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ TypeHandler(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'TypeHandler/src' include '**/*.cpp' }
+ cpp.lib project: ':SQL', library: 'SQL'
+ cpp.lib project: ':SQL:SQLite', library: 'SQLSQLite'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ WebNotifier(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'WebNotifier/src' include '**/*.cpp' }
+ cpp.lib project: ':SQL', library: 'SQL'
+ cpp.lib project: ':SQL:SQLite', library: 'SQLSQLite'
+ cpp.lib project: ':Net', library: 'Net'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ withType(NativeExecutableSpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/SQL/testsuite/build.gradle b/SQL/testsuite/build.gradle
new file mode 100644
index 000000000..f7fc5cc25
--- /dev/null
+++ b/SQL/testsuite/build.gradle
@@ -0,0 +1,65 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ exclude 'StatementImpl.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':SQL', library: 'SQL', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ testSuites {
+ SQLTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
+
+
diff --git a/SevenZip/samples/build.gradle b/SevenZip/samples/build.gradle
new file mode 100644
index 000000000..39456f4f1
--- /dev/null
+++ b/SevenZip/samples/build.gradle
@@ -0,0 +1,26 @@
+model {
+ components {
+ un7zip(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'dict/src' include '**/*.cpp' }
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ withType(NativeExecutableSpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/Util/build.gradle b/Util/build.gradle
new file mode 100644
index 000000000..f067486b2
--- /dev/null
+++ b/Util/build.gradle
@@ -0,0 +1,60 @@
+model {
+ components {
+ Util(NativeLibrarySpec) { m ->
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ c {
+ source {
+ srcDir 'src'
+ include '**/*.c'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '**/Win*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Foundation', library: 'Foundation'
+ lib project: ':XML', library: 'XML'
+ lib project: ':JSON', library: 'JSON'
+ }
+ }
+ binaries.all {
+ if (targetPlatform.operatingSystem.windows) {
+ sources {
+ platformWindows(CppSourceSet) {
+ lib m.sources.cpp
+ source {
+ srcDir 'src'
+ include '**/Win*.cpp'
+ }
+ lib project: ':Foundation', library: 'Foundation'
+ lib project: ':XML', library: 'XML'
+ lib project: ':JSON', library: 'JSON'
+ }
+ }
+ }
+ }
+ }
+ }
+ binaries {
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "Util_EXPORTS"
+ }
+ }
+ }
+}
+task poco { dependsOn "assemble" }
diff --git a/Util/samples/build.gradle b/Util/samples/build.gradle
new file mode 100644
index 000000000..58fc2edf0
--- /dev/null
+++ b/Util/samples/build.gradle
@@ -0,0 +1,48 @@
+model {
+ components {
+ pkill(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'pkill/src' include '**/*.cpp' }
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ SampleApp(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'SampleApp/src' include '**/*.cpp' }
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ SampleServer(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'SampleServer/src' include '**/*.cpp' }
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ Units(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'Units/src' include '**/*.cpp' }
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ withType(NativeExecutableSpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/Util/testsuite/build.gradle b/Util/testsuite/build.gradle
new file mode 100644
index 000000000..21034ab48
--- /dev/null
+++ b/Util/testsuite/build.gradle
@@ -0,0 +1,86 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) { m ->
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude 'Win*.cpp'
+ exclude 'Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':JSON', library: 'JSON', linkage: 'shared'
+ lib project: ':XML', library: 'XML', linkage: 'shared'
+ lib project: ':Util', library: 'Util', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ binaries.all {
+ if (targetPlatform.operatingSystem.windows) {
+ sources {
+ platformWindows(CppSourceSet) {
+ lib m.sources.cpp
+ source {
+ srcDir 'src'
+ include 'Win*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':Util', library: 'Util', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ }
+ }
+ testSuites {
+ UtilTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
+
diff --git a/XML/build.gradle b/XML/build.gradle
new file mode 100644
index 000000000..48f2bf119
--- /dev/null
+++ b/XML/build.gradle
@@ -0,0 +1,57 @@
+model {
+ components {
+ XML(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ c {
+ source {
+ srcDir 'src'
+ include '**/*.c'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ cCompiler.define "XML_STATIC"
+ cCompiler.define "XML_NS"
+ cCompiler.define "XML_DTD"
+ cCompiler.define "HAVE_EXPAT_CONFIG_H"
+
+ cppCompiler.define "XML_STATIC"
+ cppCompiler.define "XML_NS"
+ cppCompiler.define "XML_DTD"
+ cppCompiler.define "HAVE_EXPAT_CONFIG_H"
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cCompiler.define "XML_EXPORTS"
+ cppCompiler.define "XML_EXPORTS"
+ }
+ }
+ withType(StaticLibraryBinarySpec) {
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
diff --git a/XML/samples/build.gradle b/XML/samples/build.gradle
new file mode 100644
index 000000000..9bf73e13a
--- /dev/null
+++ b/XML/samples/build.gradle
@@ -0,0 +1,49 @@
+model {
+ components {
+ data(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'data/src' include '**/*.cpp' }
+ cpp.lib project: ':XML', library: 'XML', linkage: 'shared'
+ cpp.lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ DOMParser(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'DOMParser/src' include '**/*.cpp' }
+ cpp.lib project: ':XML', library: 'XML', linkage: 'shared'
+ cpp.lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ DOMWriter(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'DOMWriter/src' include '**/*.cpp' }
+ cpp.lib project: ':XML', library: 'XML', linkage: 'shared'
+ cpp.lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ PrettyPrint(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'PrettyPrint/src' include '**/*.cpp' }
+ cpp.lib project: ':XML', library: 'XML', linkage: 'shared'
+ cpp.lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+// RoundTrip(NativeExecutableSpec) {
+// sources {
+// cpp.source { srcDir 'RoundTrip/src' include '**/*.cpp' }
+// cpp.lib project: ':XML', library: 'XML', linkage: 'shared'
+// cpp.lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+// }
+// }
+ SAXParser(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'SAXParser/src' include '**/*.cpp' }
+ cpp.lib project: ':XML', library: 'XML', linkage: 'shared'
+ cpp.lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/XML/testsuite/build.gradle b/XML/testsuite/build.gradle
new file mode 100644
index 000000000..583e58f3f
--- /dev/null
+++ b/XML/testsuite/build.gradle
@@ -0,0 +1,62 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':XML', library: 'XML', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ testSuites {
+ XMLTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
diff --git a/Zip/build.gradle b/Zip/build.gradle
new file mode 100644
index 000000000..e36e92c8c
--- /dev/null
+++ b/Zip/build.gradle
@@ -0,0 +1,38 @@
+model {
+ components {
+ Zip(NativeLibrarySpec) {
+ sources {
+ rc {
+ source {
+ srcDir '..'
+ include 'DLLVersion.rc'
+ }
+ }
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ }
+ exportedHeaders {
+ srcDir 'include'
+ }
+ lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cppCompiler.define "Zip_EXPORTS"
+ }
+ }
+ withType(StaticLibraryBinarySpec) {
+ }
+ }
+}
+task poco { dependsOn "assemble" }
+
+
diff --git a/Zip/samples/build.gradle b/Zip/samples/build.gradle
new file mode 100644
index 000000000..52f01e3e5
--- /dev/null
+++ b/Zip/samples/build.gradle
@@ -0,0 +1,36 @@
+model {
+ components {
+ zip(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'zip/src' include '**/*.cpp' }
+ cpp.lib project: ':Zip', library: 'Zip'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ unzip(NativeExecutableSpec) {
+ sources {
+ cpp.source { srcDir 'unzip/src' include '**/*.cpp' }
+ cpp.lib project: ':Zip', library: 'Zip'
+ cpp.lib project: ':Util', library: 'Util'
+ cpp.lib project: ':Foundation', library: 'Foundation'
+ }
+ }
+ }
+ binaries {
+ all {
+ }
+ withType(SharedLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ withType(StaticLibraryBinarySpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ withType(NativeExecutableSpec) {
+ lib project: ':Foundation', library: 'Foundation', linkage: 'static'
+ }
+ }
+}
+task samples { dependsOn "assemble" }
+
+
diff --git a/Zip/testsuite/build.gradle b/Zip/testsuite/build.gradle
new file mode 100644
index 000000000..f783bfca2
--- /dev/null
+++ b/Zip/testsuite/build.gradle
@@ -0,0 +1,62 @@
+import org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec
+
+model {
+ components {
+ withType(NativeComponentSpec) {
+ binaries.withType(NativeBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ }
+ TestSuite(NativeLibrarySpec) {
+ sources {
+ cpp {
+ source {
+ srcDir 'src'
+ include '**/*.cpp'
+ exclude '*Driver.cpp'
+ }
+ exportedHeaders {
+ srcDir 'src'
+ }
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ lib project: ':Zip', library: 'Zip', linkage: 'shared'
+ lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
+ }
+ }
+ }
+ }
+ testSuites {
+ ZipTestSuite(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteSpec) {
+ testing $.components.TestSuite
+ }
+ }
+ binaries {
+ withType(org.gradle.nativeplatform.test.cppunit.CppUnitTestSuiteBinarySpec) {
+ lib project: ':CppUnit', library: 'CppUnit', linkage: 'shared'
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+}
+task testsuite { dependsOn "assemble" }
diff --git a/appveyor.yml b/appveyor.yml
index 04cad7086..cf141e401 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -488,7 +488,7 @@ test_script:
{
if ($env:builder -eq "cygwin")
{
- $LastExitCode=0;
+ $global:LastExitCode=0;
if ($env:platform -eq "Win32")
{
$cmd = 'C:\cygwin\usr\sbin\cygserver.exe "&"';iex "& $cmd"
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 000000000..8803c8321
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,1053 @@
+buildscript {
+}
+
+/*
+dependencies {
+ testCompile group: 'org.jvnet.hudson.plugins', name: 'cppunit', version: '1.10'
+}
+*/
+/*
+dependencies {
+ classpath group: 'org.pocoproject', name: 'cppunit-test-suite', version:'1.0.0'
+ classpath group: 'org.pocoproject', name: 'windows-message-compiler', version:'1.0.0'
+}
+*/
+plugins {
+ id 'net.saliman.cobertura' version '2.5.1'
+// id 'com.jfrog.artifactory' version '4.1'
+}
+apply plugin: 'base'
+
+def os = org.gradle.internal.os.OperatingSystem.current()
+def String version = file("VERSION").text.replaceAll("[\n\r]", "")
+
+File appendDebugSuffix(File binaryFile) {
+ String name = binaryFile.getName()
+ File parent = binaryFile.getParentFile()
+ int extensionSeparatorIndex = name.lastIndexOf('.')
+ if (extensionSeparatorIndex == -1) {
+ return new File(parent, name + "d")
+ }
+ return new File(parent, name.substring(0, extensionSeparatorIndex) + "d" + name.substring(extensionSeparatorIndex))
+}
+
+File appendStaticSuffix(File binaryFile) {
+ def os = org.gradle.internal.os.OperatingSystem.current()
+ if (!os.windows) {
+ return binaryFile
+ }
+ String name = binaryFile.getName()
+ File parent = binaryFile.getParentFile()
+ int extensionSeparatorIndex = name.lastIndexOf('.')
+ if (extensionSeparatorIndex == -1) {
+ return new File(parent, name + "MT")
+ }
+ return new File(parent, name.substring(0, extensionSeparatorIndex) + "MT" + name.substring(extensionSeparatorIndex))
+}
+File appendSemiStaticSuffix(File binaryFile) {
+ String name = binaryFile.getName()
+ File parent = binaryFile.getParentFile()
+ int extensionSeparatorIndex = name.lastIndexOf('.')
+ if (extensionSeparatorIndex == -1) {
+ return new File(parent, name + "MD")
+ }
+ return new File(parent, name.substring(0, extensionSeparatorIndex) + "MD" + name.substring(extensionSeparatorIndex))
+}
+File prefixByPoco(File binaryFile) {
+ String name = binaryFile.getName()
+ String prefix = ''
+ if (name.startsWith('lib')) {
+ prefix = 'lib'
+ name = name.substring(3)
+ }
+ File parent = binaryFile.getParentFile()
+ return new File(parent, prefix + "Poco" + name);
+}
+File suffixByArch(File binaryFile, Platform platform) {
+ if (!platform.operatingSystem.windows) {
+ return binaryFile
+ }
+ String name = binaryFile.getName()
+ String suffix = ''
+ if (platform.architecture.name == 'x86') {
+ suffix = ''
+ } else
+ if (platform.architecture.name == 'x86-64') {
+ suffix = '64'
+ } else {
+ throw new GradleException("Unknown architecture: " + platform.architecture.name)
+ }
+ int extensionSeparatorIndex = name.lastIndexOf('.')
+ if (extensionSeparatorIndex == -1) {
+ return new File(parent, name + suffix)
+ }
+ File parent = binaryFile.getParentFile()
+ return new File(parent, name.substring(0, extensionSeparatorIndex) + suffix + name.substring(extensionSeparatorIndex));
+}
+File toLocalBin(File binaryFile, Platform platform) {
+ String name = binaryFile.getName()
+ String target
+ if (platform.architecture.name == 'x86') {
+ target = 'bin'
+ } else
+ if (platform.architecture.name == 'x86-64') {
+ target = 'bin64'
+ } else {
+ throw new GradleException("Unknown architecture: " + platform.architecture.name)
+ }
+ File parent = new File(target)
+ return new File(parent, name);
+}
+File toBin(File sharedFile, Platform platform) {
+ File parent = sharedFile.parentFile
+ if (parent.canonicalPath.contains("testsuite"))
+ return sharedFile;
+ if (parent.canonicalPath.contains("sample"))
+ return sharedFile;
+
+ if (platform.operatingSystem.linux) {
+ return toLib(sharedFile, platform)
+ }
+
+ String name = sharedFile.getName()
+ String target
+ if (platform.architecture.name == 'x86') {
+ target = 'bin'
+ } else
+ if (platform.architecture.name == 'x86-64') {
+ target = 'bin64'
+ } else {
+ throw new GradleException("Unknown architecture: " + platform.architecture.name)
+ }
+ File newParent = new File(rootDir, target)
+ return new File(newParent, name);
+}
+File toLib(File linkFile, Platform platform) {
+ File parent = linkFile.parentFile
+ if (parent.canonicalPath.contains("testsuite"))
+ return linkFile;
+ if (parent.canonicalPath.contains("sample"))
+ return linkFile;
+
+ // On macOS, it creates a dylib file which is the shared and import library
+ if (platform.operatingSystem.macOsX) {
+ return toBin(linkFile, platform)
+ }
+
+ String name = linkFile.getName()
+ String target
+ if (platform.architecture.name == 'x86') {
+ target = 'lib'
+ } else
+ if (platform.architecture.name == 'x86-64') {
+ target = 'lib64'
+ } else {
+ throw new GradleException("Unknown architecture: " + platform.architecture.name)
+ }
+ File newParent = new File(rootDir, target )
+ return new File(newParent, name);
+}
+File toStatic(File staticFile, Platform platform) {
+ String name = staticFile.getName()
+ String target
+ if (platform.architecture.name == 'x86') {
+ target = 'lib'
+ } else
+ if (platform.architecture.name == 'x86-64') {
+ target = 'lib64'
+ } else {
+ throw new GradleException("Unknown architecture: " + platform.architecture.name)
+ }
+ File parent = new File(rootDir, target)
+ return new File(parent, name);
+}
+File toPDB(File binaryFile) {
+ String name = binaryFile.getName()
+ File parent = binaryFile.getParentFile()
+ int extensionSeparatorIndex = name.lastIndexOf('.')
+ return new File(parent, name.substring(0, extensionSeparatorIndex) + ".pdb")
+}
+File makePreBuildLibrary(String name, Platform platform) {
+ File pbl
+ if (platform.architecture.name == 'x86') {
+ pbl = new File(WDKHome + "/Lib/" + WDKVers + "/um/x86/" + name + ".lib")
+
+ } else
+ if (platform.architecture.name == 'x86-64') {
+ pbl = new File(WDKHome + "/Lib/" + WDKVers + "/um/x64/" + name + ".lib")
+ } else
+ if (platform.architecture.name == 'arm-v7') {
+ pbl = new File(WDKHome + "/Lib/" + WDKVers + "/um/arm-v7/" + name + ".lib")
+ } else
+ if (platform.architecture.name == 'ia-64') {
+ pbl = new File(WDKHome + "/Lib/" + WDKVers + "/um/ia-64/" + name + ".lib")
+ } else {
+ throw new GradleException("Unknown architecture: " + platform.architecture.name)
+ }
+ return pbl
+}
+class SliceTasksPlugin extends RuleSource {
+ @Mutate
+ void createBuildSliceTask(ModelMap tasks, BinaryContainer binaries, BuildTypeContainer buildTypes) {
+ tasks.create("slice") {
+ dependsOn binaries.withType(NativeBinarySpec).findAll {
+ it.buildable &&
+ it.buildType == buildTypes.debug &&
+ it.targetPlatform.architecture.name == 'x86' &&
+ it instanceof SharedLibraryBinarySpec
+ }
+ }
+ }
+}
+
+allprojects {
+ buildDir = new File('root') // DO NOT REMOVE OR CHANGE to 'build' since 'build' is a Poco directory
+ file('bin').mkdirs()
+ file('bin64').mkdirs()
+ file('lib').mkdirs()
+ file('lib64').mkdirs()
+/*
+ clean.doFirst {
+ file(projectDir, 'bin').delete()
+ file(projectDir, 'bin64').delete()
+ file(projectDir, 'lib').delete()
+ file(projectDir, 'lib64').delete()
+ }
+*/
+}
+subprojects {
+ apply plugin: 'c'
+ apply plugin: 'cpp'
+ apply plugin: 'cppunit-test-suite'
+ apply plugin: 'windows-resources'
+ apply plugin: 'windows-messages'
+ apply plugin: SliceTasksPlugin
+
+ buildDir = new File("gradle")
+
+
+ model {
+ buildTypes {
+ release
+ debug
+ }
+
+/*
+ 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"
+ }
+
+ gcc(Gcc) {
+ // Uncomment to use a GCC install that is not in the PATH
+ // path "/usr/bin/gcc"
+ }
+ clang(Clang)
+ }
+*/
+ platforms {
+ win32 {
+ operatingSystem "windows"
+ architecture 'x86'
+ }
+ win64 {
+ operatingSystem "windows"
+ architecture 'x64'
+ }
+ linux32 {
+ operatingSystem "linux"
+ architecture 'x86'
+ }
+ linux64 {
+ operatingSystem "linux"
+ architecture 'x64'
+ }
+ macos {
+ operatingSystem "macosx"
+ architecture 'x64'
+ }
+ }
+
+ flavors {
+ bundled
+// unbundled
+ }
+ repositories {
+ libs(PrebuiltLibraries) {
+ WS2_32 {
+ headers.srcDir WDKHome + "/Include/" + WDKVers + "/um/x86"
+ binaries.withType(StaticLibraryBinary) {
+ if (targetPlatform.operatingSystem.windows) {
+ staticLibraryFile = makePreBuildLibrary("WS2_32", targetPlatform)
+ println "staticLibraryFile=" + staticLibraryFile
+ }
+ }
+ }
+ def opensslHome = new File(rootDir, "openssl/VS_120")
+ def opensslBrewHome = new File('/usr/local/opt/openssl')
+ def opensslLinuxHome = new File('/usr/lib/x86_64-linux-gnu')
+ crypto {
+ headers.srcDir "$opensslHome/include"
+
+ binaries.withType(StaticLibraryBinary) {
+ def libName = "foobar"
+ if (buildType == buildTypes.debug) {
+ if (targetPlatform.name == 'win32') {
+ libName = 'libcrypto.lib'
+ staticLibraryFile = file("$opensslHome/win32/lib/debug/$libName")
+ } else if (targetPlatform.name == 'win64') {
+ libName = 'libcrypto.lib'
+ staticLibraryFile = file("$opensslHome/win64/lib/debug/$libName")
+ } else if (targetPlatform.operatingSystem.macOsX) {
+ libName = 'libcrypto.a'
+ staticLibraryFile = file("$opensslBrewHome/lib/$libName")
+ } else if (targetPlatform.operatingSystem.linux) {
+ libName = 'libcrypto.a'
+ staticLibraryFile = file("$opensslLinuxHome/$libName")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (targetPlatform.name == 'win32') {
+ libName = 'libcrypto.lib'
+ staticLibraryFile = file("$opensslHome/win32/lib/release/$libName")
+ } else if (targetPlatform.name == 'win64') {
+ libName = 'libcrypto.lib'
+ staticLibraryFile = file("$opensslHome/win64/lib/release/$libName")
+ } else if (targetPlatform.operatingSystem.macOsX) {
+ libName = 'libcrypto.a'
+ staticLibraryFile = file("$opensslBrewHome/lib/$libName")
+ } else if (targetPlatform.operatingSystem.linux) {
+ libName = 'libcrypto.a'
+ staticLibraryFile = file("$opensslLinuxHome/$libName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ binaries.withType(SharedLibraryBinary) {
+ def dllName
+ def linkName
+ if (buildType == buildTypes.debug) {
+ if (targetPlatform.name == 'win32') {
+ dllName = 'libcrypto.dll'
+ linkName = 'libcrypto.lib'
+ sharedLibraryFile = file("$opensslHome/win32/bin/debug/$dllName")
+ sharedLibraryLinkFile = file("$opensslHome/win32/bin/debug/$linkName")
+ } else if (targetPlatform.name == 'win64') {
+ dllName = 'libcrypto.dll'
+ linkName = 'libcrypto.lib'
+ sharedLibraryFile = file("$opensslHome/win64/bin/debug/$dllName")
+ sharedLibraryLinkFile = file("$opensslHome/win64/bin/debug/$linkName")
+ } else if (targetPlatform.operatingSystem.macOsX) {
+ dllName = 'libcrypto.dylib'
+ linkName = 'libcrypto.dylib'
+ sharedLibraryFile = file("$opensslBrewHome/lib/$dllName")
+ sharedLibraryLinkFile = file("$opensslBrewHome/lib/$linkName")
+ } else if (targetPlatform.operatingSystem.linux) {
+ dllName = 'libcrypto.so'
+ linkName = 'libcrypto.so'
+ sharedLibraryFile = file("$opensslLinuxHome/$dllName")
+ sharedLibraryLinkFile = file("$opensslLinuxHome/$linkName")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (targetPlatform.name == 'win32') {
+ dllName = 'libcrypto.dll'
+ linkName = 'libcrypto.lib'
+ sharedLibraryFile = file("$opensslHome/win32/bin/release/$dllName")
+ sharedLibraryLinkFile = file("$opensslHome/win32/bin/release/$linkName")
+ } else if (targetPlatform.name == 'win64') {
+ dllName = 'libcrypto.dll'
+ linkName = 'libcrypto.lib'
+ sharedLibraryFile = file("$opensslHome/win64/bin/release/$dllName")
+ sharedLibraryLinkFile = file("$opensslHome/win64/bin/release/$linkName")
+ } else if (targetPlatform.operatingSystem.macOsX) {
+ dllName = 'libcrypto.dylib'
+ linkName = 'libcrypto.dylib'
+ sharedLibraryFile = file("$opensslBrewHome/lib/$dllName")
+ sharedLibraryLinkFile = file("$opensslBrewHome/lib/$linkName")
+ } else if (targetPlatform.operatingSystem.linux) {
+ dllName = 'libcrypto.so'
+ linkName = 'libcrypto.so'
+ sharedLibraryFile = file("$opensslLinuxHome/$dllName")
+ sharedLibraryLinkFile = file("$opensslLinuxHome/$linkName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ }
+ ssl {
+ headers.srcDir "$opensslHome/include"
+
+ binaries.withType(StaticLibraryBinary) {
+ def libName
+ if (buildType == buildTypes.debug) {
+ if (targetPlatform.name == 'win32') {
+ libName = 'libssl.lib'
+ staticLibraryFile = file("$opensslHome/win32/lib/debug/$libName")
+ } else if (targetPlatform.name == 'win64') {
+ libName = 'libssl.lib'
+ staticLibraryFile = file("$opensslHome/win64/lib/debug/$libName")
+ } else if (targetPlatform.operatingSystem.macOsX) {
+ libName = 'libssl.a'
+ staticLibraryFile = file("$opensslBrewHome/lib/$libName")
+ } else if (targetPlatform.operatingSystem.linux) {
+ libName = 'libssl.a'
+ staticLibraryFile = file("$opensslLinuxHome/$libName")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (targetPlatform.name == 'win32') {
+ libName = 'libssl.lib'
+ staticLibraryFile = file("$opensslHome/win32/lib/release/$libName")
+ } else if (targetPlatform.name == 'win64') {
+ libName = 'libssl.lib'
+ staticLibraryFile = file("$opensslHome/win64/lib/release/$libName")
+ } else if (targetPlatform.operatingSystem.macOsX) {
+ libName = 'libssl.a'
+ staticLibraryFile = file("$opensslBrewHome/lib/$libName")
+ } else if (targetPlatform.operatingSystem.linux) {
+ libName = 'libssl.a'
+ staticLibraryFile = file("$opensslLinuxHome/$libName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ binaries.withType(SharedLibraryBinary) {
+ def dllName
+ def linkName
+ if (buildType == buildTypes.debug) {
+ if (targetPlatform.name == 'win32') {
+ dllName = 'libssl.dll'
+ linkName = 'libssl.lib'
+ sharedLibraryFile = file("$opensslHome/win32/bin/debug/$dllName")
+ sharedLibraryLinkFile = file("$opensslHome/win32/bin/debug/$linkName")
+ } else if (targetPlatform.name == 'win64') {
+ dllName = 'libssl.dll'
+ linkName = 'libssl.lib'
+ sharedLibraryFile = file("$opensslHome/win64/bin/debug/$dllName")
+ sharedLibraryLinkFile = file("$opensslHome/win64/bin/debug/$linkName")
+ } else if (targetPlatform.operatingSystem.macOsX) {
+ dllName = 'libssl.dylib'
+ linkName = 'libssl.dylib'
+ sharedLibraryFile = file("$opensslBrewHome/lib/$dllName")
+ sharedLibraryLinkFile = file("$opensslBrewHome/lib/$linkName")
+ } else if (targetPlatform.operatingSystem.linux) {
+ dllName = 'libssl.so'
+ linkName = 'libssl.so'
+ sharedLibraryFile = file("$opensslLinuxHome/$dllName")
+ sharedLibraryLinkFile = file("$opensslLinuxHome/$linkName")
+ }
+ } else if (buildType == buildTypes.release) {
+ if (targetPlatform.name == 'win32') {
+ dllName = 'libssl.dll'
+ linkName = 'libssl.lib'
+ sharedLibraryFile = file("$opensslHome/win32/bin/release/$dllName")
+ sharedLibraryLinkFile = file("$opensslHome/win32/bin/release/$linkName")
+ } else if (targetPlatform.name == 'win64') {
+ dllName = 'libssl.dll'
+ linkName = 'libssl.lib'
+ sharedLibraryFile = file("$opensslHome/win64/bin/release/$dllName")
+ sharedLibraryLinkFile = file("$opensslHome/win64/bin/release/$linkName")
+ } else if (targetPlatform.operatingSystem.macOsX) {
+ dllName = 'libssl.dylib'
+ linkName = 'libssl.dylib'
+ sharedLibraryFile = file("$opensslBrewHome/lib/$dllName")
+ sharedLibraryLinkFile = file("$opensslBrewHome/lib/$linkName")
+ } else if (targetPlatform.operatingSystem.linux) {
+ dllName = 'libssl.so'
+ linkName = 'libssl.so'
+ sharedLibraryFile = file("$opensslLinuxHome/$dllName")
+ sharedLibraryLinkFile = file("$opensslLinuxHome/$linkName")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ }
+ }
+ }
+ components {
+ withType(NativeComponentSpec) {
+ targetPlatform "win32"
+ targetPlatform "win64"
+ targetPlatform "linux32"
+ targetPlatform "linux64"
+ targetPlatform "macos"
+
+ binaries.withType(NativeTestSuiteBinarySpec) {
+ if (buildType == buildTypes.debug) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(appendDebugSuffix(executable.file), targetPlatform)
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toLocalBin(executable.file, targetPlatform)
+ }
+ }
+ }
+ binaries.withType(NativeBinarySpec) {
+
+ if (toolChain in Clang) {
+ cppCompiler.args "-std=c++11"
+ }
+ if (buildType == buildTypes.debug) {
+ if (it instanceof SharedLibraryBinarySpec) {
+ sharedLibraryFile = toBin(prefixByPoco(appendDebugSuffix(suffixByArch(sharedLibraryFile, targetPlatform))), targetPlatform)
+ sharedLibraryLinkFile = toLib(prefixByPoco(appendDebugSuffix(sharedLibraryLinkFile)), targetPlatform)
+
+ if (targetPlatform.operatingSystem.windows) {
+ // WINDOWS ONLY
+ linker.args "/implib:${sharedLibraryLinkFile}" // For MSVC only
+ // use the following for MinGW
+ // linker.args "-Wl,--out-implib,${sharedLibraryLinkFile}"
+ // This next part is simply to ensure the directory is created as the compiler (tested on MSVC only) won't create it
+ def binary = it // Simply to expose the binary in the `doFirst`
+ tasks.withType(LinkSharedLibrary) {
+ doFirst {
+ binary.sharedLibraryLinkFile.parentFile.mkdirs()
+ }
+ }
+ }
+ } else
+ if (it instanceof StaticLibraryBinarySpec) {
+ staticLibraryFile = toStatic(prefixByPoco(appendDebugSuffix(appendStaticSuffix(staticLibraryFile))), targetPlatform)
+ def binary = it
+ tasks.withType(CreateStaticLibrary) {
+ doFirst {
+ binary.staticLibraryFile.parentFile.mkdirs()
+ }
+ }
+ } else
+ if (it instanceof SemiStaticLibraryBinarySpec) {
+ semiStaticLibraryFile = toStatic(prefixByPoco(appendDebugSuffix(appendSemiStaticSuffix(semiStaticLibraryFile))), targetPlatform)
+ } else
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toBin(appendDebugSuffix(executable.file), targetPlatform)
+ } else {
+ throw new GradleException("Unknown native library binary")
+ }
+ } else
+ if (buildType == buildTypes.release) {
+ if (it instanceof SharedLibraryBinarySpec) {
+ sharedLibraryFile = toBin(prefixByPoco(suffixByArch(sharedLibraryFile, targetPlatform)), targetPlatform)
+ sharedLibraryLinkFile = toLib(prefixByPoco(sharedLibraryLinkFile), targetPlatform)
+
+ if (targetPlatform.operatingSystem.windows) {
+ // WINDOWS ONLY
+ linker.args "/implib:${sharedLibraryLinkFile}" // For MSVC only
+ // use the following for MinGW
+ // linker.args "-Wl,--out-implib,${sharedLibraryLinkFile}"
+ // This next part is simply to ensure the directory is created as the compiler (tested on MSVC only) won't create it
+ def binary = it // Simply to expose the binary in the `doFirst`
+ tasks.withType(LinkSharedLibrary) {
+ doFirst {
+ binary.sharedLibraryLinkFile.parentFile.mkdirs()
+ }
+ }
+ }
+ } else
+ if (it instanceof StaticLibraryBinarySpec) {
+ staticLibraryFile = toStatic(prefixByPoco(appendStaticSuffix(staticLibraryFile)), targetPlatform)
+ def binary = it
+ tasks.withType(CreateStaticLibrary) {
+ doFirst {
+ binary.staticLibraryFile.parentFile.mkdirs()
+ }
+ }
+ } else
+ if (it instanceof SemiStaticLibraryBinarySpec) {
+ semiStaticLibraryFile = toStatic(prefixByPoco(appendSemiStaticSuffix(semiStaticLibraryFile)), targetPlatform)
+ def binary = it
+ tasks.withType(CreateSemiStaticLibrary) {
+ doFirst {
+ binary.semiStaticLibraryFile.parentFile.mkdirs()
+ }
+ }
+ } else
+ if (it instanceof NativeExecutableBinarySpec) {
+ executable.file = toBin(executable.file, targetPlatform)
+ } else {
+ throw new GradleException("Unknown native library binary")
+ }
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ }
+ }
+
+
+ binaries {
+ all {
+ if (flavor != flavors.bundled) {
+ cCompiler.define 'POCO_UNBUNDLED'
+ cppCompiler.define 'POCO_UNBUNDLED'
+ }
+ if (buildType == buildTypes.debug) {
+ cCompiler.define '_DEBUG'
+ cppCompiler.define '_DEBUG'
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.define 'NDEBUG'
+ cppCompiler.define 'NDEBUG'
+ }
+
+ if (toolChain in Gcc) {
+ cppCompiler.define "_XOPEN_SOURCE=600"
+ cppCompiler.define "_REENTRANT"
+ cppCompiler.define "_THREAD_SAFE"
+ cppCompiler.define "_FILE_OFFSET_BITS=64"
+ cppCompiler.define "_LARGEFILE64_SOURCE"
+ cppCompiler.define "POCO_HAVE_FD_EPOLL"
+ cppCompiler.define "POCO_HAVE_ADDRINFO"
+ cppCompiler.define "POCO_HAVE_LIBRESOLV"
+ cppCompiler.args "-std=c++11"
+ cppCompiler.args "-fPIC"
+
+ linker.args "-lrt"
+ linker.args "-ldl"
+ linker.args "-lpthread"
+ }
+ if (toolChain in VisualCpp) {
+ if (targetPlatform == platforms.win64) {
+ linker.args '/MACHINE:X64'
+ } else {
+ linker.args '/MACHINE:X86'
+ }
+ if (buildType == buildTypes.debug) {
+ cCompiler.args '/Zi'
+ cppCompiler.args '/Zi'
+ linker.args '/DEBUG'
+ }
+ cCompiler.args '/RTC1'
+ cCompiler.args '/FS'
+ cCompiler.args '/Zc:wchar_t'
+ cCompiler.args '/Zc:inline'
+ cCompiler.args '/Zc:forScope'
+ cCompiler.args '/GR'
+ cCompiler.args '/GF'
+ cCompiler.args '/EHsc'
+ cCompiler.args '/bigobj'
+ cCompiler.define 'WIN32'
+ cCompiler.define '_WIN32'
+ cCompiler.define '_WINDOWS'
+ cCompiler.define '_MBCS'
+
+ cppCompiler.args '/RTC1'
+ cppCompiler.args '/FS'
+ cppCompiler.args '/Zc:wchar_t'
+ cppCompiler.args '/Zc:inline'
+ cppCompiler.args '/Zc:forScope'
+ cppCompiler.args '/GR'
+ cppCompiler.args '/GF'
+ cppCompiler.args '/EHsc'
+ cppCompiler.args '/bigobj'
+ cppCompiler.define 'WIN32'
+ cppCompiler.define '_WIN32'
+ cppCompiler.define '_WINDOWS'
+ cppCompiler.define '_MBCS'
+
+ linker.args 'kernel32.lib'
+ linker.args 'user32.lib'
+ linker.args 'gdi32.lib'
+ linker.args 'winspool.lib'
+ linker.args 'comdlg32.lib'
+ linker.args 'advapi32.lib'
+ linker.args 'shell32.lib'
+ linker.args 'ole32.lib'
+ linker.args 'oleaut32.lib'
+ linker.args 'uuid.lib'
+
+ linker.args '/NXCOMPAT'
+ linker.args '/OPT:REF'
+ linker.args '/INCREMENTAL:NO'
+// linker.args '/MANIFEST'
+// linker.args '/MANIFESTUAC:"level='asInvoker' uiAccess='false'"'
+ linker.args '/OPT:ICF'
+ linker.args '/NOLOGO'
+ linker.args '/SUBSYSTEM:CONSOLE'
+ }
+ }
+ withType(SharedLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cCompiler.define '_USRDLL'
+ cCompiler.define '_WINDLL'
+ cppCompiler.define '_USRDLL'
+ cppCompiler.define '_WINDLL'
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ }
+ }
+ if (toolChain in Gcc) {
+ linker.args "-Wl,-rpath,$rootDir/lib64" //FIXME
+ }
+ }
+ withType(StaticLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cCompiler.define '_LIB'
+ cCompiler.define 'POCO_STATIC'
+ cppCompiler.define '_LIB'
+ cppCompiler.define 'POCO_STATIC'
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MTd"
+ cCompiler.args "/Fd" + toStatic(toPDB(staticLibraryFile), targetPlatform)
+ cppCompiler.args "/MTd"
+ cppCompiler.args "/Fd" + toStatic(toPDB(staticLibraryFile), targetPlatform)
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MT"
+ cppCompiler.args "/MT"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ withType(SemiStaticLibraryBinarySpec) {
+ if (toolChain in VisualCpp) {
+ cCompiler.define '_LIB'
+ cCompiler.define 'POCO_STATIC'
+ cppCompiler.define '_LIB'
+ cppCompiler.define 'POCO_STATIC'
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cCompiler.args "/Fd" + toStatic(toPDB(semiStaticLibraryFile), targetPlatform)
+ cppCompiler.args "/MDd"
+ cppCompiler.args "/Fd" + toStatic(toPDB(semiStaticLibraryFile), targetPlatform)
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ withType(NativeExecutableBinarySpec) {
+ if (toolChain in VisualCpp) {
+ if (buildType == buildTypes.debug) {
+ cCompiler.args "/MDd"
+ cppCompiler.args "/MDd"
+ } else
+ if (buildType == buildTypes.release) {
+ cCompiler.args "/MD"
+ cppCompiler.args "/MD"
+ } else {
+ throw new GradleException("Unknown buildType" + buildType)
+ }
+ }
+ if (toolChain in Gcc) {
+ }
+ }
+ }
+ }
+ tasks.withType(RunTestExecutable) {
+ args test
+ }
+}
+tasks.withType(CppCompile) {
+ maxParallelForks = 2
+}
+task PocoDocIni {
+ def file = new File("$rootDir/PocoDoc/PocoDoc.ini")
+ file.createNewFile()
+ file.text = """
+PocoBuild=$rootDir
+PocoBase=$rootDir
+PocoDoc.output=releases/poco-${version}-all-doc
+PocoDoc.version=${version}-all
+"""
+ if (os.windows) {
+ def String javaVCH = VCHome.replace('\\','/')
+ def String javaCLP = CLPath.replace('\\','/')
+ def String javaWDK = WDKHome + "/Include/" + WDKVers
+ javaWDK = javaWDK.replace('\\','/')
+
+ file.text += """
+Includes=-I${postgres32Home}/include,-I${mysql32Home}/include,-ICppParser/include,-ICppUnit/include,-ICrypto/include,-IData/include,-ISQL/include,-ISQL/MySQL/include,-ISQL/ODBC/include,-ISQL/PostgreSQL/include,-ISQL/SQLite/include, -ISQL/SQLite/src,-IFoundation/include,-IJSON/include,-IMongoDB/include,-INet/include,-INetSSL_OpenSSL/include,-INetSSL_Win/include,-IRedis/include,-IUtil/include,-IXML/include,-IZip/include,-ISevenZip/include,-IPDF/include
+VCH=${javaVCH}
+WDK=${javaWDK}
+CLP=${javaCLP}
+"""
+ } else {
+ }
+}
+task pocoDoc(type: Exec) {
+ dependsOn ':PocoDoc::assemble'
+ dependsOn PocoDocIni
+ if (os.windows) {
+ environment "Path", "$rootDir\\bin;$Path"
+ println environment.Path
+
+ executable "PocoDoc/bin/PocoDoc.exe"
+ args "/config=$rootDir/PocoDoc/cfg/mkdoc-gradle.xml"
+ args "/config=$rootDir/PocoDoc/PocoDoc.ini"
+ }
+ if (os.linux) {
+ environment "LD_LIBRARY_PATH", "$rootDir/lib64:$LD_LIBRARY_PATH"
+ executable "PocoDoc/bin64/PocoDoc"
+ args "-config=$rootDir/PocoDoc/cfg/mkdoc-gradle.xml"
+ args "-config=$rootDir/PocoDoc/PocoDoc.ini"
+ }
+ if (os.macOsX) {
+ //FIXME environment "LD_LIBRARY_PATH", "$rootDir/bin:$LD_LIBRARY_PATH"
+ args "-config=$rootDir/PocoDoc/cfg/mkdoc-gradle.xml"
+ args "-config=$rootDir/PocoDoc/PocoDoc.ini"
+ }
+// inputs.files(tasks.getByPath(':production').outputs.files)
+ inputs.files(executable)
+ inputs.files(fileTree("doc").filter { it.isFile() })
+ inputs.files(new File("$rootDir/PocoDoc/cfg/mkdoc-gradle.xml"))
+ outputs.files(new File("releases/poco-${version}-all-doc/index.html"))
+}
+task zipDoc(type: Zip) {
+ from "releases/poco-${version}-all-doc/"
+ include '*'
+ include '*/*'
+ archiveName "poco-${version}-all-doc.zip"
+ destinationDir(file('releases'))
+ inputs.files(new File("releases/$version-all-doc/index.html"))
+ outputs.files(new File("releases/poco-${version}-all-doc.zip"))
+ dependsOn pocoDoc
+}
+
+def candle(VSYEAR, VERSION, target, os) {
+ return tasks.create("Candle-${VSYEAR}-${VERSION}-${target}", Exec) {
+ def Set pocos = project.getTasksByName('poco', true)
+ setDependsOn(pocos)
+ dependsOn ':pocoDoc'
+ workingDir "packaging/Windows/WiX"
+
+ executable "${WiXHome}/bin/Candle.exe"
+ args "-arch", "${target}"
+ args "-dVSYEAR=${VSYEAR}"
+ args "-dVERSION=${VERSION}"
+ args "-dPOCO=${rootDir}"
+ args "-dPlatform=${target}"
+ args "-ext", "${WiXHome}/bin/WixUIExtension.dll"
+ args "-out", "${VSYEAR}/${VSYEAR}-Poco-$VERSION-${target}.wixobj"
+ args "Poco.wxs"
+
+ def File index = new File("$rootDir/releases/poco-$VERSION-all-doc/index.html")
+ inputs.files(index)
+
+ inputs.files(pocos.inputs.files)
+ inputs.files(new File(workingDir, "Poco.wxs"))
+ inputs.files(project.getTasksByName('poco', true).outputs.files)
+
+ def File output = new File(workingDir,"${VSYEAR}/${VSYEAR}-Poco-$VERSION-${target}.wixobj")
+ outputs.files(output)
+
+ onlyIf(new Spec() {
+ boolean isSatisfiedBy(Exec task) {
+ return os.windows;
+ }
+ });
+ }
+}
+def light(VSYEAR, VERSION, target, os) {
+ return tasks.create("Light-${VSYEAR}-${VERSION}-${target}", Exec) {
+ dependsOn candle(VSYEAR, VERSION, target, os)
+ workingDir "packaging/Windows/WiX"
+
+ executable "${WiXHome}/bin/Light.exe"
+ args "-cultures:null"
+ args "-ext", "${WiXHome}/bin/WixUIExtension.dll"
+ args "-out"
+ args "${VSYEAR}/${VSYEAR}-Poco-$VERSION-${target}.msi"
+ args "${VSYEAR}/${VSYEAR}-Poco-$VERSION-${target}.wixobj"
+
+ def File input = new File(workingDir, "${VSYEAR}/${VSYEAR}-Poco-$VERSION-${target}.wixobj")
+ inputs.files(input)
+ def File output = new File(workingDir, "${VSYEAR}/${VSYEAR}-Poco-$VERSION-${target}.msi")
+ outputs.files(output)
+
+ onlyIf(new Spec() {
+ boolean isSatisfiedBy(Exec task) {
+ return os.windows;
+ }
+ });
+ }
+}
+task wix() {
+ dependsOn light('VS2017', version, 'x86', os)
+ dependsOn light('VS2017', version, 'x64', os)
+ onlyIf(new Spec() {
+ boolean isSatisfiedBy(Task task) {
+ return os.windows;
+ }
+ });
+}
+task nuget(type: Exec) {
+ String nugetVersion = version.replace('p', '-')
+ def Set pocos = project.getTasksByName('poco', true)
+
+ setDependsOn(pocos)
+ workingDir "packaging/Windows/NuGet"
+
+ executable "${NuGetHome}/NuGet.exe"
+ args "pack"
+ args "-BasePath", "$rootDir"
+ args "-Version", nugetVersion
+ args "-Symbols"
+ args "-NonInteractive"
+ args "Pocoproject.Poco.vs140.nuspec"
+
+ inputs.files(pocos.inputs.files)
+ inputs.files(new File(workingDir, "Pocoproject.Poco.vs150.nuspec"))
+ outputs.files(new File(workingDir,"Pocoproject.Poco.vs150.${version}.nupkg"))
+
+ onlyIf(new Spec() {
+ boolean isSatisfiedBy(Exec task) {
+ return os.windows;
+ }
+ });
+}
+
+task packaging() {
+ if (os.windows) {
+ dependsOn nuget
+ dependsOn wix
+ }
+}
+//
+// gradle\bin\gradle Zip:testsuite:check -Ptest=-all
+//
+def cover(os, Directory, Module) {
+ return tasks.create("cover-${Module}", Exec) {
+ String PATH = System.getenv("PATH")
+ PATH = "$rootDir\\bin;$rootDir\\openssl\\VS_120\\win32\\bin\\release;$PATH"
+ PATH = "$mysql32Home".replace('/','\\') + "\\lib;$PATH"
+ PATH = "$postgres32Home".replace('/','\\') + "\\lib;$PATH"
+ environment "Path", "$PATH"
+// println environment.Path
+
+ environment "POCO_BASE", "$rootDir"
+// println "POCO_BASE=" + environment.POCO_BASE
+
+ String CPPUNIT_IGNORE;
+ CPPUNIT_IGNORE = 'class CppUnit::TestCaller.testTimeSync';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testEchoIPv4';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testSendToReceiveFromIPv4';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testPing';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testBigPing';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testProxy';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testProxy';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testReuseSocket';
+
+ //FIXME Those test below should work
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testLaunch';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testLaunchRedirectIn';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testLaunchRedirectOut';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testLaunchEnv';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testLaunchArgs';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testIsRunning';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testIsRunningAllowsForTermination';
+
+ //FIXME won't work until SharedLibraries be properly generated
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testSharedLibrary1';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testSharedLibrary2';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testSharedLibrary3';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testClassLoader2';
+ CPPUNIT_IGNORE+=', class CppUnit::TestCaller.testClassLoader3';
+
+ environment "CPPUNIT_IGNORE", "\"$CPPUNIT_IGNORE\""
+// println "CPPUNIT_IGNORE=" + environment.CPPUNIT_IGNORE
+
+
+ def Set tests = project.getTasksByName("testsuite:${Module}", true)
+ setDependsOn(tests)
+
+ workingDir "coverage/${Directory}"
+ file(workingDir).mkdirs()
+
+ executable "${OpenCppCoverageHome}/OpenCppCoverage.exe"
+ args "-q"
+ args "$rootDir/${Directory}/testsuite/gradle/exe/${Module}TestSuite/win32/debug/${Module}TestSuite.exe"
+ args "--modules", "Poco*d.dll"
+ args "--export_type", "cobertura"
+ args "--continue_after_cpp_exception"
+ args "--"
+ args "-all"
+
+ outputs.files(new File(workingDir,"${Module}TestSuite.xml"))
+
+ onlyIf(new Spec() {
+ boolean isSatisfiedBy(Exec task) {
+ return os.windows;
+ }
+ });
+ }
+}
+def report(os, Directory, Module) {
+ return tasks.create("report-${Module}", Exec) {
+ dependsOn cover(os, Directory, Module)
+
+ executable "${ReportGeneratorHome}/ReportGenerator.exe"
+ args "-verbosity:Verbose"
+ args "-reports:coverage/${Module}/${Module}TestSuiteCoverage.xml"
+ args "-targetdir:coverage/${Module}"
+// args "-sourcedirs:XML/src;XML/include;CppUnit/src;CppUnit/include;Foundation/src;Foundation/include"
+
+ File targetDir = new File("coverage/${Module}")
+ inputs.files(new File(targetDir,"${Module}TestSuite.xml"))
+
+ onlyIf(new Spec() {
+ boolean isSatisfiedBy(Exec task) {
+ return os.windows;
+ }
+ });
+ }
+}
+task coverage() {
+ if (os.windows) {
+ def Set tasksSet = project.getTasksByName('testsuite', true)
+ println "task coverage: covered modules"
+ println "--------------------------------------"
+ tasksSet.each { task -> println task.project.parent.path.replace(':','/').substring(1) }
+ println "--------------------------------------"
+ tasksSet.each { task -> dependsOn report(os, task.project.parent.path.replace(':','/').substring(1), task.project.parent.name) }
+ }
+}
+
+/*
+task all() {
+ FileCollection incs = task.includes;
+ incs.each { dir -> fileTree(dir).files.each { file -> inputs.files(file) }};
+ inputs.files.each { file -> println file.path }
+}
+*/
+/*
+ tasks { t ->
+ $.components.main.binaries.each { binary ->
+ def stripTask = binary.tasks.taskName("strip")
+ t.create(stripTask) {
+ dependsOn binary.tasks.link
+ doFirst {
+ if (binary.toolChain in Gcc) {
+ ["strip", binary.tasks.link.outputFile].execute().waitForOrKill(1000)
+ }
+ }
+ }
+ binary.tasks.build.dependsOn stripTask
+ }
+ }
+*/
+
+
+
+
diff --git a/doc/00100-GuidedTour.page b/doc/00100-GuidedTour.page
index ffa4eab5b..9acff2530 100644
--- a/doc/00100-GuidedTour.page
+++ b/doc/00100-GuidedTour.page
@@ -22,7 +22,7 @@ challenges.
POCO consists of four core libraries, and a number of add-on libraries.
The core libraries are Foundation, XML, Util and Net. Two of the add-on
libraries are NetSSL, providing SSL support for the network classes in
-the Net library, and Data, a library for uniformly accessing different
+the Net library, and SQL, a library for uniformly accessing different
SQL databases. POCO aims to be for
network-centric, cross-platform C++ software development what Apple's
Cocoa is for Mac development, or Ruby on Rails is for Web development --
diff --git a/gradle b/gradle
new file mode 160000
index 000000000..05a8d4d93
--- /dev/null
+++ b/gradle
@@ -0,0 +1 @@
+Subproject commit 05a8d4d93581b2e780bad84f8f9178b8a4267eda
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 000000000..2071e8590
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,45 @@
+# https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19-win32.zip
+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
+
+# https://get.enterprisedb.com/postgresql/postgresql-9.6.3-2-windows-binaries.zip
+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
+
+# Windows Development Kit
+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
+
+# 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.11.25503
+
+# C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX86\x86\cl.exe
+CLPath=C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/HostX86/x86
+
+# https://github.com/wixtoolset/wix3/releases/download/wix311rtm/wix311.exe
+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
+
+#https://github.com/OpenCppCoverage/OpenCppCoverage/releases
+OpenCppCoverageHome=C:/Program Files/OpenCppCoverage
+
+#https://github.com/danielpalme/ReportGenerator/releases
+#ReportGeneratorHome=C:/ProgramFiles/ReportGenerator
+ReportGeneratorHome=C:/ProgramFiles/ReportGenerator
+
+test=-print
+LD_LIBRARY_PATH=
+cpus=
diff --git a/packaging/Boost License.rtf b/packaging/Boost License.rtf
new file mode 100644
index 000000000..c3bd8caf1
--- /dev/null
+++ b/packaging/Boost License.rtf
@@ -0,0 +1,34 @@
+{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Courier New;}}
+{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\lang1036\f0\fs22 Boost Software License - Version 1.0 - August 17th, 2003\par
+\par
+Permission is hereby granted, free of charge, to any person or organization\par
+obtaining a copy of the software and accompanying documentation covered by\par
+this license (the "Software") to use, reproduce, display, distribute,\par
+execute, and transmit the Software, and to prepare derivative works of the\par
+Software, and to permit third-parties to whom the Software is furnished to\par
+do so, all subject to the following:\par
+\par
+The copyright notices in the Software and this entire statement, including\par
+the above license grant, this restriction and the following disclaimer,\par
+must be included in all copies of the Software, in whole or in part, and\par
+all derivative works of the Software, unless such copies or derivative\par
+works are solely in the form of machine-executable object code generated by\par
+a source language processor.\par
+\par
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\par
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\par
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT\par
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE\par
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,\par
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\par
+DEALINGS IN THE SOFTWARE.\par
+\par
+---------------------------------------------------------------------------\par
+Note:\par
+Individual files contain the following tag instead of the full license text.\par
+\par
+ SPDX-License-Identifier: BSL-1.0\par
+\par
+This enables machine processing of license information based on the SPDX\par
+License Identifiers that are here available: http://spdx.org/licenses/\par
+}
\ No newline at end of file
diff --git a/packaging/Linux/Fedora/.gitignore b/packaging/Linux/Fedora/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/packaging/Linux/Ubuntu/debian/.gitignore b/packaging/Linux/Ubuntu/debian/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/packaging/Other/.gitignore b/packaging/Other/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/packaging/Other/VMS/.gitignore b/packaging/Other/VMS/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/packaging/README.md b/packaging/README.md
new file mode 100644
index 000000000..4b3613357
--- /dev/null
+++ b/packaging/README.md
@@ -0,0 +1,111 @@
+POCO C++ Distribution
+=====================
+
+This repository contains packaged Poco releases for various platforms and
+successive versions of Poco starting from release Poco-1.6.1.
+
+CHANGELOG contains all changes for the following releases
+
+- Release 1.7.8p4 (2017-08-11)
+- Release 1.7.8p3 (2017-06-22)
+- Release 1.7.8p2 (2017-04-18)
+- Release 1.7.7 (2016-12-31)
+- Release 1.7.6 (2016-10-18)
+- Release 1.7.5 (2016-08-29)
+- Release 1.7.4 (2016-07-20)
+- Release 1.7.3 (2016-05-02)
+- Release 1.7.2 (2016-03-21)
+- Release 1.7.1 (2016-03-14)
+- Release 1.7.0 (2016-03-07)
+- Release 1.6.1 (2015-08-03)
+- Release 1.6.0 (2014-12-22)
+- Release 1.5.4 (2014-10-14)
+- Release 1.5.3 (2014-06-30)
+- Release 1.5.2 (2013-09-16)
+- Release 1.5.1 (2013-01-11)
+- Release 1.5.0 (2012-10-14)
+- Release 1.4.7p1 (2014-11-25)
+- Release 1.4.7 (2014-10-06)
+- Release 1.4.6p4 (2014-04-18)
+- Release 1.4.6p3 (2014-04-02)
+- Release 1.4.6p2 (2013-09-16)
+- Release 1.4.6p1 (2013-03-06)
+- Release 1.4.6 (2013-01-10)
+- Release 1.4.5 (2012-11-19)
+- Release 1.4.4 (2012-09-03)
+- Release 1.4.3p1 (2012-01-23)
+- Release 1.4.3 (2012-01-16)
+- Release 1.4.2p1 (2011-09-24)
+- Release 1.4.2 (2011-08-28)
+- Release 1.4.1p1 (2011-02-08)
+- Release 1.4.1 (2011-01-29)
+- Release 1.4.0 (2010-12-14)
+- Release 1.3.6p2 (2010-01-15)
+- Release 1.3.6p1 (2009-12-21)
+- Release 1.3.6 (2009-11-24)
+- Release 1.3.5 (2009-05-11)
+- Release 1.3.4 (2009-04-21)
+- Release 1.3.3p1 (2008-10-09)
+- Release 1.3.3 (2008-10-07)
+- Release 1.3.2 (2008-02-04)
+- Release 1.3.1 (2007-08-08)
+- Release 1.3.0 (2007-05-07)
+- Release 1.2.9 (2007-02-26)
+- Release 1.2.8 (2007-01-04)
+- Release 1.2.7 (2006-12-07)
+- Release 1.2.6 (2006-11-19)
+- Release 1.2.5 (2006-10-23)
+- Release 1.2.4 (2006-10-02)
+- Release 1.2.3 (2006-09-14)
+- Release 1.2.2 (2006-09-01)
+- Release 1.2.1 (2006-08-29)
+- Release 1.2.0 (2006-08-29)
+- Release 1.1.2 (2006-07-07)
+- Release 1.1.1 (2006-04-03)
+- Release 1.1.0 (2006-03-23)
+- Release 1.1b2 (2006-03-04)
+- Release 1.1b1 (2006-03-03)
+- Release 1.0.0 (2006-01-19)
+- Release 1.0b2 (2006-01-16)
+- Release 1.0b1 (2006-01-09)
+- Release 1.0a1 (2006-01-03) [internal]
+- Release 0.96.1 (2005-12-28)
+- Release 0.95.4 (2005-11-07)
+- Release 0.95.3 (2005-10-28) [internal]
+- Release 0.95.2 (2005-10-22) [internal]
+- Release 0.94.1 (2005-09-30) [internal]
+- Release 0.93.1 (2005-08-01)
+- Release 0.92.1 (2005-05-09)
+- Release 0.91.4 (2005-04-11)
+- Release 0.91.3 (2005-03-19)
+- Release 0.91.2 (2005-02-27)
+- Release 0.91.1 (2005-02-21)
+
+
+ POCO C++ Libraries
+==================
+
+POrtable COmponents C++ Libraries are:
+--------------------------------------
+- A collection of C++ class libraries, conceptually similar to the Java Class Library, the .NET Framework or Apple’s Cocoa.
+- Focused on solutions to frequently-encountered practical problems.
+- Focused on ‘internet-age’ network-centric applications.
+- Written in efficient, modern, 100% ANSI/ISO Standard C++.
+- Based on and complementing the C++ Standard Library/STL.
+- Highly portable and available on many different platforms.
+- Open Source, licensed under the [Boost Software License](https://spdx.org/licenses/BSL-1.0).
+
+----
+To start using POCO, see the [Guided Tour](http://pocoproject.org/docs-1.5.3/00100-GuidedTour.html) and [Getting Started](http://pocoproject.org/docs-1.5.3/00200-GettingStarted.html) documents.
+
+----
+POCO has an active user and contributing community, please visit our [web site](http://pocoproject.org), [forum](http://pocoproject.org/forum) and [blog](http://pocoproject.org/blog).
+Answers to POCO-related questions can also be found on [Stack Overflow](http://stackoverflow.com/questions/tagged/poco-libraries).
+
+----
+In regards to Boost, in spite of some functional overlapping,
+POCO is best thought of as a Boost complement (rather than replacement).
+Side-by-side use of Boost and POCO is a very common occurrence.
+
+
+
diff --git a/packaging/README.txt b/packaging/README.txt
new file mode 100644
index 000000000..6c061835e
--- /dev/null
+++ b/packaging/README.txt
@@ -0,0 +1,24 @@
+ POCO C++ Libraries
+==================
+
+POrtable COmponents C++ Libraries are:
+--------------------------------------
+- A collection of C++ class libraries, conceptually similar to the Java Class Library, the .NET Framework or Apple’s Cocoa.
+- Focused on solutions to frequently-encountered practical problems.
+- Focused on ‘internet-age’ network-centric applications.
+- Written in efficient, modern, 100% ANSI/ISO Standard C++.
+- Based on and complementing the C++ Standard Library/STL.
+- Highly portable and available on many different platforms.
+- Open Source, licensed under the [Boost Software License](https://spdx.org/licenses/BSL-1.0).
+
+----
+To start using POCO, see the [Guided Tour](http://pocoproject.org/docs-1.5.3/00100-GuidedTour.html) and [Getting Started](http://pocoproject.org/docs-1.5.3/00200-GettingStarted.html) documents.
+
+----
+POCO has an active user and contributing community, please visit our [web site](http://pocoproject.org), [forum](http://pocoproject.org/forum) and [blog](http://pocoproject.org/blog).
+Answers to POCO-related questions can also be found on [Stack Overflow](http://stackoverflow.com/questions/tagged/poco-libraries).
+
+----
+In regards to Boost, in spite of some functional overlapping,
+POCO is best thought of as a Boost complement (rather than replacement).
+Side-by-side use of Boost and POCO is a very common occurrence.
diff --git a/packaging/Unix/.gitignore b/packaging/Unix/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/packaging/Unix/HP/.gitignore b/packaging/Unix/HP/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/packaging/Unix/Sun/.gitignore b/packaging/Unix/Sun/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/packaging/Windows/NuGet/Pocoproject.Poco.vs140.nuspec b/packaging/Windows/NuGet/Pocoproject.Poco.vs140.nuspec
new file mode 100644
index 000000000..97fa8b0cd
--- /dev/null
+++ b/packaging/Windows/NuGet/Pocoproject.Poco.vs140.nuspec
@@ -0,0 +1,52 @@
+
+
+]>
+
+
+ Pocoproject.Poco.vs140
+ $version$
+ Poco $version$
+ Applied Informatics & Contributors
+ Günter Obiltschnig & Aleksandar Fabijanic
+ https://pocoproject.org/license.html
+ https://pocoproject.org/
+ https://avatars1.githubusercontent.com/u/201918?v=4&s=200
+ false
+ Modern, powerful open source C++ class libraries for building network- and internet-based applications that run on desktop, server, mobile and embedded systems.
+
+
+
+ Copyright 2017
+ string filesystem thread date log event regex uri uuid cache native nativepackage sockets mime http ftp mail pop3 smtp html sax sax2 dom xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packaging/Windows/NuGet/Pocoproject.Poco.vs140.symbols.nuspec b/packaging/Windows/NuGet/Pocoproject.Poco.vs140.symbols.nuspec
new file mode 100644
index 000000000..b70bfc6c6
--- /dev/null
+++ b/packaging/Windows/NuGet/Pocoproject.Poco.vs140.symbols.nuspec
@@ -0,0 +1,31 @@
+
+
+]>
+
+
+ Pocoproject.Poco.vs140
+ $version$
+ Poco $version$
+ Applied Informatics & Contributors
+ Günter Obiltschnig & Aleksandar Fabijanic
+ https://pocoproject.org/license.html
+ https://pocoproject.org/
+ https://avatars1.githubusercontent.com/u/201918?v=4&s=200
+ false
+ Modern, powerful open source C++ class libraries for building network- and internet-based applications that run on desktop, server, mobile and embedded systems.
+
+
+
+ Copyright 2017
+ string filesystem thread date log event regex uri uuid cache native nativepackage sockets mime http ftp mail pop3 smtp html sax sax2 dom xml
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packaging/Windows/NuGet/Pocoproject.Poco.vs140.targets b/packaging/Windows/NuGet/Pocoproject.Poco.vs140.targets
new file mode 100644
index 000000000..13b3e5ebe
--- /dev/null
+++ b/packaging/Windows/NuGet/Pocoproject.Poco.vs140.targets
@@ -0,0 +1,13 @@
+
+
+
+ $(MSBuildThisFileDirectory)inc;%(AdditionalIncludeDirectories)
+
+
+ $(MSBuildThisFileDirectory)lib;%(AdditionalLibraryDirectories)
+
+
+ $(MSBuildThisFileDirectory)lib64;%(AdditionalLibraryDirectories)
+
+
+
\ No newline at end of file
diff --git a/packaging/Windows/NuGet/api.key b/packaging/Windows/NuGet/api.key
new file mode 100644
index 000000000..3a263b7b3
--- /dev/null
+++ b/packaging/Windows/NuGet/api.key
@@ -0,0 +1 @@
+e5709aaf-9638-45e8-a8b9-0de8a7cec41e
\ No newline at end of file
diff --git a/packaging/Windows/WiX/Poco 128x410.bmp b/packaging/Windows/WiX/Poco 128x410.bmp
new file mode 100644
index 000000000..d77e39dc7
Binary files /dev/null and b/packaging/Windows/WiX/Poco 128x410.bmp differ
diff --git a/packaging/Windows/WiX/Poco 312x312.jpg b/packaging/Windows/WiX/Poco 312x312.jpg
new file mode 100644
index 000000000..70f784bdc
Binary files /dev/null and b/packaging/Windows/WiX/Poco 312x312.jpg differ
diff --git a/packaging/Windows/WiX/Poco 64x64.ico b/packaging/Windows/WiX/Poco 64x64.ico
new file mode 100644
index 000000000..7a678fa98
Binary files /dev/null and b/packaging/Windows/WiX/Poco 64x64.ico differ
diff --git a/packaging/Windows/WiX/Poco Layers.bmp b/packaging/Windows/WiX/Poco Layers.bmp
new file mode 100644
index 000000000..b2423daa2
Binary files /dev/null and b/packaging/Windows/WiX/Poco Layers.bmp differ
diff --git a/packaging/Windows/WiX/Poco Layers.png b/packaging/Windows/WiX/Poco Layers.png
new file mode 100644
index 000000000..db3844cfc
Binary files /dev/null and b/packaging/Windows/WiX/Poco Layers.png differ
diff --git a/packaging/Windows/WiX/Poco.wxs b/packaging/Windows/WiX/Poco.wxs
new file mode 100644
index 000000000..cad348000
--- /dev/null
+++ b/packaging/Windows/WiX/Poco.wxs
@@ -0,0 +1,3513 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APPLICATIONFOLDER=""
+
+
+
+
+
+
+
+
+
+
+
+
+ NOT UPGRADINGPRODUCTCODE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packaging/Windows/WiX/VS2013/.gitignore b/packaging/Windows/WiX/VS2013/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/packaging/Windows/WiX/VS2015/.gitignore b/packaging/Windows/WiX/VS2015/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 000000000..99176d13c
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,71 @@
+def os = org.gradle.internal.os.OperatingSystem.current()
+rootProject.name = 'Poco'
+
+include ':CppUnit'
+include ':Foundation'
+include ':XML'
+include ':JSON'
+include ':Util'
+include ':Net'
+include ':Crypto'
+include ':NetSSL_OpenSSL'
+if (os.windows) {
+ include ':NetSSL_Win'
+}
+include ':SQL'
+if (os.windows) {
+ include ':SQL:ODBC'
+ include ':SQL:SQLite'
+ include ':SQL:MySQL'
+ include ':SQL:PostgreSQL'
+}
+include ':Zip'
+include ':PageCompiler'
+include ':PageCompiler:File2Page'
+include ':PDF'
+include ':CppParser'
+include ':MongoDB'
+include ':Redis'
+include ':PocoDoc'
+include ':ProGen'
+
+include ':Foundation:testsuite'
+include ':XML:testsuite'
+include ':JSON:testsuite'
+include ':Util:testsuite'
+include ':Net:testsuite'
+//include ':Crypto:testsuite'
+include ':NetSSL_OpenSSL:testsuite'
+if (os.windows) {
+ include ':NetSSL_Win:testsuite'
+}
+include ':SQL:testsuite'
+if (os.windows) {
+ include ':SQL:ODBC:testsuite'
+ include ':SQL:SQLite:testsuite'
+ include ':SQL:MySQL:testsuite'
+ include ':SQL:PostgreSQL:testsuite'
+}
+//include ':MongoDB:testsuite'
+include ':Redis:testsuite'
+include ':CppParser:testsuite'
+include ':Zip:testsuite'
+
+include ':Foundation:samples'
+if (os.windows) {
+ include ':SQL:samples'
+}
+include ':NetSSL_OpenSSL:samples'
+if (os.windows) {
+ include ':NetSSL_Win:samples'
+}
+include ':JSON:samples'
+//include ':MongoDB:samples'
+include ':Net:samples'
+include ':PageCompiler:samples'
+include ':PDF:samples'
+include ':Util:samples'
+include ':XML:samples'
+include ':SevenZip:samples'
+include ':Zip:samples'
+