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 +
Header
+ 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' +