Release 1.12.0 (#3674)

* fix a leak, add some table features

* few PostgreSQL fixes

* GH #2351: WebSocket docs

* Rename pcre internal symbols used by Poco to avoid symbol collision
https://github.com/pocoproject/poco/issues/2916
This patch was backported from https://github.com/pld-linux/poco/blob/master/pcre.patch

* Fix warning in clang

* Fix MSVC clang build fail

* Zip and SevenZip do not depend on Util, XML, JSON

* Added Test and new Pattern 'O' to only log the Filename not the full Path.

* Updated Comment

* Configuration to receive OCSP stapling response for client connections and  callback implementation to verify the response if the server returns any response

* removed SDK version from project files

* run Application::initialize() in try-catch block

* fix Invalid condition [ICMPv4PacketImpl.cpp:234] #2783

* style fixes for #2935; check OpenSSL version

* Fixed issue 2945 (#2946)

* Fixed #2945

* Added unit tests for #2945

* Dissalow iterator on empty Var (#2945)

* Updated unit tests for #2945

* More concise unit tests for #2945

* Removed some more clutter (#2945)

* NetSSL_Win: fix potential endless loop due to wrong error handling

* fixed GH #2970: Poco::Data::TypeHandler<Poco::Nullable<T>>::prepare() must prepare with underlying type, not Poco::Data::Keywords::null

* Fixed linking with Data ODBC error on some platforms

* Fix set padding call for new versions of OpenSSL

* PatternFormatter priorityNames fix

* PKCS12Container: fix memory leaks on exceptions

* Fix constness of URI::getPathSegments

* Fix typo in the ThreadPool's docs

* cmake: use GNUInstallDirs

* Changed EventHandlerMap key (#3116)

* Changed EventHandlerMap key

Changed EventHandlerMap key from Socket to poco_socket_t to avoid errors in removing/access EventHandlerMap when for example we make an SSL handshake

* Changed EventHandlerMap key

Changed EventHandlerMap key from Socket to poco_socket_t to avoid errors in removing/access EventHandlerMap when for example we make an SSL handshake

* avoid too much call to sockfd() and impl()

* Fix configuration error while cross compiling (#3127)

During the configuration phase in a cross compilation scenario,
`include(InstallRequiredSystemLibraries)` fails even if
`MSVC_REDIST_DIR` is provided.

This should not be an hard error, in case someone wants to
compile/use the library, and not package it.

As explained on https://reviews.llvm.org/D41220, the most sensible fix
is to include `InstallRequiredSystemLibraries` only on a Windows host.

* crash when remove key from JSON::Object(JSON_PRESERVE_KEY_ORDER). (#3151)

* #3153: Poco::Data::ODBC [N]VARCHAR(MAX) wrong maxDataSize() result

* [SharedPtr] Poco::makeSharedArray #3200

* #3202: JWT: ESxxx signature must include padding for ECDSA R and S values

* feat(HashRange): port HashRange from boost

* chore(cmake): spelling typo fix

* fix(hashRange): change function names casing

* merge changes from 1.10.2

* formatting

* merge JSON formatting changes from 1.10.2

* added Application::windowSize()

* RemoteSyslogChannel/RemoteSyslogListener: make UDP buffer size configurable

* merge fix from 1.10.2

* merge Postgres fixes from 1.10.2

* #2993: The Sec-WebSocket-Key of WebSocket is always the same one

* formatting

* #2927

* remove HowToGetHelp page due to outdated information

* formatting

* #3044: Upgrade PCRE to 8.44

* #3086: Use POCO_IOS_INIT_HACK for Linux in combination with libc++

* #3095: Digest proxy authentication does not work in 1.10.1

* #3136: Fixed null character issue when parsing a JSON

* #3114: Added JSON Array::empty() method

* #3230: ECDSADigestEngine: include missing header

* fix include order

* include order

* fix(PollSet): #3248 #3249

* chore(UDPServer): fix spelling

* feat(SocketReactor): extract and expose poll() as a member function

* feat(Endpoint): add Endpoint (socket address directly wrapping native structures)

* fix(Endpoint): osx build, align family enum with patform, some other adjustments

* fix(EndpointTest): add missing include

* feat(Endpoint): add some low-level accessors

* feat(IPAddress): add functions returning addres as raw bytes

* feat(DatagramSocket): DatagramSocket does not allow IPV6_V6ONLY #3283

* feat(SocketReactor): Add completion handling to SocketReactor #3290

* feat(SocketReactor): Add completion handling to SocketReactor #3290 (add scheduled handlers and runOne())

* chore(Net-testsuite): fix some tests warnings

* feat: move semantics for sockets and addresses

* fix(NetworkInterface): Unterminated string possible in NetworkInterfaceImpl::setPhyParams() #3301

* feat(Net): Add move semantics to Net (sockets and addresses) #3296

* fix(HostEntry): DNS HostEntry returns multiple entries #3303

* fix(SocketReactor): completion handling fixes and tests, separation of i/o and completion mutexes

* feat(SocketReactor): execute permanent completion handlers on when there are I/O handlers and the expired ones whenever they expire

* feat(Socket): expose lastError()

* fix(SocketReactor): windows compile

* windows fixes, remove Endnpoint

* feat(Socket): expose error()

* feat(PollSet): Use select() on windows for PollSet #3339

* add ci.yml

* fix compile errors

* revert(SocketReactor): back to devel branch

* feat(SocketProactor): initial version w/ completion handler and executor

* chore(SocketProactor): Sockets package

* chore(ci): add dir and run script

* feat(SocketProactor): add socket error handling #3357

* modify(SocketProactor): wait for completion handlers availability #3357

* feat(PollSet): Make PollSet::poll() interruptible #3359

* modify(SocketProactor): make addSend() public #3357

* modify(SocketProactor): platform non-interrupt sleep without Poco thread #3357

* modify(SocketProactor): allow restart #3357

* fix(SocketProactor): windows fixes and VS build

* fix(SocketProactor): race when stop() is called before run()

* fix(Socket): Windows SO_REUSEADDR is neither reliable nor safe #3380

* fix(SocketProactor): rvalue refs should not be const

* fix(DNS): DNS::hostByAddress not thread-safe #3381

* chore(SocketProactor): remove unnecessary this capture

* fix(IPAddress): IPAddress::tryParse does not work for :: #3385

* fix(SoccketProactor): add some try/catch safety nets; broaden the work list mutex coverage to protect all function access

* fix(SocketProactor): use Poco::Mutex only

* fix(SocketProactor): scheduled work skipped in the absence of socket events

* fix(SocketProactor): test

* chore (SocketProactor): add some state members

* Fix clang linker problem by defining POCO_NO_AUTOMATIC_LIBS (#3177)

* Basic support for OpenSSL 3.0.0 (#3448)

* updated README.md

* Create close-inactive-issues.yml

* check return codes of EVP_CIPHER_CTX_new and EVP_CipherInit

Especially with OpenSSL 3, it is possible that EVP_CipherInit may fail even when
passed a non-null cipher[1]. Without the checking, it will finally get to a
segfault.

[1] https://github.com/openssl/openssl/issues/16864

* Automatically load default and legacy providers with OpenSSL 3

Without the legacy provider [1], some ciphers are not available. For example,
the 'des-ecb' one used by test sutie is missed and the test will fail.

[1] OSSL_PROVIDER-LEGACY(7ossl)

* Make p12 ca order the same as pem

OpenSSL < 3 returns p12 ca order in reversed order. This is fixed
in OpenSSL 3. We work around it with old OpenSSL.

See:
https://github.com/openssl/openssl/issues/16421
https://github.com/openssl/openssl/pull/12641
f5eb85eb0f

* Implement SSL abort handling on OpenSSL 3

On an unexpected EOF, versions before OpenSSL 3.0 returned SSL_ERROR_SYSCALL,
nothing was added to the error stack, and errno was 0. Since OpenSSL 3.0 the
returned error is SSL_ERROR_SSL with a meaningful error on the error stack.[1]

[1] SSL_GET_ERROR(3ossl)

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: Robin Lee <cheeselee@fedoraproject.org>
Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* fix(Socket): shutdown fixes from pull #3448

* chore: cleanup

* fix(X509Certificate): add missing string format

* feat(EVP): 3.0 support

- add EVPCipher
- additional EVPPKey constructors
- tests
- fix and improve openssl-related exceptions

Transition towards 3.0 support;
deprecating direct EC and RSA interface portions.

* fix(openssl): pre 3.0 compile

* feat(Envelope): Add envelope to crypto #3561

* fix(Envelope): mac/clang compile

* fix(Any): #3297 #3514

* Refactor/any soo (#3564)

* refactor(Any): SOO

- encapsulate data holders
- add missing gets and ops
- eliminate g++ warnings with enable_if's
- default enable SOO

* refactor(Placeholder): encapsulate SOO memory management and fix leaks; cf. #3297 #3514

* fix(Placeholder): asan errors and add tests

cf. #3297 #3514

* fix(SSLManager): Race condition in SSLManager #3558

* fix(SHA2Engine): cannot use HMACEngine with SHA2Engine #3421

* refactor(Placeholder): ifdef POCO_NO_SOO only in Placeholder and remove it anywhere else (#3566)

* refactor(Placeholder): more SOO consolidation and optimization

* fix(FPEnvironment): Visual Studio Warning C4244 #3543

* fix(Extractor): move extraction decoding to AbstractExtractor #3396

* Netssl/openssl3 (#3575)

* feat(Context): DH init openssl3 port (1/2 hardcoded params)

* create poco-1.11.3 branch, bump version

* update copyright date

* #3567: check legacy provider existence for legacy exception #3567

* fix(Placeholder): comparison for zero value

* feat(Context): DH init openssl3 port (2/2 params from file)

* test(HTTPSClientSession): try/catch to understand CI failure

* chore(cmake): copy the DH parameters file

* fix(OpenSSLInitializer): unload provider on uninitialize

* chore(HTTPSClientSessionTest): remove try/catch

* fix(OpenSSLInitializer): fix provider unloading

* feat(CppUnit): make tests exceptions more descriptive

* chore(CppUnit): a more descriptive name for callback

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>

* fix(Foundation): update VS 2019 platform version

* chore(Data): update VS project files (add Transcoder #3396)

* fix(Data): Poco::Data::ODBC-dbEncoding property not used for insert/update #3396

* fix(Data): add transcoder to Makefile #3396

* Dev/devel 1.12.0 (#3585)

* fix(PollSet): #3248 #3249

* bump version to 1.11.0

* updated changelog|

* #3299: NetSSL: Allow per-Context InvalidCertificateHandler

* #3022: Process::isRunning(PID pid) causes handle leak on Windows

* #3022: fix for WinCE

* upgrade bundled pdjson to latest master

* update build configs - add support for Apple Silicon

* #2906, #2904: Support environments without hardware floating point

* #3130: fix error handling: report original error before close()

* #3107: remove unused variable

* #3219: SMTPClientSession: invalid SMTP command if empty recipients list in MailMessage

* Poco::trim*() code cleanup - use ptrdiff_t instead of int; additional test cases

* #3182 Poco::Process:launch on MacOS BigSur: limit maximum number of file descriptors to close before exec() to 100000

* #3278: Fixing no hardware floating point support - Part II

* #3090: Do not initialize value with undefined behavior

* #3163: Correct Var::parse null value

* #3196: std::forward for Poco::Optional ctor with rvalue

* #3068: Documented ENABLE_JWT option

* #3041: PostgreSQL and TEXT column type

* #3099: Fixed Postgres extraction into Dynamic::Var

* #3138: Add support of arch riscv32

* #2825: riscv: Enable double operations when using double float abi

* #3166: Fix PostgresSQL BLOB extractor

* #3237: An error in the documentation for Poco/JSON/Parser.h

* #3193: ServerApplication::registerService() unquoted path security vulnerability

* #3266: Order of Util::Application::uninitialize() is not in reverse as documented

* #3215: XML parser returns item from different element in a array

* #3282: Update constant in setContentType documentation

* #3089: HTTPSessionFactory does not support HTTPClientSession::ProxyConfig

* #2418: SecureServerSocket doesn't work with IpV6

* fix warnings

* #3019: ObjectPool wait on borrow condition fix

* #3224: Remove SSL23 support from Poco/Crypto

* #3191: Fixing a bug in the NetSSL_Win module (Host name verification failed error)

* disallow SSLv3

* #3269: Poco::Net::Context initialization with empty certificateFile

* #3307: Poco::Crypto::X509Certificate: obtain certificate fingerprint

* #3260: Memory leak in EVPPKey::loadKey used with files & wrong password

* #3157: fix(openssl): add missing dependency to OpenSSL components

* #3066: CMake warning about MYSQL casing

* #3135: Poco::Data::SQLite::Utility::fileToMemory unsuccessful if journal exists

* #3217: CMake: warning message with -DPOCO_STATIC confusing

* #3274: Fix localtime_r for VxWorks 6.9 and later

* #2746, #3169: Fix race condition on TCPServerDispatcher stop

* #3092: add more detailed error description when LoadLibrary fails|

* #3074: Fix sessions may not return back to the pool

* #3309: optimize parsing from stream (no copying of entire JSON to memory); limit maximum depth to avoid stack overflow with malicious documents (fuzzing - #3285); code cleanup

* JSON Parser performance improvements

* #3310: Upgrade bundled SQLite to 3.35.5

* fix UB/bad cast in TCPServerTest.cpp

* add comment regarding potential UB in AnyTest::testCastToReference()

* support sanitizers in build configs

* bump version

* fix 'catching polymorphic type by value' warnings

* fix 'catching polymorphic type by value' warnings

* fix 'catching polymorphic type by value' warnings

* remove failing Android build; add sanitizer builds

* update postgres version

* fix warning

* fix warning

* add GitHub workflow

* fix ci.yml

* fix ci.yml

* additional ci builds

* fix ci.yml for macos and windows

* fix(double-conversion): Upgrade bundled double-conversion #3313

* ci fixes

* #3314: NetSSL_OpenSSL: any.pem certificate error: ca md too weak

* testReuseSession: remove bad checks for session reuse

* investigate failing test

* investigate failing test

* investigate failing test

* investigate failing test

* ci

* remove travis and appveyor

* ci, readme

* ci fixes

* fix ci

* fix ci

* fix ci

* fix memory leak when ignoring test error/failure

* fix ci

* don't define UNREACHABLE as poco_bugcheck as it triggers 'control reaches end of non-void function' warning

* add Linux cross build, build Data libs on macos

* fix ci

* add MySQL include/lib search paths for Homebrew

* ci fixes

* ci fixes

* ci fixes

* ci fixes

* fix indluce paths for brew mysql

* #3317: Data::MySQL MySQL headers and library search paths

* fix ARM-Linux build config

* fix MySQL.make

* update FindMySQL.cmake

* fix(SocketReactor): fix dataCollection test

* chore: remove troubleshooting help leftovers

* #3302: MSVC: Poco hides warnings (C4996) for the C++14 attribute [[deprecated]]

* fix potential crash in testAsyncNotify: don't delete event object while async notification is still in progress

* fix(PollSetTest): change connect to blocking

* added ActiveRecord library and compiler

* added dependencies file

* update copyright dates

* ActiveRecord: project files and fixes for MSVC

* ci: enable ActiveRecord on Windows

* fix(PollSetTest): remove poll timing check (fails on msvc ci)

* fix ActiveRecord CMake build and configuration

* feat(build): add gen directory (for generated sources) and macchina lib link dirs (if needed)

* #3318: Data: Support Poco::UUID for data binding

* ODBC tests for UUID, updated ActiveRecord projects

* ActiveRecord user guide

* update ActiveRecord documentation

* documentation fixes

* #3321: manually merge ODBC text encoding support

* CppParser: merge changes from internal repository

* updated Makefile

* AbstractObserver::accepts() - add optional name parameter

* fix SharedPtr::makeSharedArray() [merge from devel]

* remove blank line

* #2895, #2935: support OCSP stapling

* style

* clang support (merge from devel)

* #3322: remove useless struct

* link libmariadb instead of libmysql if headers indicate MariaDB

* fix nullptr passed to memcmp/memcpy reported by ubsan

* fix nullptr passed to memcmp/memcpy reported by ubsan

* fix PageCompiler cross-compile; fix Content-Security-Policy header

* remove Data release notes page

* style, remove unused var

* update docs

* improve BLOB handling, clean-up code

* fix(ICMPv4Packet): [asan] Undefined behavior in ICMPv4PacketImpl.cpp #3326

* fix(NumericString): Bug in NumericString with decSep != '.' #3159

* fix(HostEntry): DNS HostEntry returns multiple entries #3303

* fix(PollSet): #3248 #3249

* fix(NetworkInterface): Unterminated string possible in NetworkInterfaceImpl::setPhyParams() #3301

* style/whitespace

* fix warnings

* add version resources to executables

* style

* whitespace

* update changelog

* cpproj: also copy testsuite/include if it's there

* branch off 1.11.1

* #3335: XML error when build 1.11.0

* #3353: add POCO_NO_FORK_EXEC CMake option

* #3381: DNS::hostByAddress not thread-safe

* #3400: fix std::localtime not thread safe

* #3221: Crash reported on Windows in X509Certificate verification

* #3344: [bug] MacOS bundle destination path is not set

* #3360: Add POCO_PGSQL_{INCLUDE,LIB} variables

* #3363: Fixed compilation error with MongoDB::Connection and Util::Application

* #3377: Correct Poco::Path::configHome() and dataHome() documentation for Windows

* #2823: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648

* #3425: Fixed suspend/resumeEvents pair in DirectoryWatcher

* #2966: SocketReactor loads one core of CPU up to 100%

* #3330: Poco::Data::ODBC::ODBCStatementImpl causes crash

* use OpenSSL 1.1.1 on macOS

* add missing include search path

* upgrade bundled PCRE to 8.45

* upgrade bundled SQLite to 3.36.0

* updated changelog

* fix brew OpenSSL version

* branch off poco-1.11.2

* #3506: Upgrade bundled expat to 2.4.4

* manually merge #3448, part 1 (Crypto)

* manually merge #3448, part 1 (NetSSL)

* #3515: NetSSL_OpenSSL Testsuite: testInterop() and testProxy() fail due to changed certificate

* #3448: fix version check

* #3465: NetSSL_Win: bad error handling when decodeMessage() fails

* #3458: encryptString() crash on redhat/centos 8 with FIPS enabled using md5 default digest

* #3505: JSON::PrintHandler.value(bool) prints incorrect value

* #3527: Upgrade bundled expat to 2.4.5

* #3470: bug in JSON ParseHandler.cpp (RFC 7159 should be valid)

* #3507: Reference counting for bound configuration in Util::Option is broken

* #3518: Expat version check in #defines incorrect

* #3338: NamedMutex does not work on Linux distributions where fs.protected_regular=1

* CI: don't build PageCompiler in ARM cross build

* detect ARM64 on Windows

* updated README.md

* ProGen: support generation of VS 2022 project files

* ci: add windows 2022

* fix library name

* remove unused CppUnit headers

* added VS2022 project files

* #3530: Upgrade bundled expat to 2.4.6

* #3538: Upgrade bundled expat to 2.4.7

* Add back NIOS2 double conversion detection to fix compile errors

The commit
558324f672

removed the nios2 support, which was originally added in
e7b91e8125

This commit add it back.

Signed-off-by: Julien Olivain <ju.o@free.fr>

* #3466: DefinePlatformSpecific.cmake: handle RelWithDebInfo and MinSizeRel configurations

* #3524: remove XML and Util dependencies in Zip/SevenZip

* #3483: Adds Windows 11 and Server 2022 to Environment::osDisplayName()

* #3495: Array::operator[] should not throw

* #3268: Poco redis command set have a bug when you want to set nx ex or expireTime

* #3509: fix dst and utcOffset handling for Dublin time zone

* #2882: another attempt at fixing it that should also work on other platforms

* remove unused method in Timezone_WIN32.cpp

* use tm_gmtoff on Linux

* Basic support for OpenSSL 3.0.0 (#3448)

* updated README.md

* Create close-inactive-issues.yml

* check return codes of EVP_CIPHER_CTX_new and EVP_CipherInit

Especially with OpenSSL 3, it is possible that EVP_CipherInit may fail even when
passed a non-null cipher[1]. Without the checking, it will finally get to a
segfault.

[1] https://github.com/openssl/openssl/issues/16864

* Automatically load default and legacy providers with OpenSSL 3

Without the legacy provider [1], some ciphers are not available. For example,
the 'des-ecb' one used by test sutie is missed and the test will fail.

[1] OSSL_PROVIDER-LEGACY(7ossl)

* Make p12 ca order the same as pem

OpenSSL < 3 returns p12 ca order in reversed order. This is fixed
in OpenSSL 3. We work around it with old OpenSSL.

See:
https://github.com/openssl/openssl/issues/16421
https://github.com/openssl/openssl/pull/12641
f5eb85eb0f

* Implement SSL abort handling on OpenSSL 3

On an unexpected EOF, versions before OpenSSL 3.0 returned SSL_ERROR_SYSCALL,
nothing was added to the error stack, and errno was 0. Since OpenSSL 3.0 the
returned error is SSL_ERROR_SSL with a meaningful error on the error stack.[1]

[1] SSL_GET_ERROR(3ossl)

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: Robin Lee <cheeselee@fedoraproject.org>
Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* fix(Socket): shutdown fixes from pull #3448

* #3500: Sandbox all iFrames in PocoDoc

* #3549; replace assert with assertTrue

* #3553: Upgrade bundled zlib to 1.2.12

* #3525: Bad management of file in case of OpenSSLException in X509Certificate::readPEM and X509Certificate::writePEM

* disable OpenSSL deprecation warnings

* chore: cleanup

* fix(X509Certificate): add missing string format

* #3559: Poco::Data::PostgreSQL - DateTime extraction truncates fractional seconds

* feat(EVP): 3.0 support

- add EVPCipher
- additional EVPPKey constructors
- tests
- fix and improve openssl-related exceptions

Transition towards 3.0 support;
deprecating direct EC and RSA interface portions.

* fix(openssl): pre 3.0 compile

* feat(Envelope): Add envelope to crypto #3561

* fix(Envelope): mac/clang compile

* fix(Any): #3297 #3514

* #3562: fixed OpenSSL setup/shutdown

* fix exception text

* #3563: Remove support for OpenSSL < 1.0

* ci jobs for OpenSSL 1.1 and 3

* updated CHANGELOG

* updated .vscode

* Refactor/any soo (#3564)

* refactor(Any): SOO

- encapsulate data holders
- add missing gets and ops
- eliminate g++ warnings with enable_if's
- default enable SOO

* refactor(Placeholder): encapsulate SOO memory management and fix leaks; cf. #3297 #3514

* fix(Placeholder): asan errors and add tests

cf. #3297 #3514

* fix(SSLManager): Race condition in SSLManager #3558

* remove unused include

* updated copyright date

* PocoDoc: fix iframe sandboxing

* fix(SHA2Engine): cannot use HMACEngine with SHA2Engine #3421

* refactor(Placeholder): ifdef POCO_NO_SOO only in Placeholder and remove it anywhere else (#3566)

* refactor(Placeholder): more SOO consolidation and optimization

* fix(FPEnvironment): Visual Studio Warning C4244 #3543

* fix(Extractor): move extraction decoding to AbstractExtractor #3396

* Netssl/openssl3 (#3575)

* feat(Context): DH init openssl3 port (1/2 hardcoded params)

* create poco-1.11.3 branch, bump version

* update copyright date

* #3567: check legacy provider existence for legacy exception #3567

* fix(Placeholder): comparison for zero value

* feat(Context): DH init openssl3 port (2/2 params from file)

* test(HTTPSClientSession): try/catch to understand CI failure

* chore(cmake): copy the DH parameters file

* fix(OpenSSLInitializer): unload provider on uninitialize

* chore(HTTPSClientSessionTest): remove try/catch

* fix(OpenSSLInitializer): fix provider unloading

* feat(CppUnit): make tests exceptions more descriptive

* chore(CppUnit): a more descriptive name for callback

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>

* fix(Foundation): update VS 2019 platform version

* chore(Data): update VS project files (add Transcoder #3396)

* fix(Data): Poco::Data::ODBC-dbEncoding property not used for insert/update #3396

* fix(Data): add transcoder to Makefile #3396

* fix(JWT): remove duplicate test functions after merge

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: Julien Olivain <ju.o@free.fr>
Co-authored-by: Robin Lee <robinlee.sysu@gmail.com>
Co-authored-by: Robin Lee <cheeselee@fedoraproject.org>

* #2755: Fix MySQL's LONGBLOB/LONGTEXT not allocating enough space (#3474)

* Unit test for bug #2755.

* Removed condition to set buffer length to 0.

* Fixes to unit tests for LONGBLOB/TEXT data type.

* Adjusted buffer sizes to accommodate LONGBLOBs.

Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com>

* fix(Data): MySQL UUID binding temporary string #3587

* feat(CI): add MySQL tests to CI #3588

* fix(CI): remove mysql client dev (using mariadb) #3588

* fix(CI): another shot at mysql

* fix(Net/testsuite): add missing include

* fix(DatagramSocket): Socket::available does not always return correct value for UDP #3589

* fix(SocketProactor): few improvements (#3357)

* fix(ICMPsocketTest): change appinf (doesn't respond to ping) to github

* fix(PollSet): windows fixes

* fix(PollSet): windows implementation fixes (multi-fd_set select); minor reactor fixes

* Extract JSON type as string (#3491)

* Declared JSON as string data

# Conflicts:
#	Data/include/Poco/Data/MetaColumn.h
#	Data/src/RecordSet.cpp
#	Data/src/StatementImpl.cpp

* Added JSON extractor as string

* Added unit test

* Update comment

* Devel (#3586)

* Enable unit test in cmake build

* add BLOB SQLite test

* accept notifications by name (if they have one)

* catch std::exception on parsing

* fix a leak, add some table features

* few PostgreSQL fixes

* GH #2351: WebSocket docs

* Rename pcre internal symbols used by Poco to avoid symbol collision
https://github.com/pocoproject/poco/issues/2916
This patch was backported from https://github.com/pld-linux/poco/blob/master/pcre.patch

* Fix warning in clang

* Fix MSVC clang build fail

* Zip and SevenZip do not depend on Util, XML, JSON

* Added Test and new Pattern 'O' to only log the Filename not the full Path.

* Updated Comment

* Configuration to receive OCSP stapling response for client connections and  callback implementation to verify the response if the server returns any response

* removed SDK version from project files

* run Application::initialize() in try-catch block

* fix Invalid condition [ICMPv4PacketImpl.cpp:234] #2783

* style fixes for #2935; check OpenSSL version

* Fixed issue 2945 (#2946)

* Fixed #2945

* Added unit tests for #2945

* Dissalow iterator on empty Var (#2945)

* Updated unit tests for #2945

* More concise unit tests for #2945

* Removed some more clutter (#2945)

* NetSSL_Win: fix potential endless loop due to wrong error handling

* fixed GH #2970: Poco::Data::TypeHandler<Poco::Nullable<T>>::prepare() must prepare with underlying type, not Poco::Data::Keywords::null

* Fixed linking with Data ODBC error on some platforms

* Fix set padding call for new versions of OpenSSL

* PatternFormatter priorityNames fix

* PKCS12Container: fix memory leaks on exceptions

* Fix constness of URI::getPathSegments

* Fix typo in the ThreadPool's docs

* cmake: use GNUInstallDirs

* Changed EventHandlerMap key (#3116)

* Changed EventHandlerMap key

Changed EventHandlerMap key from Socket to poco_socket_t to avoid errors in removing/access EventHandlerMap when for example we make an SSL handshake

* Changed EventHandlerMap key

Changed EventHandlerMap key from Socket to poco_socket_t to avoid errors in removing/access EventHandlerMap when for example we make an SSL handshake

* avoid too much call to sockfd() and impl()

* Fix configuration error while cross compiling (#3127)

During the configuration phase in a cross compilation scenario,
`include(InstallRequiredSystemLibraries)` fails even if
`MSVC_REDIST_DIR` is provided.

This should not be an hard error, in case someone wants to
compile/use the library, and not package it.

As explained on https://reviews.llvm.org/D41220, the most sensible fix
is to include `InstallRequiredSystemLibraries` only on a Windows host.

* crash when remove key from JSON::Object(JSON_PRESERVE_KEY_ORDER). (#3151)

* #3153: Poco::Data::ODBC [N]VARCHAR(MAX) wrong maxDataSize() result

* [SharedPtr] Poco::makeSharedArray #3200

* #3202: JWT: ESxxx signature must include padding for ECDSA R and S values

* feat(HashRange): port HashRange from boost

* chore(cmake): spelling typo fix

* fix(hashRange): change function names casing

* merge changes from 1.10.2

* formatting

* merge JSON formatting changes from 1.10.2

* added Application::windowSize()

* RemoteSyslogChannel/RemoteSyslogListener: make UDP buffer size configurable

* merge fix from 1.10.2

* merge Postgres fixes from 1.10.2

* #2993: The Sec-WebSocket-Key of WebSocket is always the same one

* formatting

* #2927

* remove HowToGetHelp page due to outdated information

* formatting

* #3044: Upgrade PCRE to 8.44

* #3086: Use POCO_IOS_INIT_HACK for Linux in combination with libc++

* #3095: Digest proxy authentication does not work in 1.10.1

* #3136: Fixed null character issue when parsing a JSON

* #3114: Added JSON Array::empty() method

* #3230: ECDSADigestEngine: include missing header

* fix include order

* include order

* fix(PollSet): #3248 #3249

* chore(UDPServer): fix spelling

* feat(SocketReactor): extract and expose poll() as a member function

* feat(Endpoint): add Endpoint (socket address directly wrapping native structures)

* fix(Endpoint): osx build, align family enum with patform, some other adjustments

* fix(EndpointTest): add missing include

* feat(Endpoint): add some low-level accessors

* feat(IPAddress): add functions returning addres as raw bytes

* feat(DatagramSocket): DatagramSocket does not allow IPV6_V6ONLY #3283

* feat(SocketReactor): Add completion handling to SocketReactor #3290

* feat(SocketReactor): Add completion handling to SocketReactor #3290 (add scheduled handlers and runOne())

* chore(Net-testsuite): fix some tests warnings

* feat: move semantics for sockets and addresses

* fix(NetworkInterface): Unterminated string possible in NetworkInterfaceImpl::setPhyParams() #3301

* feat(Net): Add move semantics to Net (sockets and addresses) #3296

* fix(HostEntry): DNS HostEntry returns multiple entries #3303

* fix(SocketReactor): completion handling fixes and tests, separation of i/o and completion mutexes

* feat(SocketReactor): execute permanent completion handlers on when there are I/O handlers and the expired ones whenever they expire

* feat(Socket): expose lastError()

* fix(SocketReactor): windows compile

* windows fixes, remove Endnpoint

* feat(Socket): expose error()

* feat(PollSet): Use select() on windows for PollSet #3339

* add ci.yml

* fix compile errors

* revert(SocketReactor): back to devel branch

* feat(SocketProactor): initial version w/ completion handler and executor

* chore(SocketProactor): Sockets package

* chore(ci): add dir and run script

* feat(SocketProactor): add socket error handling #3357

* modify(SocketProactor): wait for completion handlers availability #3357

* feat(PollSet): Make PollSet::poll() interruptible #3359

* modify(SocketProactor): make addSend() public #3357

* modify(SocketProactor): platform non-interrupt sleep without Poco thread #3357

* modify(SocketProactor): allow restart #3357

* fix(SocketProactor): windows fixes and VS build

* fix(SocketProactor): race when stop() is called before run()

* fix(Socket): Windows SO_REUSEADDR is neither reliable nor safe #3380

* fix(SocketProactor): rvalue refs should not be const

* fix(DNS): DNS::hostByAddress not thread-safe #3381

* chore(SocketProactor): remove unnecessary this capture

* fix(IPAddress): IPAddress::tryParse does not work for :: #3385

* fix(SoccketProactor): add some try/catch safety nets; broaden the work list mutex coverage to protect all function access

* fix(SocketProactor): use Poco::Mutex only

* fix(SocketProactor): scheduled work skipped in the absence of socket events

* fix(SocketProactor): test

* chore (SocketProactor): add some state members

* Fix clang linker problem by defining POCO_NO_AUTOMATIC_LIBS (#3177)

* Dev/devel 1.12.0 (#3585)

* fix(PollSet): #3248 #3249

* bump version to 1.11.0

* updated changelog|

* #3299: NetSSL: Allow per-Context InvalidCertificateHandler

* #3022: Process::isRunning(PID pid) causes handle leak on Windows

* #3022: fix for WinCE

* upgrade bundled pdjson to latest master

* update build configs - add support for Apple Silicon

* #2906, #2904: Support environments without hardware floating point

* #3130: fix error handling: report original error before close()

* #3107: remove unused variable

* #3219: SMTPClientSession: invalid SMTP command if empty recipients list in MailMessage

* Poco::trim*() code cleanup - use ptrdiff_t instead of int; additional test cases

* #3182 Poco::Process:launch on MacOS BigSur: limit maximum number of file descriptors to close before exec() to 100000

* #3278: Fixing no hardware floating point support - Part II

* #3090: Do not initialize value with undefined behavior

* #3163: Correct Var::parse null value

* #3196: std::forward for Poco::Optional ctor with rvalue

* #3068: Documented ENABLE_JWT option

* #3041: PostgreSQL and TEXT column type

* #3099: Fixed Postgres extraction into Dynamic::Var

* #3138: Add support of arch riscv32

* #2825: riscv: Enable double operations when using double float abi

* #3166: Fix PostgresSQL BLOB extractor

* #3237: An error in the documentation for Poco/JSON/Parser.h

* #3193: ServerApplication::registerService() unquoted path security vulnerability

* #3266: Order of Util::Application::uninitialize() is not in reverse as documented

* #3215: XML parser returns item from different element in a array

* #3282: Update constant in setContentType documentation

* #3089: HTTPSessionFactory does not support HTTPClientSession::ProxyConfig

* #2418: SecureServerSocket doesn't work with IpV6

* fix warnings

* #3019: ObjectPool wait on borrow condition fix

* #3224: Remove SSL23 support from Poco/Crypto

* #3191: Fixing a bug in the NetSSL_Win module (Host name verification failed error)

* disallow SSLv3

* #3269: Poco::Net::Context initialization with empty certificateFile

* #3307: Poco::Crypto::X509Certificate: obtain certificate fingerprint

* #3260: Memory leak in EVPPKey::loadKey used with files & wrong password

* #3157: fix(openssl): add missing dependency to OpenSSL components

* #3066: CMake warning about MYSQL casing

* #3135: Poco::Data::SQLite::Utility::fileToMemory unsuccessful if journal exists

* #3217: CMake: warning message with -DPOCO_STATIC confusing

* #3274: Fix localtime_r for VxWorks 6.9 and later

* #2746, #3169: Fix race condition on TCPServerDispatcher stop

* #3092: add more detailed error description when LoadLibrary fails|

* #3074: Fix sessions may not return back to the pool

* #3309: optimize parsing from stream (no copying of entire JSON to memory); limit maximum depth to avoid stack overflow with malicious documents (fuzzing - #3285); code cleanup

* JSON Parser performance improvements

* #3310: Upgrade bundled SQLite to 3.35.5

* fix UB/bad cast in TCPServerTest.cpp

* add comment regarding potential UB in AnyTest::testCastToReference()

* support sanitizers in build configs

* bump version

* fix 'catching polymorphic type by value' warnings

* fix 'catching polymorphic type by value' warnings

* fix 'catching polymorphic type by value' warnings

* remove failing Android build; add sanitizer builds

* update postgres version

* fix warning

* fix warning

* add GitHub workflow

* fix ci.yml

* fix ci.yml

* additional ci builds

* fix ci.yml for macos and windows

* fix(double-conversion): Upgrade bundled double-conversion #3313

* ci fixes

* #3314: NetSSL_OpenSSL: any.pem certificate error: ca md too weak

* testReuseSession: remove bad checks for session reuse

* investigate failing test

* investigate failing test

* investigate failing test

* investigate failing test

* ci

* remove travis and appveyor

* ci, readme

* ci fixes

* fix ci

* fix ci

* fix ci

* fix memory leak when ignoring test error/failure

* fix ci

* don't define UNREACHABLE as poco_bugcheck as it triggers 'control reaches end of non-void function' warning

* add Linux cross build, build Data libs on macos

* fix ci

* add MySQL include/lib search paths for Homebrew

* ci fixes

* ci fixes

* ci fixes

* ci fixes

* fix indluce paths for brew mysql

* #3317: Data::MySQL MySQL headers and library search paths

* fix ARM-Linux build config

* fix MySQL.make

* update FindMySQL.cmake

* fix(SocketReactor): fix dataCollection test

* chore: remove troubleshooting help leftovers

* #3302: MSVC: Poco hides warnings (C4996) for the C++14 attribute [[deprecated]]

* fix potential crash in testAsyncNotify: don't delete event object while async notification is still in progress

* fix(PollSetTest): change connect to blocking

* added ActiveRecord library and compiler

* added dependencies file

* update copyright dates

* ActiveRecord: project files and fixes for MSVC

* ci: enable ActiveRecord on Windows

* fix(PollSetTest): remove poll timing check (fails on msvc ci)

* fix ActiveRecord CMake build and configuration

* feat(build): add gen directory (for generated sources) and macchina lib link dirs (if needed)

* #3318: Data: Support Poco::UUID for data binding

* ODBC tests for UUID, updated ActiveRecord projects

* ActiveRecord user guide

* update ActiveRecord documentation

* documentation fixes

* #3321: manually merge ODBC text encoding support

* CppParser: merge changes from internal repository

* updated Makefile

* AbstractObserver::accepts() - add optional name parameter

* fix SharedPtr::makeSharedArray() [merge from devel]

* remove blank line

* #2895, #2935: support OCSP stapling

* style

* clang support (merge from devel)

* #3322: remove useless struct

* link libmariadb instead of libmysql if headers indicate MariaDB

* fix nullptr passed to memcmp/memcpy reported by ubsan

* fix nullptr passed to memcmp/memcpy reported by ubsan

* fix PageCompiler cross-compile; fix Content-Security-Policy header

* remove Data release notes page

* style, remove unused var

* update docs

* improve BLOB handling, clean-up code

* fix(ICMPv4Packet): [asan] Undefined behavior in ICMPv4PacketImpl.cpp #3326

* fix(NumericString): Bug in NumericString with decSep != '.' #3159

* fix(HostEntry): DNS HostEntry returns multiple entries #3303

* fix(PollSet): #3248 #3249

* fix(NetworkInterface): Unterminated string possible in NetworkInterfaceImpl::setPhyParams() #3301

* style/whitespace

* fix warnings

* add version resources to executables

* style

* whitespace

* update changelog

* cpproj: also copy testsuite/include if it's there

* branch off 1.11.1

* #3335: XML error when build 1.11.0

* #3353: add POCO_NO_FORK_EXEC CMake option

* #3381: DNS::hostByAddress not thread-safe

* #3400: fix std::localtime not thread safe

* #3221: Crash reported on Windows in X509Certificate verification

* #3344: [bug] MacOS bundle destination path is not set

* #3360: Add POCO_PGSQL_{INCLUDE,LIB} variables

* #3363: Fixed compilation error with MongoDB::Connection and Util::Application

* #3377: Correct Poco::Path::configHome() and dataHome() documentation for Windows

* #2823: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648

* #3425: Fixed suspend/resumeEvents pair in DirectoryWatcher

* #2966: SocketReactor loads one core of CPU up to 100%

* #3330: Poco::Data::ODBC::ODBCStatementImpl causes crash

* use OpenSSL 1.1.1 on macOS

* add missing include search path

* upgrade bundled PCRE to 8.45

* upgrade bundled SQLite to 3.36.0

* updated changelog

* fix brew OpenSSL version

* branch off poco-1.11.2

* #3506: Upgrade bundled expat to 2.4.4

* manually merge #3448, part 1 (Crypto)

* manually merge #3448, part 1 (NetSSL)

* #3515: NetSSL_OpenSSL Testsuite: testInterop() and testProxy() fail due to changed certificate

* #3448: fix version check

* #3465: NetSSL_Win: bad error handling when decodeMessage() fails

* #3458: encryptString() crash on redhat/centos 8 with FIPS enabled using md5 default digest

* #3505: JSON::PrintHandler.value(bool) prints incorrect value

* #3527: Upgrade bundled expat to 2.4.5

* #3470: bug in JSON ParseHandler.cpp (RFC 7159 should be valid)

* #3507: Reference counting for bound configuration in Util::Option is broken

* #3518: Expat version check in #defines incorrect

* #3338: NamedMutex does not work on Linux distributions where fs.protected_regular=1

* CI: don't build PageCompiler in ARM cross build

* detect ARM64 on Windows

* updated README.md

* ProGen: support generation of VS 2022 project files

* ci: add windows 2022

* fix library name

* remove unused CppUnit headers

* added VS2022 project files

* #3530: Upgrade bundled expat to 2.4.6

* #3538: Upgrade bundled expat to 2.4.7

* Add back NIOS2 double conversion detection to fix compile errors

The commit
558324f672

removed the nios2 support, which was originally added in
e7b91e8125

This commit add it back.

Signed-off-by: Julien Olivain <ju.o@free.fr>

* #3466: DefinePlatformSpecific.cmake: handle RelWithDebInfo and MinSizeRel configurations

* #3524: remove XML and Util dependencies in Zip/SevenZip

* #3483: Adds Windows 11 and Server 2022 to Environment::osDisplayName()

* #3495: Array::operator[] should not throw

* #3268: Poco redis command set have a bug when you want to set nx ex or expireTime

* #3509: fix dst and utcOffset handling for Dublin time zone

* #2882: another attempt at fixing it that should also work on other platforms

* remove unused method in Timezone_WIN32.cpp

* use tm_gmtoff on Linux

* Basic support for OpenSSL 3.0.0 (#3448)

* updated README.md

* Create close-inactive-issues.yml

* check return codes of EVP_CIPHER_CTX_new and EVP_CipherInit

Especially with OpenSSL 3, it is possible that EVP_CipherInit may fail even when
passed a non-null cipher[1]. Without the checking, it will finally get to a
segfault.

[1] https://github.com/openssl/openssl/issues/16864

* Automatically load default and legacy providers with OpenSSL 3

Without the legacy provider [1], some ciphers are not available. For example,
the 'des-ecb' one used by test sutie is missed and the test will fail.

[1] OSSL_PROVIDER-LEGACY(7ossl)

* Make p12 ca order the same as pem

OpenSSL < 3 returns p12 ca order in reversed order. This is fixed
in OpenSSL 3. We work around it with old OpenSSL.

See:
https://github.com/openssl/openssl/issues/16421
https://github.com/openssl/openssl/pull/12641
f5eb85eb0f

* Implement SSL abort handling on OpenSSL 3

On an unexpected EOF, versions before OpenSSL 3.0 returned SSL_ERROR_SYSCALL,
nothing was added to the error stack, and errno was 0. Since OpenSSL 3.0 the
returned error is SSL_ERROR_SSL with a meaningful error on the error stack.[1]

[1] SSL_GET_ERROR(3ossl)

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: Robin Lee <cheeselee@fedoraproject.org>
Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* fix(Socket): shutdown fixes from pull #3448

* #3500: Sandbox all iFrames in PocoDoc

* #3549; replace assert with assertTrue

* #3553: Upgrade bundled zlib to 1.2.12

* #3525: Bad management of file in case of OpenSSLException in X509Certificate::readPEM and X509Certificate::writePEM

* disable OpenSSL deprecation warnings

* chore: cleanup

* fix(X509Certificate): add missing string format

* #3559: Poco::Data::PostgreSQL - DateTime extraction truncates fractional seconds

* feat(EVP): 3.0 support

- add EVPCipher
- additional EVPPKey constructors
- tests
- fix and improve openssl-related exceptions

Transition towards 3.0 support;
deprecating direct EC and RSA interface portions.

* fix(openssl): pre 3.0 compile

* feat(Envelope): Add envelope to crypto #3561

* fix(Envelope): mac/clang compile

* fix(Any): #3297 #3514

* #3562: fixed OpenSSL setup/shutdown

* fix exception text

* #3563: Remove support for OpenSSL < 1.0

* ci jobs for OpenSSL 1.1 and 3

* updated CHANGELOG

* updated .vscode

* Refactor/any soo (#3564)

* refactor(Any): SOO

- encapsulate data holders
- add missing gets and ops
- eliminate g++ warnings with enable_if's
- default enable SOO

* refactor(Placeholder): encapsulate SOO memory management and fix leaks; cf. #3297 #3514

* fix(Placeholder): asan errors and add tests

cf. #3297 #3514

* fix(SSLManager): Race condition in SSLManager #3558

* remove unused include

* updated copyright date

* PocoDoc: fix iframe sandboxing

* fix(SHA2Engine): cannot use HMACEngine with SHA2Engine #3421

* refactor(Placeholder): ifdef POCO_NO_SOO only in Placeholder and remove it anywhere else (#3566)

* refactor(Placeholder): more SOO consolidation and optimization

* fix(FPEnvironment): Visual Studio Warning C4244 #3543

* fix(Extractor): move extraction decoding to AbstractExtractor #3396

* Netssl/openssl3 (#3575)

* feat(Context): DH init openssl3 port (1/2 hardcoded params)

* create poco-1.11.3 branch, bump version

* update copyright date

* #3567: check legacy provider existence for legacy exception #3567

* fix(Placeholder): comparison for zero value

* feat(Context): DH init openssl3 port (2/2 params from file)

* test(HTTPSClientSession): try/catch to understand CI failure

* chore(cmake): copy the DH parameters file

* fix(OpenSSLInitializer): unload provider on uninitialize

* chore(HTTPSClientSessionTest): remove try/catch

* fix(OpenSSLInitializer): fix provider unloading

* feat(CppUnit): make tests exceptions more descriptive

* chore(CppUnit): a more descriptive name for callback

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>

* fix(Foundation): update VS 2019 platform version

* chore(Data): update VS project files (add Transcoder #3396)

* fix(Data): Poco::Data::ODBC-dbEncoding property not used for insert/update #3396

* fix(Data): add transcoder to Makefile #3396

* fix(JWT): remove duplicate test functions after merge

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: Julien Olivain <ju.o@free.fr>
Co-authored-by: Robin Lee <robinlee.sysu@gmail.com>
Co-authored-by: Robin Lee <cheeselee@fedoraproject.org>

* #2755: Fix MySQL's LONGBLOB/LONGTEXT not allocating enough space (#3474)

* Unit test for bug #2755.

* Removed condition to set buffer length to 0.

* Fixes to unit tests for LONGBLOB/TEXT data type.

* Adjusted buffer sizes to accommodate LONGBLOBs.

Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com>

* fix(Data): MySQL UUID binding temporary string #3587

* feat(CI): add MySQL tests to CI #3588

* fix(CI): remove mysql client dev (using mariadb) #3588

* fix(CI): another shot at mysql

* fix(Net/testsuite): add missing include

* fix(DatagramSocket): Socket::available does not always return correct value for UDP #3589

* fix(SocketProactor): few improvements (#3357)

* fix(ICMPsocketTest): change appinf (doesn't respond to ping) to github

* fix(PollSet): windows fixes

* fix(PollSet): windows implementation fixes (multi-fd_set select); minor reactor fixes

* Extract JSON type as string (#3491)

* Declared JSON as string data

# Conflicts:
#	Data/include/Poco/Data/MetaColumn.h
#	Data/src/RecordSet.cpp
#	Data/src/StatementImpl.cpp

* Added JSON extractor as string

* Added unit test

* Update comment

Co-authored-by: Joerg-Christian Boehme <joerg@chaosdorf.de>
Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: tbarbier <thomas.barbier@amadeus.com>
Co-authored-by: Linquize <linquize@yahoo.com.hk>
Co-authored-by: Jan Kevin Dick <fixed-term.jan.dick@de.bosch.com>
Co-authored-by: Neelima Patil <neelima.patil@honeywell.com>
Co-authored-by: akete <akete@users.noreply.github.com>
Co-authored-by: YuriAzathoth <iamkiller@mail.com>
Co-authored-by: Jonathan Horvath <byteme@bytedreamer.com>
Co-authored-by: Maksim Kita <kitaetoya@gmail.com>
Co-authored-by: Alexander Galanin <al@galanin.nnov.ru>
Co-authored-by: Thomas Sablik <thomas.sablik@wombytes.de>
Co-authored-by: Nikita Migunov <nmigunov@iponweb.net>
Co-authored-by: Ben Wolsieffer <benwolsieffer@gmail.com>
Co-authored-by: micheleselea <michele.pradella@selea.com>
Co-authored-by: Federico Kircheis <federico.kircheis@gmail.com>
Co-authored-by: fenghao119 <fenghao119@gmail.com>
Co-authored-by: Alex Fabijanic <alex@pocoprojecct.org>
Co-authored-by: linquize <linquize2@yahoo.com>
Co-authored-by: Julien Olivain <ju.o@free.fr>
Co-authored-by: Robin Lee <robinlee.sysu@gmail.com>
Co-authored-by: Robin Lee <cheeselee@fedoraproject.org>
Co-authored-by: hectots <monkey.instinct@gmail.com>
Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com>
Co-authored-by: Hernan Martinez <hernan.c.martinez@gmail.com>

* merge pg binary extraction support

* set version number to 1.12.0

* updated VS project files

* merge pg binary extraction support

* updated VS project files

* add Prometheus library

* fix Makefile

* CppUnit: add generic assertEquals

* Cell: fix wrong condition when checking for font styles

* upgrade bundled sqlite to 3.38.5; fixed a warning in SQLiteTest.cpp

* fix(IPAddress): IPAddress::isLoopback() returns false for IPv4 mapped in IPv6 #3399

* Fixes from develop experimental (on top of 1.11.2) (#3017)

* MongoDB::PooledConnection: Prevent unwanted release by disabling copy semantics. Enabled move semantics for C++11.

* Construct MongoDB::Cursor from aggragation cursor.

* Added function to get OS-specific numerical thread ID and %J pattern to use numerical OS thread id in pattern formatter.

Co-authored-by: Tomaz Beltram <tomaz.beltram@topit.si>

* fix(SharedLibrary): SharedLibrary::isLoaded() not thread safe #3175

* fix(Task): Task::postNotification possible leak #3240

* fix(Platform): Poco errors with _DEBUG and NDEBUG #3039

* feat(HTTPClientSession): HTTPClientSession source IP address #2271

* feat(samples): add SetSourceIP #2271

* chore(samples): add/fix VS project/solution files #2271

* fix(HTTPClientSession): broken proxy tests #2271

* fix(JSON): Arbitrary indent of 2 applied to JSON string objects Var conversion #3253

* feat(Data): Add JSONRowFormatter #3602

* #3405 #3482 #3485

* Update minimum GCC version information (#3603)

Changed in 1.10.0 Release
Content modification based on minimum compiler version upgrade (C++14)

* cleanup Data transcode test

* Add ARM64 to ProGen for vs170 (#3606)

* Updated project properties and templates

* Added ARM64 templates

* Added ARM64 library suffixes

* Fix VS2022 TargetMachine property when targeting ARM64

* Add missing changes from zlib update (#3601)

* Add --ldflags configure option (#3545)

* updated README.md

* Create close-inactive-issues.yml

* Add --ldflags configure option

Add --ldflags configure option to allow the user to provide additional
flags to the linker such as -latomic. This will avoid the following
build failure with ActiveRecord on sparc v8:

/home/peko/autobuild/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/10.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: /home/peko/autobuild/instance-1/output-1/build/poco-1.11.1/ActiveRecord/Compiler/obj/Linux/sparc/release_shared/Compiler.o: in function `Poco::RefCountedObject::release() const':
Compiler.cpp:(.text._ZNK4Poco16RefCountedObject7releaseEv[_ZNK4Poco16RefCountedObject7releaseEv]+0xc): undefined reference to `__atomic_fetch_sub_4'

Fixes:
 - http://autobuild.buildroot.org/results/b01/b014d6fcb8fdf28984d7ce606db2347b0265bc6a/build-end.log

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* chore(ci): remove close-inactive-issues.yml

* Readded named substring support for regexes (#3569)

Original merged PR #952 was merged in 2015, but has gone missing. This is adding it back in.

* Use transaction_isolation in MySQL 8+ (#3490)

* Use transaction_isolation in MySQL 8+

* Trim buffer before comparison

* Added LocalConfigurationView to only search inside the viewed scope (#3529)

* chore(testsuite): fix testsuite Makefile

* fix(Foundation): remove SDK version from VS 2022 project #3605

* fix(SocketReactor): Poco::Net::SocketConnector unregistering #2513

* devel-release-1.12.0 (#3673)

* Fix percent-encoded fragment modification in Poco::URI

Before this commit using Poco::URI class to parse specific URIs that had
percent-encoded fragment identifier resulted in the loss of information
concerning the way the fragment identifier was encoded. There could be the cases
when the  result of Poco::URI object serialization to string did not match the
original URI string Poco::URI object was created from.

In this commit we change the internal logic of fragment processing in Poco::URI,
so that the fragment is stored inside the class in raw form (the same way as
query string). The methods getFragment and setFragment work the old way (with
percent-decoded fragment values), new methods getRawFragment and setRawFragment
are added to get access to the original fragment representation.

* Remove SDK version from VS2022 test projects (#3607)

* Remaining changes for Windows on ARM64 support (#3608)

* Add ARM64 to Foundation

* Changed lib, and bin folders of ARM64 builds

* Updated buildwin.cmd

* Added missing closing </File> tags (#3610)

* feat(Platform): LoongArch support #3460

* fix(PollSet): default enable epoll on linux

* default disable new state on move

* fix(UDPHandler): data race #3613; clean up all Net tsan warnings

* ProGen vs170 projects with Win32,x64,ARM64 (#3612)

* fix(TCPServer): #1884 #1965

* fix(LogFile): LogFile_STD (LogFileImpl) fails to recover from getting out of space #2084

* Avoid clang 10 -Wimplicit-int-float-conversion warning/error when converting int into float (#2943)

Example of warning (error when using -Werror) we get with clang 10:

/remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:444:14: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Werror,-Wimplicit-int-float-conversion]
                if (from > std::numeric_limits<T>::max())
                         ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:332:4: note: in instantiation of function template specialization 'Poco::Dynamic::VarHolder::checkUpperLimitFloat<float, int>' requested here
                        checkUpperLimitFloat<F,T>(from);
                        ^
/remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:2175:3: note: in instantiation of function template specialization 'Poco::Dynamic::VarHolder::convertToSmaller<float, int>' requested here
                convertToSmaller(_val, val);
                ^

* chore(ci): run ci on pull requests

* #2569: Added TIMESTAMP data type support on MySQL (#3471)

* Unit test for TIMESTAMP data type in MySQL.

* Added support for TIMESTAMP data type.

Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com>

* MongoDB::Array: int --> size_t in get for consistency with size(), new helper functions to add elements to an array. (#3016)

* fix(CppUnit): enable_if disarm numeric notEqualsMessage

* fix(CppUnit): CppUnit notEqualsMessage causing compile errors #3615

* Syslog: Include Facility to Syslog Message (#3452)

* Fixed indentation

* Added Facility to Message in RemoteSyslogListener

* Net: make MessageHeader limits configurable (#3404)

* Add Message::getAll (#3104)

* chore(Message): fix formatting for #3104

* Output to stderr in Poco::WindowsConsoleChannel (#3058)

- Fixes #3056

* HTTPDigestCredentials added support for RFC7616 algorithms (#3026)

* chore(SHA2Engine): fix formatting for #3026

* Added support for SQLite transaction types using Session property (#3018)

* chore(SQLite): fix enum names case for #3018

* fix(HTTPResponse): Add 425 / HTTP_TOO_EARLY to HTTPResponse::HTTPStatus #3592

* fix(SQLite): windows build (global var does not link) #3018

* Added missing SocketProactor class to ProGen source (#3616)

* Added missing SocketProactor class to ProGen source

* ProGen'd VS2022 Net project

* chore(Net): regenerate VS 140,150,160 projects #3614

* Handle MariaDB JSON columns since they are stored as `longtext` (#3621)

* Also extract BLOBs when reading longtext columns as std::string

* Fix error message in unit test

* Added unit test to read longtext columns as std::string

* Use `tx_isolation` when connected to MariaDB regardless of version (#3622)

* Use `tx_isolation` when connected to MariaDB regardless of version

* Rename variable

* Handle MariaDB server info in the middle of the string

* Updated to PCRE version 8.45  (#3623)

* Add missing changes from zlib update

* Updated to PCRE version 8.45

Build on Win32 and Linux, RegularExpressionTest was successful

* Fix/tsan (#3617)

* fix(Foundation): tsan warnings fixes

* fix(Thread_POSIX): tsan warnings fixes; add tsan.suppress

* fix(Util): tsan fixes

* fix(netSSL_OpenSSL): tsan fixes

* fix(Data): tsan warnings fixes

* feat(ci): add tsan job

* feat(ci): add tsan job, another attempt

* feat(ci): add tsan job, 3rd attempt

* fix(Foundation): tsan warnings fixes

* fix(Thread_POSIX): tsan warnings fixes; add tsan.suppress

* fix(Util): tsan fixes

* fix(netSSL_OpenSSL): tsan fixes

* fix(Data): tsan warnings fixes

* feat(ci): add tsan job

* feat(ci): add tsan job, another attempt

* feat(ci): add tsan job, 3rd attempt

* fix(ResultMetadata): memory leak #3474

* feat(ci): disable ActiveDispatcher tests for tsan runs

* feat(ci): try to fix tsan options file detection (again)

* chore(TestLibrary: correct spelling

* fix(ci): fix tsan run; add -y to apt; disable samples build for some jobs

* fix(ci): add mysql ports

* feat(ci): add VS asan

* feat(double-conversion): Upgrade double-conversion to v3.2.0 #3624

* chore(asan): disable msvc asan build (dll not found)

* chore(double-conversion): move NumericString.h before double-conversion includes to prevent min/max collision; reinstate lost loongarch64

* chore(JSON): sync pdjson with upstream

* fix(Statement): Poco::Data::Statement becomes unusable after exception #2287

* added facility to SyslogChannel (#3453)

* TCPServerDispatcher.h: missing <atomic> (#2961)

Fixes: b8af168151fe0147fb06557029002ae226dcc549
Fixes: #1965

* Windows embedded OpenSSL: Fixed bogus warning during compilation (External OpenSSL defined but internal headers used - possible mismatch!) (#3627)

* fix(double-conversion): nios2 and riscv defines

* fix(double-conversion): riscv defines

* fix(cmake): TestLibrary debug postfix

* fix(cmake): add WebNotifier to samples #3184

* doc(Crypto): Fix error in find_package example #3088

* fix(Event): Event data race #3629

* fix(AsyncChannel): race condition in AsyncChannel close/log #1039

* fix(Zip): Zip 64-bit extensions not set #2590 (tentative) (#3604)

* PocoDoc: fix handling of font-style tags if tag is immediately followed by punctuation

* Static code analyzer warnings #2688

* MinGW: fatal error: kernelspecs.h: No such file #2691

* Poco::Data::SessionPool change connection timeout #3241

* Makefile: space(s) following target name will break build (during link) #3062

* json format PrintHandler #2678

* indicate compiler that functions will never return (#3639)

* fix warning C4717: 'format<std::vector<std::any,std::allocatorstd::an… (#3640)

* fix warning C4717: 'format<std::vector<std::any,std::allocatorstd::any > >': recursive on all control paths, function will cause runtime stack overflow

* keep origin format.

* fix(format): scope

* fix(Crypto): libPocoCrypto.so: undefined reference to pthread_atfork when linking statically with OpenSSL 1.1 #3073

* chore(LocalConfigurationView): fix style #3529

* fix(ConfigurationView): ConfigurationView and JSON is broken for array access #3635

* FifoBuffer.advance method not throw exception when length==0 (#3641)

* fifobuffer not throw error when length = 0

* Update FIFOBuffer.h

fix indentation

Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* fix(URI): Decoding URI query parameters ( ::getQueryParameters) incompatible with Spring 5 #2619

* fix(NTPClient): NTPClient ignores second fractions #2614

* chore(JSON): add test for #2612

* fix(Platform): MinGW also defines __GNUC__. #3195

* Fix some clang 10 -Wsign-compare warnings (#2960)

In file included from /data/mwrep/res/osp/Poco/JSON/20-0-0-0/include/Poco/JSON/Object.h:22:
In file included from /data/mwrep/res/osp/Poco/JSON/20-0-0-0/include/Poco/JSON/Array.h:23:
In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/Dynamic/Var.h:26:
In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/Dynamic/VarHolder.h:22:
In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumberFormatter.h:22:
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:220:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:229:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:240:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:249:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
4 errors generated.

* chore(README): Add vcpkg installation instructions #2940

* fix(SQLite): SQLite::Connector::open() crashes on db file with non existing directory #2285

* fix(MailMessage): read hangs on missing final multipart boundary #2401

* fix(NumberParser): Rounds very large negative numbers to the incorrect values #3580

* fix(JSON::Stringifier): JSON Serializing NAN #3251

* feat(Timespan): Add std::chrono support #2576 #2623

* fix(strToInt): overflows #3580

* fix(strToInt): thousand separator regression #3580

* fix(MySQL::Extractor): MySQL Extractor #2521

* feat(FTPClientSession): activeDataConnection 1.11.0 cannot set specific data port #3372

* feat(Cipher): No access to padding in Cipher #3374

* feat(TypeHandler): DB into() does not compile for more than 20 members in a tuple #3342

* fix(NumberFormatter): Negative precision in NumberFormatter::format() #2511

* Make ParallelSocketReactor thread namable (#3642)

make ParallelSocketReactor thread namable

* fix(Redis): Poco::Redis after executing auth command next command always return OK #2457

* chore(NumberParserTest): add test for #2441

* avoid clang tidy warning (#3646)

* Revert "avoid clang tidy warning (#3646)" (#3648)

This reverts commit b23488d6fe.

* fix(VarHolder): limits check

* As of C++11, std::swap is noexcept. #2386 (#3645)

* As of C++11, std::swap is noexcept. #2386

* fix(Any): remove throw on swap

* fix(Any): As of C++11, std::swap is noexcept. #2386

* fix(Any): make size const #2386

* fix(SimpleRowFormatter): clang won't compile noexcept #2386

* a couple of arm fixes

* fix(Any): As of C++11, std::swap is noexcept. #2386

* fix(AnyTest): local() for POCO_NO_SOO# 2386

* test(RSACipher): RSA encryption without private key #2367

* chore(RSACipherTest): delete ciphers #2367

* add separate accessors and mutators for connect, send and receive tim… (#3476)

* add separate accessors and mutators for connect, send and receive timeouts

* implement timeout methods outside of class declaration to conform to existing code structure

* Update HTTPSession.h

Co-authored-by: bfoster <bfoster@malwarebytes.com>
Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* Make poll set interruptable (#3644)

* Make poll set interruptable

* open test for poll set

* fix poll set wake up test

* fix build error

* feat(SecureSocketImpl): how to set the socket of SecureSocketImpl to no-blocking? #2352

* better socket reactor wake up (#3647)

* better socket reactor wake up

* Remove documentation comment from source file

Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* test(MailMesage): MailMessage::read() chokes on Content-disposition #3650

* chore(Net/samples): tcpserver missing from Net/samples/CMakeLists.txt #3651

* fix(CMake): Linking with Foundation on Android gives error #3652 #3653

* #2821: Poco::Buffer: full on creation? - add documentation describing the behavior.

* add note regarding receiveFrame with Poco::Buffer

* merge changes from 1.11.3

* #3633: Redis: Support Authentication

* #3658: Support for chunked transfer encoding trailer

* formatHex with lower case (#3657)

* feat(Socket): add lastErrorDesc()

* fix(Socket): Socket::select EPOLL implementation returns socket in exceptList when empty list is given #3655; mark select as deprecated #1459

* Fix/poll set race (#3630)

* fix(PollSet): PollSet data race #3628

* fix(SocketConnector): SocketConnector test #2875

* fix(PollSet): optimize the amount of locked code; fix and simplify wakeUp logic

* fix(SocketConnectorTest): fix test memleak (data not flowing, handlers not deleted) #2875

* fix(PollSet): clear() and tests

* fix(PollSet): #1459 #3628 #3655 #3661

* fix(PollSet): Integrate windows epoll #2091, #3649

* chore(ProGen): MSVC does not properly recognize std version #3665

* fix(PollSet): eventfd call arg; add wepoll to CMakelists.txt

* fix(PollSet): CMakelists.txt

* fix(cmake): MSVC does not properly recognize std version #3665

* chore(vscode): add mac config

* fix(PollSet): PollSet::add()/update() semantics #3661

* Feat/pcre2 (#3663)

* upgrade to pcre2

* use pcre2_*_8 names

* fix pcre2 lib name for unbundled build

* CMake changes for PCRE2

* add missing macro for unbundled build

* add PCRE2_STATIC

* updated VS project files for pcre2

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>

* Revert "formatHex with lower case (#3657)" (#3670)

This reverts commit b1823b61c0.

* Always set thread names on POSIX platforms (#3384)

* chore: gitignore vim .swp files

* feat(POSIX): Always set thread names.

I'm not sure about the original intent to hide it under a DEBUG macro.

Naming the threads in release mode makes it easier to see runtime
application and know which thread pool uses how many threads and what
their names are. Firefox, Chromium and many other apps do this on Linux.

* Remove trailing whitespace (#3668)

* doc: update CHANGLEOG

Co-authored-by: Daniil Zotkin <zotkin@rutoken.ru>
Co-authored-by: Hernan Martinez <hernan.c.martinez@gmail.com>
Co-authored-by: Romain Geissler @ Amadeus <romain.geissler@amadeus.com>
Co-authored-by: hectots <monkey.instinct@gmail.com>
Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com>
Co-authored-by: Matej Kenda <matejken@gmail.com>
Co-authored-by: BeBinder <93721965+BeBinder@users.noreply.github.com>
Co-authored-by: Tavi Cacina <tavi-cacina@users.noreply.github.com>
Co-authored-by: Mathieu Stefani <m.stefani@abc-arbitrage.com>
Co-authored-by: Fritz Elfert <fritz@fritz-elfert.de>
Co-authored-by: Maksim Kita <kitaetoya@gmail.com>
Co-authored-by: Spaky <Spaky@users.noreply.github.com>
Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com>
Co-authored-by: Matej Kenda <matej.kenda@topit.si>
Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: Guillermo Frontera <gfrontera86@gmail.com>
Co-authored-by: junwufan <shelllet.com@gmail.com>
Co-authored-by: JackyWoo <wuchienchao@qq.com>
Co-authored-by: Ben Foster <bfoster7593@gmail.com>
Co-authored-by: bfoster <bfoster@malwarebytes.com>
Co-authored-by: Arun Chandrasekaran <arun@paravision.ai>
Co-authored-by: John Vandenberg <jayvdb@gmail.com>

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: tbarbier <thomas.barbier@amadeus.com>
Co-authored-by: Linquize <linquize@yahoo.com.hk>
Co-authored-by: Jan Kevin Dick <fixed-term.jan.dick@de.bosch.com>
Co-authored-by: Neelima Patil <neelima.patil@honeywell.com>
Co-authored-by: akete <akete@users.noreply.github.com>
Co-authored-by: YuriAzathoth <iamkiller@mail.com>
Co-authored-by: Jonathan Horvath <byteme@bytedreamer.com>
Co-authored-by: Maksim Kita <kitaetoya@gmail.com>
Co-authored-by: Alexander Galanin <al@galanin.nnov.ru>
Co-authored-by: Thomas Sablik <thomas.sablik@wombytes.de>
Co-authored-by: Nikita Migunov <nmigunov@iponweb.net>
Co-authored-by: Ben Wolsieffer <benwolsieffer@gmail.com>
Co-authored-by: micheleselea <michele.pradella@selea.com>
Co-authored-by: Federico Kircheis <federico.kircheis@gmail.com>
Co-authored-by: fenghao119 <fenghao119@gmail.com>
Co-authored-by: Alex Fabijanic <alex@pocoprojecct.org>
Co-authored-by: linquize <linquize2@yahoo.com>
Co-authored-by: Robin Lee <robinlee.sysu@gmail.com>
Co-authored-by: Robin Lee <cheeselee@fedoraproject.org>
Co-authored-by: Julien Olivain <ju.o@free.fr>
Co-authored-by: hectots <monkey.instinct@gmail.com>
Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com>
Co-authored-by: Hernan Martinez <hernan.c.martinez@gmail.com>
Co-authored-by: Joerg-Christian Boehme <joerg@chaosdorf.de>
Co-authored-by: Matej Kenda <matej.kenda@topit.si>
Co-authored-by: Tomaz Beltram <tomaz.beltram@topit.si>
Co-authored-by: Byungjun Lee <40881444+OneTop4458@users.noreply.github.com>
Co-authored-by: Spaky <Spaky@users.noreply.github.com>
Co-authored-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Co-authored-by: cesar <cesar@machinemode.com>
Co-authored-by: Kevin Dick <kevin@mjkd.de>
Co-authored-by: Daniil Zotkin <zotkin@rutoken.ru>
Co-authored-by: Romain Geissler @ Amadeus <romain.geissler@amadeus.com>
Co-authored-by: Matej Kenda <matejken@gmail.com>
Co-authored-by: BeBinder <93721965+BeBinder@users.noreply.github.com>
Co-authored-by: Tavi Cacina <tavi-cacina@users.noreply.github.com>
Co-authored-by: Mathieu Stefani <m.stefani@abc-arbitrage.com>
Co-authored-by: Fritz Elfert <fritz@fritz-elfert.de>
Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com>
Co-authored-by: Guillermo Frontera <gfrontera86@gmail.com>
Co-authored-by: junwufan <shelllet.com@gmail.com>
Co-authored-by: JackyWoo <wuchienchao@qq.com>
Co-authored-by: Ben Foster <bfoster7593@gmail.com>
Co-authored-by: bfoster <bfoster@malwarebytes.com>
Co-authored-by: Arun Chandrasekaran <arun@paravision.ai>
Co-authored-by: John Vandenberg <jayvdb@gmail.com>
This commit is contained in:
Aleksandar Fabijanic
2022-07-08 18:28:44 +02:00
committed by GitHub
parent 191cbdc97e
commit 4ba8595ed8
2123 changed files with 146150 additions and 72786 deletions

View File

@@ -1,23 +1,54 @@
name: poco-ci
on: [push]
on: [push, pull_request]
jobs:
linux-gcc-make:
runs-on: ubuntu-20.04
services:
mysql:
image: mysql:latest
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_USER: pocotest
MYSQL_PASSWORD: pocotest
MYSQL_DATABASE: pocotest
ports:
- 3306:3306
steps:
- uses: actions/checkout@v2
- run: sudo apt update && sudo apt install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev redis-server libmysqlclient-dev
- run: ./configure --everything --omit=PDF && make all -s -j4 && sudo make install
- run: >-
sudo -s
EXCLUDE_TESTS="Data/MySQL Data/ODBC Data/PostgreSQL MongoDB"
EXCLUDE_TESTS="Data/ODBC Data/PostgreSQL MongoDB"
./ci/runtests.sh
linux-gcc-make-asan:
runs-on: ubuntu-20.04
services:
mysql:
image: mysql:latest
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_USER: pocotest
MYSQL_PASSWORD: pocotest
MYSQL_DATABASE: pocotest
ports:
- 3306:3306
steps:
- uses: actions/checkout@v2
- run: sudo apt update && sudo apt install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
- run: ./configure --everything --omit=PDF && make all -s -j4 SANITIZEFLAGS=-fsanitize=address && sudo make install
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
- run: ./configure --everything --no-samples --omit=PDF && make all -s -j4 SANITIZEFLAGS=-fsanitize=address && sudo make install
- run: >-
sudo -s
EXCLUDE_TESTS="Data/ODBC Data/PostgreSQL MongoDB"
./ci/runtests.sh
linux-gcc-make-asan-no-soo:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
- run: ./configure --everything --no-samples --omit=PDF --no-soo && make all -s -j4 SANITIZEFLAGS=-fsanitize=address && sudo make install
- run: >-
sudo -s
EXCLUDE_TESTS="Data/MySQL Data/ODBC Data/PostgreSQL MongoDB"
@@ -27,18 +58,28 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- run: sudo apt update && sudo apt install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
- run: ./configure --everything --omit=PDF && make all -s -j4 SANITIZEFLAGS=-fsanitize=undefined && sudo make install
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
- run: ./configure --everything --no-samples --omit=PDF && make all -s -j4 SANITIZEFLAGS=-fsanitize=undefined && sudo make install
- run: >-
sudo -s
EXCLUDE_TESTS="Data/MySQL Data/ODBC Data/PostgreSQL MongoDB"
./ci/runtests.sh
linux-gcc-make-tsan:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
- run: ./configure --everything --no-samples --omit=CppParser,Encodings,Data/MySQL,Data/ODBC,Data/PostgreSQL,MongoDB,PageCompiler,PDF,PocoDoc,ProGen,Redis,SevenZip && make all -s -j4 SANITIZEFLAGS=-fsanitize=thread && sudo make install
- run: >-
sudo -s
./ci/runtests.sh TSAN
linux-gcc-cmake:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- run: sudo apt update && sudo apt install cmake ninja-build libssl-dev unixodbc-dev libmysqlclient-dev redis-server
- run: sudo apt -y update && sudo apt -y install cmake ninja-build libssl-dev unixodbc-dev libmysqlclient-dev redis-server
- run: cmake -H. -Bcmake-build -GNinja -DENABLE_PDF=OFF -DENABLE_TESTS=ON && cmake --build cmake-build --target all
- run: >-
cd cmake-build &&
@@ -51,8 +92,8 @@ jobs:
steps:
- uses: actions/checkout@v2
- run: >-
sudo apt-get update &&
sudo apt-get install crossbuild-essential-armhf
sudo apt-get -y update &&
sudo apt-get -y install crossbuild-essential-armhf
- run: >-
./configure --config=ARM-Linux --everything --omit=PDF,Crypto,NetSSL_OpenSSL,JWT,Data/MySQL,Data/ODBC,Data/PostgreSQL,PageCompiler,PageCompiler/File2Page &&
make all -s -j4 ARCHFLAGS="-mcpu=cortex-a8 -mfloat-abi=hard -mfpu=neon" TOOL=arm-linux-gnueabihf
@@ -118,3 +159,16 @@ jobs:
- run: >-
cd cmake-build;
ctest --output-on-failure -E "(DataMySQL)|(DataODBC)|(Redis)|(MongoDB)" -C Release
# missing asan dll path
# windows-2022-msvc-cmake-2022-asan:
# runs-on: windows-2022
# env:
# CPPUNIT_IGNORE: class CppUnit::TestCaller<class PathTest>.testFind,class CppUnit::TestCaller<class ICMPSocketTest>.testSendToReceiveFrom,class CppUnit::TestCaller<class ICMPClientTest>.testPing,class CppUnit::TestCaller<class ICMPClientTest>.testBigPing,class CppUnit::TestCaller<class ICMPSocketTest>.testMTU,class CppUnit::TestCaller<class HTTPSClientSessionTest>.testProxy,class CppUnit::TestCaller<class HTTPSStreamFactoryTest>.testProxy
# steps:
# - uses: actions/checkout@v2
# - run: cmake -S. -Bcmake-build -DPOCO_SANITIZE_ASAN=ON -DENABLE_NETSSL_WIN=ON -DENABLE_NETSSL=OFF -DENABLE_CRYPTO=OFF -DENABLE_JWT=OFF -DENABLE_DATA=ON -DENABLE_DATA_ODBC=ON -DENABLE_DATA_MYSQL=OFF -DENABLE_DATA_POSTGRESQL=OFF -DENABLE_TESTS=ON
# - run: cmake --build cmake-build --config Debug
# - run: >-
# cd cmake-build;
# ctest --output-on-failure -E "(DataMySQL)|(DataODBC)|(Redis)|(MongoDB)" -C Debug

7
.gitignore vendored
View File

@@ -144,3 +144,10 @@ cmake-build/
*.bak
stage/
releases/
# vim #
#######
*.orig
*.swp
*.vim
tags

View File

@@ -1,64 +1,76 @@
{
"env": {
"POCO_BASE": "${workspaceFolder}",
"pocoIncludePath": [
"${POCO_BASE}/CppUnit/include",
"${POCO_BASE}/Foundation/include",
"${POCO_BASE}/Encodings/include",
"${POCO_BASE}/XML/include",
"${POCO_BASE}/JSON/include",
"${POCO_BASE}/Util/include",
"${POCO_BASE}/Net/include",
"${POCO_BASE}/Crypto/include",
"${POCO_BASE}/NetSSL_OpenSSL/include",
"${POCO_BASE}/Data/include",
"${POCO_BASE}/Data/SQLite/include",
"${POCO_BASE}/Data/ODBC/include",
"${POCO_BASE}/Data/MySQL/include",
"${POCO_BASE}/Data/PostgreSQL/include",
"${POCO_BASE}/ActiveRecord/include",
"${POCO_BASE}/Zip/include",
"${POCO_BASE}/CppParser/include",
"${POCO_BASE}/JWT/include",
"${POCO_BASE}/Redis/include",
"${POCO_BASE}/MongoDB/include",
"${POCO_BASE}/ApacheConnector/include"
]
},
"configurations": [
{
"name": "Mac",
"intelliSenseMode": "clang-x64",
"includePath": ["${pocoIncludePath}", "/usr/local/opt/openssl@3/include"],
"macFrameworkPath": ["/System/Library/Frameworks"],
"defines": [],
"forcedInclude": [],
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++14",
"compileCommands": "",
"browse": {
"path": ["${workspaceFolder}"],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
"env": {
"POCO_BASE": "${workspaceFolder}",
"pocoIncludePath": [
"${POCO_BASE}/CppUnit/include",
"${POCO_BASE}/Foundation/include",
"${POCO_BASE}/Encodings/include",
"${POCO_BASE}/XML/include",
"${POCO_BASE}/JSON/include",
"${POCO_BASE}/Util/include",
"${POCO_BASE}/Net/include",
"${POCO_BASE}/Crypto/include",
"${POCO_BASE}/NetSSL_OpenSSL/include",
"${POCO_BASE}/Data/include",
"${POCO_BASE}/Data/SQLite/include",
"${POCO_BASE}/Data/ODBC/include",
"${POCO_BASE}/Data/MySQL/include",
"${POCO_BASE}/Data/PostgreSQL/include",
"${POCO_BASE}/ActiveRecord/include",
"${POCO_BASE}/Zip/include",
"${POCO_BASE}/CppParser/include",
"${POCO_BASE}/JWT/include",
"${POCO_BASE}/Redis/include",
"${POCO_BASE}/MongoDB/include",
"${POCO_BASE}/ApacheConnector/include"
]
},
{
"name": "Linux",
"intelliSenseMode": "gcc-x64",
"includePath": ["${pocoIncludePath}"],
"defines": [],
"forcedInclude": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++14",
"compileCommands": "",
"browse": {
"path": ["${workspaceFolder}"],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}
"configurations": [
{
"name": "Mac",
"intelliSenseMode": "clang-x64",
"includePath": [
"${pocoIncludePath}",
"/usr/local/opt/openssl@3/include"
],
"macFrameworkPath": [
"/System/Library/Frameworks"
],
"defines": [],
"forcedInclude": [],
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++14",
"compileCommands": "",
"browse": {
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"configurationProvider": "ms-vscode.makefile-tools"
},
{
"name": "Linux",
"intelliSenseMode": "gcc-x64",
"includePath": [
"${pocoIncludePath}"
],
"defines": [],
"forcedInclude": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++14",
"compileCommands": "",
"browse": {
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}

15
.vscode/settings.json vendored
View File

@@ -81,12 +81,23 @@
"unordered_set": "cpp",
"utility": "cpp",
"vector": "cpp",
"__bits": "cpp"
"*.tcc": "cpp",
"compare": "cpp",
"concepts": "cpp",
"memory_resource": "cpp",
"random": "cpp",
"ranges": "cpp",
"cfenv": "cpp",
"__bits": "cpp",
"variant": "cpp",
"condition_variable": "cpp",
"valarray": "cpp"
},
"files.exclude": {
"**/.dep": true,
"**/bin": true,
"**/obj": true
},
"git.ignoreLimitWarning": true
"git.ignoreLimitWarning": true,
"cmake.configureOnOpen": false
}

View File

@@ -15,6 +15,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Compiler", "Compiler\Compil
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug_shared|ARM64 = debug_shared|ARM64
release_shared|ARM64 = release_shared|ARM64
debug_static_mt|ARM64 = debug_static_mt|ARM64
release_static_mt|ARM64 = release_static_mt|ARM64
debug_static_md|ARM64 = debug_static_md|ARM64
release_static_md|ARM64 = release_static_md|ARM64
debug_shared|Win32 = debug_shared|Win32
release_shared|Win32 = release_shared|Win32
debug_static_mt|Win32 = debug_static_mt|Win32
@@ -29,6 +35,24 @@ Global
release_static_md|x64 = release_static_md|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|ARM64.Build.0 = release_shared|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|Win32.Build.0 = debug_shared|Win32
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
@@ -65,6 +89,24 @@ Global
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|x64.ActiveCfg = release_static_md|x64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|x64.Build.0 = release_static_md|x64
{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|x64.Deploy.0 = release_static_md|x64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|ARM64.Build.0 = release_shared|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|Win32.Build.0 = debug_shared|Win32
{16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
@@ -101,6 +143,24 @@ Global
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|x64.ActiveCfg = release_static_md|x64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|x64.Build.0 = release_static_md|x64
{16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|x64.Deploy.0 = release_static_md|x64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.Build.0 = release_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.Build.0 = debug_shared|Win32
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.Deploy.0 = debug_shared|Win32

View File

@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="debug_shared|ARM64">
<Configuration>debug_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_shared|Win32">
<Configuration>debug_shared</Configuration>
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
<Configuration>debug_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|ARM64">
<Configuration>debug_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|Win32">
<Configuration>debug_static_md</Configuration>
<Platform>Win32</Platform>
@@ -17,6 +25,10 @@
<Configuration>debug_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|ARM64">
<Configuration>debug_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|Win32">
<Configuration>debug_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -25,6 +37,10 @@
<Configuration>debug_static_mt</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|ARM64">
<Configuration>release_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|Win32">
<Configuration>release_shared</Configuration>
<Platform>Win32</Platform>
@@ -33,6 +49,10 @@
<Configuration>release_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|ARM64">
<Configuration>release_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|Win32">
<Configuration>release_static_md</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +61,10 @@
<Configuration>release_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|ARM64">
<Configuration>release_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|Win32">
<Configuration>release_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -51,6 +75,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<ProjectName>ActiveRecord</ProjectName>
<ProjectGuid>{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}</ProjectGuid>
<RootNamespace>ActiveRecord</RootNamespace>
@@ -87,6 +112,36 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
@@ -137,6 +192,24 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
@@ -157,7 +230,13 @@
</ImportGroup>
<PropertyGroup Label="UserMacros"/>
<PropertyGroup>
<_ProjectFileVersion>15.0.28307.799</_ProjectFileVersion>
<_ProjectFileVersion>17.0.32505.173</_ProjectFileVersion>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">PocoActiveRecordA64d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">PocoActiveRecordmdd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">PocoActiveRecordmtd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">PocoActiveRecordA64</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">PocoActiveRecordmd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">PocoActiveRecordmt</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">PocoActiveRecordd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">PocoActiveRecordmdd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">PocoActiveRecordmtd</TargetName>
@@ -171,6 +250,32 @@
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">PocoActiveRecordmd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">PocoActiveRecordmt</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<OutDir>..\binA64\</OutDir>
<IntDir>objA64\ActiveRecord\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<OutDir>..\binA64\</OutDir>
<IntDir>objA64\ActiveRecord\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\ActiveRecord\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\ActiveRecord\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\ActiveRecord\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\ActiveRecord\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<OutDir>..\bin\</OutDir>
<IntDir>obj\ActiveRecord\$(Configuration)\</IntDir>
@@ -223,6 +328,164 @@
<OutDir>..\lib64\</OutDir>
<IntDir>obj64\ActiveRecord\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;ActiveRecordLib_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<OutputFile>..\binA64\PocoActiveRecordA64d.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>..\binA64\PocoActiveRecordA64d.pdb</ProgramDatabaseFile>
<AdditionalLibraryDirectories>..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<ImportLibrary>..\libA64\PocoActiveRecordd.lib</ImportLibrary>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;ActiveRecordLib_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<OutputFile>..\binA64\PocoActiveRecordA64.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>false</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<ImportLibrary>..\libA64\PocoActiveRecord.lib</ImportLibrary>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<ProgramDataBaseFileName>..\libA64\PocoActiveRecordmtd.pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoActiveRecordmtd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoActiveRecordmt.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<ProgramDataBaseFileName>..\libA64\PocoActiveRecordmdd.pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoActiveRecordmdd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoActiveRecordmd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
@@ -564,12 +827,16 @@
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">true</ExcludedFromBuild>
</ResourceCompile>

View File

@@ -12,5 +12,5 @@ vc.project.compiler.defines =
vc.project.compiler.defines.shared =
vc.project.compiler.defines.debug_shared = ${vc.project.compiler.defines.shared}
vc.project.compiler.defines.release_shared = ${vc.project.compiler.defines.shared}
vc.project.linker.dependencies =
vc.project.linker.dependencies =
vc.solution.create = true

View File

@@ -4,6 +4,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Compiler", "Compiler_vs170.
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug_shared|ARM64 = debug_shared|ARM64
release_shared|ARM64 = release_shared|ARM64
debug_static_mt|ARM64 = debug_static_mt|ARM64
release_static_mt|ARM64 = release_static_mt|ARM64
debug_static_md|ARM64 = debug_static_md|ARM64
release_static_md|ARM64 = release_static_md|ARM64
debug_shared|Win32 = debug_shared|Win32
release_shared|Win32 = release_shared|Win32
debug_static_mt|Win32 = debug_static_mt|Win32
@@ -18,6 +24,24 @@ Global
release_static_md|x64 = release_static_md|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.Build.0 = release_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.Build.0 = debug_shared|Win32
{84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.Deploy.0 = debug_shared|Win32

View File

@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="debug_shared|ARM64">
<Configuration>debug_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_shared|Win32">
<Configuration>debug_shared</Configuration>
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
<Configuration>debug_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|ARM64">
<Configuration>debug_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|Win32">
<Configuration>debug_static_md</Configuration>
<Platform>Win32</Platform>
@@ -17,6 +25,10 @@
<Configuration>debug_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|ARM64">
<Configuration>debug_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|Win32">
<Configuration>debug_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -25,6 +37,10 @@
<Configuration>debug_static_mt</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|ARM64">
<Configuration>release_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|Win32">
<Configuration>release_shared</Configuration>
<Platform>Win32</Platform>
@@ -33,6 +49,10 @@
<Configuration>release_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|ARM64">
<Configuration>release_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|Win32">
<Configuration>release_static_md</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +61,10 @@
<Configuration>release_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|ARM64">
<Configuration>release_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|Win32">
<Configuration>release_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -51,6 +75,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<ProjectName>Compiler</ProjectName>
<ProjectGuid>{84DD1CB5-4735-478A-B48E-5E4858F0E831}</ProjectGuid>
<RootNamespace>Compiler</RootNamespace>
@@ -87,6 +112,36 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
@@ -137,6 +192,24 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
@@ -157,7 +230,13 @@
</ImportGroup>
<PropertyGroup Label="UserMacros"/>
<PropertyGroup>
<_ProjectFileVersion>15.0.28307.799</_ProjectFileVersion>
<_ProjectFileVersion>17.0.32505.173</_ProjectFileVersion>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">arcd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">arcd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">arcd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">arc</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">arc</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">arc</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">arcd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">arcd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">arcd</TargetName>
@@ -171,6 +250,36 @@
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">arc</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">arc</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<OutDir>binA64\</OutDir>
<IntDir>objA64\Compiler\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<OutDir>binA64\</OutDir>
<IntDir>objA64\Compiler\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<OutDir>binA64\static_mt\</OutDir>
<IntDir>objA64\Compiler\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<OutDir>binA64\static_mt\</OutDir>
<IntDir>objA64\Compiler\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<OutDir>binA64\static_md\</OutDir>
<IntDir>objA64\Compiler\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<OutDir>binA64\static_md\</OutDir>
<IntDir>objA64\Compiler\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<OutDir>bin\</OutDir>
<IntDir>obj\Compiler\$(Configuration)\</IntDir>
@@ -231,6 +340,187 @@
<IntDir>obj64\Compiler\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<OutputFile>binA64\arcd.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>binA64\arcd.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<OutputFile>binA64\arc.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_mt\arcd.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>binA64\static_mt\arcd.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_mt\arc.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_md\arcd.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>binA64\static_md\arcd.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_md\arc.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>

View File

@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="debug_shared|ARM64">
<Configuration>debug_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_shared|Win32">
<Configuration>debug_shared</Configuration>
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
<Configuration>debug_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|ARM64">
<Configuration>debug_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|Win32">
<Configuration>debug_static_md</Configuration>
<Platform>Win32</Platform>
@@ -17,6 +25,10 @@
<Configuration>debug_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|ARM64">
<Configuration>debug_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|Win32">
<Configuration>debug_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -25,6 +37,10 @@
<Configuration>debug_static_mt</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|ARM64">
<Configuration>release_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|Win32">
<Configuration>release_shared</Configuration>
<Platform>Win32</Platform>
@@ -33,6 +49,10 @@
<Configuration>release_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|ARM64">
<Configuration>release_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|Win32">
<Configuration>release_static_md</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +61,10 @@
<Configuration>release_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|ARM64">
<Configuration>release_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|Win32">
<Configuration>release_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -51,6 +75,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<ProjectName>TestSuite</ProjectName>
<ProjectGuid>{16B8C4E7-6F29-4910-9350-848730F9EF77}</ProjectGuid>
<RootNamespace>TestSuite</RootNamespace>
@@ -87,6 +112,36 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
@@ -137,6 +192,24 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
@@ -157,7 +230,13 @@
</ImportGroup>
<PropertyGroup Label="UserMacros"/>
<PropertyGroup>
<_ProjectFileVersion>15.0.28307.799</_ProjectFileVersion>
<_ProjectFileVersion>17.0.32505.173</_ProjectFileVersion>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">TestSuited</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">TestSuited</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">TestSuited</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">TestSuite</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">TestSuite</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">TestSuite</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">TestSuited</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">TestSuited</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">TestSuited</TargetName>
@@ -171,6 +250,36 @@
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">TestSuite</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">TestSuite</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<OutDir>binA64\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<OutDir>binA64\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<OutDir>binA64\static_mt\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<OutDir>binA64\static_mt\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<OutDir>binA64\static_md\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<OutDir>binA64\static_md\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<OutDir>bin\</OutDir>
<IntDir>obj\TestSuite\$(Configuration)\</IntDir>
@@ -231,6 +340,189 @@
<IntDir>obj64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnitd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\TestSuited.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>binA64\TestSuited.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnit.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\TestSuite.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnitmtd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_mt\TestSuited.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>binA64\static_mt\TestSuited.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnitmt.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_mt\TestSuite.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnitmdd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_md\TestSuited.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>binA64\static_md\TestSuited.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnitmd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_md\TestSuite.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>

View File

@@ -4,12 +4,20 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheConnector", "ApacheCo
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug_shared|ARM64 = debug_shared|ARM64
release_shared|ARM64 = release_shared|ARM64
debug_shared|Win32 = debug_shared|Win32
release_shared|Win32 = release_shared|Win32
debug_shared|x64 = debug_shared|x64
release_shared|x64 = release_shared|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
{9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
{9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
{9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
{9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|ARM64.Build.0 = release_shared|ARM64
{9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
{9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
{9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.Build.0 = debug_shared|Win32
{9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.Deploy.0 = debug_shared|Win32

View File

@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="debug_shared|ARM64">
<Configuration>debug_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_shared|Win32">
<Configuration>debug_shared</Configuration>
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
<Configuration>debug_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|ARM64">
<Configuration>release_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|Win32">
<Configuration>release_shared</Configuration>
<Platform>Win32</Platform>
@@ -19,6 +27,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<ProjectName>ApacheConnector</ProjectName>
<ProjectGuid>{9866EE28-0612-4746-BD35-3B15B0AF7267}</ProjectGuid>
<RootNamespace>ApacheConnector</RootNamespace>
@@ -35,6 +44,16 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
@@ -53,6 +72,12 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
@@ -61,12 +86,24 @@
</ImportGroup>
<PropertyGroup Label="UserMacros"/>
<PropertyGroup>
<_ProjectFileVersion>15.0.28307.799</_ProjectFileVersion>
<_ProjectFileVersion>17.0.32505.173</_ProjectFileVersion>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">mod_pocoA64d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">mod_pocoA64</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">mod_pocod</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">mod_poco</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">mod_poco64d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">mod_poco64</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<OutDir>..\binA64\</OutDir>
<IntDir>objA64\ApacheConnector\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<OutDir>..\binA64\</OutDir>
<IntDir>objA64\ApacheConnector\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<OutDir>..\bin\</OutDir>
<IntDir>obj\ApacheConnector\$(Configuration)\</IntDir>
@@ -87,6 +124,70 @@
<IntDir>obj64\ApacheConnector\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>..\binA64\mod_pocoA64d.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>..\binA64\mod_pocoA64d.pdb</ProgramDatabaseFile>
<AdditionalLibraryDirectories>..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<ImportLibrary>..\libA64\mod_pocod.lib</ImportLibrary>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>..\binA64\mod_pocoA64.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>false</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<ImportLibrary>..\libA64\mod_poco.lib</ImportLibrary>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>

View File

@@ -14,7 +14,7 @@ set_target_properties(mod_poco
target_include_directories(mod_poco
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${APACHE2_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/src

View File

@@ -16,7 +16,7 @@ file (usually <[httpd.conf]>):
LoadModule poco_module modules/mod_pocod.so
----
!!!Configuring ApacheConnector
ApacheConnector must be able to find shared libraries containing request handler, as well
as optional configuration files. ApacheConnector provides an Poco::Util::Application class
@@ -30,7 +30,7 @@ is used in the Apache configuration file:
AddPocoRequestHandler <FactoryClass> <SharedLibrary> <Path>...
----
The first argument specifies the name of the request handler factory class. The second argument
contains the path of the shared library containing the request handler.
The third (and optionally following) argument(s) specify the URI paths handled by the
@@ -38,7 +38,7 @@ request handler. For example:
AddPocoRequestHandler TimeRequestHandlerFactory p:/Poco/ApacheConnector/samples/TimeServer/bin/TimeServerd.dll /time
----
loads the TimeRequestHandlerFactory from TimeServerd.dll. Whenever a request for a URI starting with "/time"
is sent by a client, this request will be handled by the TimeRequestHandler.
@@ -76,8 +76,8 @@ Following is a sample for a request handler implementation. The complete sample
#include "Poco/DateTimeFormatter.h"
#include "Poco/DateTimeFormat.h"
#include "Poco/ClassLibrary.h"
using Poco::Net::HTTPRequestHandler;
using Poco::Net::HTTPRequestHandlerFactory;
using Poco::Net::HTTPServerRequest;
@@ -85,24 +85,24 @@ Following is a sample for a request handler implementation. The complete sample
using Poco::Timestamp;
using Poco::DateTimeFormatter;
using Poco::DateTimeFormat;
class TimeRequestHandler: public HTTPRequestHandler
/// Return a HTML document with the current date and time.
{
public:
TimeRequestHandler()
TimeRequestHandler()
{
}
void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response)
{
Timestamp now;
std::string dt(DateTimeFormatter::format(now, DateTimeFormat::SORTABLE_FORMAT));
response.setChunkedTransferEncoding(true);
response.setContentType("text/html");
std::ostream& ostr = response.send();
ostr << "<html><head><title>TimeServer powered by POCO ApacheConnector</title>";
ostr << "<meta http-equiv=\"refresh\" content=\"1\"></head>";
@@ -111,22 +111,22 @@ Following is a sample for a request handler implementation. The complete sample
ostr << "</p></body></html>";
}
};
class TimeRequestHandlerFactory: public HTTPRequestHandlerFactory
{
public:
TimeRequestHandlerFactory()
{
}
HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request)
{
return new TimeRequestHandler;
}
};
POCO_BEGIN_MANIFEST(HTTPRequestHandlerFactory)
POCO_EXPORT_CLASS(TimeRequestHandlerFactory)
POCO_END_MANIFEST

View File

@@ -25,7 +25,7 @@ class ApacheRequestRec
public:
ApacheRequestRec(request_rec* _pRec);
/// Creates the ApacheRequestRec;
bool haveRequestBody();
/// Returns true if the request contains a body.

View File

@@ -45,7 +45,7 @@ public:
private:
typedef std::map<std::string, Poco::Net::HTTPRequestHandlerFactory*> RequestHandlerFactories;
RequestHandlerFactories _requestHandlers;
Poco::ClassLoader<Poco::Net::HTTPRequestHandlerFactory> _loader;
Poco::FastMutex _mutex;

View File

@@ -25,10 +25,10 @@ class ApacheServerRequest: public Poco::Net::HTTPServerRequest
{
public:
ApacheServerRequest(
ApacheRequestRec* pApacheRequest,
const char* serverName,
int serverPort,
const char* clientName,
ApacheRequestRec* pApacheRequest,
const char* serverName,
int serverPort,
const char* clientName,
int clientPort);
/// Creates a new ApacheServerRequest.
@@ -73,7 +73,7 @@ private:
ApacheInputStream* _pStream;
Poco::Net::SocketAddress _serverAddress;
Poco::Net::SocketAddress _clientAddress;
friend class ApacheServerResponse;
};
@@ -84,7 +84,7 @@ private:
inline std::istream& ApacheServerRequest::stream()
{
poco_check_ptr (_pStream);
return *_pStream;
}

View File

@@ -42,7 +42,7 @@ public:
void sendContinue();
/// Sends a 100 Continue response to the
/// client.
void sendErrorResponse(int status);
/// Sends an error response with the given
/// status back to the client.
@@ -55,20 +55,20 @@ public:
/// The returned stream is valid until the response
/// object is destroyed.
///
/// Must not be called after sendFile(), sendBuffer()
/// Must not be called after sendFile(), sendBuffer()
/// or redirect() has been called.
void sendFile(const std::string& path, const std::string& mediaType);
/// Sends the response header to the client, followed
/// by the content of the given file.
///
/// Must not be called after send(), sendBuffer()
/// Must not be called after send(), sendBuffer()
/// or redirect() has been called.
///
/// Throws a FileNotFoundException if the file
/// cannot be found, or an OpenFileException if
/// the file cannot be opened.
void sendBuffer(const void* pBuffer, std::size_t length);
/// Sends the response header to the client, followed
/// by the contents of the given buffer.
@@ -77,12 +77,12 @@ public:
/// to length and chunked transfer encoding is disabled.
///
/// If both the HTTP message header and body (from the
/// given buffer) fit into one single network packet, the
/// given buffer) fit into one single network packet, the
/// complete response can be sent in one network packet.
///
/// Must not be called after send(), sendFile()
/// Must not be called after send(), sendFile()
/// or redirect() has been called.
void redirect(const std::string& uri, Poco::Net::HTTPResponse::HTTPStatus status);
/// Sets the status code, which must be one of
/// HTTP_MOVED_PERMANENTLY (301), HTTP_FOUND (302),
@@ -92,12 +92,12 @@ public:
/// the HTTP specification, must be absolute.
///
/// Must not be called after send() has been called.
void requireAuthentication(const std::string& realm);
/// Sets the status code to 401 (Unauthorized)
/// and sets the "WWW-Authenticate" header field
/// according to the given realm.
bool sent() const;
/// Returns true if the response (header) has been sent.

View File

@@ -33,7 +33,7 @@ protected:
int writeToDevice(const char* buffer, std::streamsize length);
private:
enum
enum
{
STREAM_BUFFER_SIZE = 1024
};
@@ -53,15 +53,15 @@ class ApacheIOS: public virtual std::ios
public:
ApacheIOS(ApacheRequestRec* pApacheRequest, bool haveData = false);
/// Creates the ApacheIOS with the given socket.
~ApacheIOS();
/// Destroys the ApacheIOS.
///
/// Flushes the buffer, but does not close the socket.
ApacheStreamBuf* rdbuf();
/// Returns a pointer to the internal ApacheStreamBuf.
void close();
/// Flushes the stream.

View File

@@ -40,7 +40,7 @@ public:
_length(0)
{
}
void handlePart(const MessageHeader& header, std::istream& stream)
{
_type = header.get("Content-Type", "(unspecified)");
@@ -52,18 +52,18 @@ public:
_name = params.get("name", "(unnamed)");
_fileName = params.get("filename", "(unnamed)");
}
CountingInputStream istr(stream);
NullOutputStream ostr;
StreamCopier::copyStream(istr, ostr);
_length = istr.chars();
}
int length() const
{
return _length;
}
const std::string& name() const
{
return _name;
@@ -73,12 +73,12 @@ public:
{
return _fileName;
}
const std::string& contentType() const
{
return _type;
}
private:
int _length;
std::string _type;
@@ -91,10 +91,10 @@ class FormRequestHandler: public HTTPRequestHandler
/// Return a HTML document with the current date and time.
{
public:
FormRequestHandler()
FormRequestHandler()
{
}
void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response)
{
MyPartHandler partHandler;
@@ -104,7 +104,7 @@ public:
response.setContentType("text/html");
std::ostream& ostr = response.send();
ostr <<
"<html>\n"
"<head>\n"
@@ -127,7 +127,7 @@ public:
"<input type=\"file\" name=\"file\" size=\"31\"> \n"
"<input type=\"submit\" value=\"Upload\">\n"
"</form>\n";
ostr << "<h2>Request</h2><p>\n";
ostr << "Method: " << request.getMethod() << "<br>\n";
ostr << "URI: " << request.getURI() << "<br>\n";
@@ -150,7 +150,7 @@ public:
}
ostr << "</p>";
}
if (!partHandler.name().empty())
{
ostr << "<h2>Upload</h2><p>\n";

View File

@@ -32,10 +32,10 @@ class TimeRequestHandler: public HTTPRequestHandler
/// Return a HTML document with the current date and time.
{
public:
TimeRequestHandler()
TimeRequestHandler()
{
}
void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response)
{
Timestamp now;

View File

@@ -35,7 +35,7 @@ ApacheApplication::~ApacheApplication()
void ApacheApplication::setup()
{
FastMutex::ScopedLock lock(_mutex);
if (!_ready)
{
std::vector<std::string> cmdLine;

View File

@@ -34,7 +34,7 @@ ApacheRequestHandlerFactory::~ApacheRequestHandlerFactory()
Poco::Net::HTTPRequestHandler* ApacheRequestHandlerFactory::createRequestHandler(const Poco::Net::HTTPServerRequest& request)
{
FastMutex::ScopedLock lock(_mutex);
// only if the given uri is found in _uris we are
// handling this request.
RequestHandlerFactories::iterator it = _requestHandlers.begin();
@@ -75,7 +75,7 @@ void ApacheRequestHandlerFactory::handleURIs(const std::string& uris)
void ApacheRequestHandlerFactory::addRequestHandlerFactory(const std::string& dllPath, const std::string& factoryName, const std::string& uri)
{
{
try
{
_loader.loadLibrary(dllPath);

View File

@@ -16,10 +16,10 @@
ApacheServerRequest::ApacheServerRequest(
ApacheRequestRec* pApacheRequest,
const char* serverName,
int serverPort,
const char* clientName,
ApacheRequestRec* pApacheRequest,
const char* serverName,
int serverPort,
const char* clientName,
int clientPort):
_pApacheRequest(pApacheRequest),
_pResponse(0),

View File

@@ -52,7 +52,7 @@ void ApacheServerResponse::initApacheOutputStream()
std::vector<HTTPCookie> cookies;
getCookies(cookies);
std::size_t cnt = cookies.size();
for (int c = 0; c < cnt; c++)
{
@@ -77,7 +77,7 @@ void ApacheServerResponse::sendContinue()
std::ostream& ApacheServerResponse::send()
{
poco_assert (!_pStream);
initApacheOutputStream();
return *_pStream;
@@ -124,7 +124,7 @@ void ApacheServerResponse::redirect(const std::string& uri, HTTPStatus status)
void ApacheServerResponse::sendErrorResponse(int status)
{
{
initApacheOutputStream();
_pApacheRequest->sendErrorResponse(status);

View File

@@ -21,7 +21,7 @@ using Poco::BufferedStreamBuf;
//
ApacheStreamBuf::ApacheStreamBuf(ApacheRequestRec* pApacheRequest, bool haveData):
ApacheStreamBuf::ApacheStreamBuf(ApacheRequestRec* pApacheRequest, bool haveData):
BufferedStreamBuf(STREAM_BUFFER_SIZE, std::ios::in | std::ios::out),
_pApacheRequest(pApacheRequest),
_haveData(haveData)

128
CHANGELOG
View File

@@ -1,5 +1,133 @@
This is the changelog file for the POCO C++ Libraries.
Release 1.12.0 (2022-07-08)
===========================
- This release introduces Prometheus library
- Upgraded bundled PCRE to PCRE2 10.40
- Small object optimization for Any and Dynamic::Var (compile-time option, enabled by default)
- All swap operations are noexcept now
- PollSet::add() is mode-cumulative now
- UDPServer now requires explicit starting
- Move semantics for sockets and SocketAddress (compile-time option, disabled by default)
- GH #709: Poco::Dynamic::Var memory leak
- GH #1039 Race condition in AsyncChannel close/log
- GH #1459 Fix Socket::select() epoll and poll implementations
- GH #1687 SQLite Notifier has no table information
- GH #1884 TCPServerDispatcher::run() issue
- GH #2084 LogFile_STD (LogFileImpl) fails to recover from getting out of space
- GH #2085 Crash due to race condition in TCPServerDispatcher
- GH #2091 Integrate windows poll
- GH #2222 Warning when compiling my that's use VarHolder
- GH #2270 HTTPClientSession not supporting binding source address for proxy connect
- GH #2271 HTTPClientSession source IP address
- GH #2285 SQLite::Connector::open() crashes on db file with non existing directory
- GH #2287 Poco::Data::Statement becomes unusable after exception
- GH #2352 Allow setting the socket of SecureSocketImpl to no-blocking
- GH #2386 As of C++11, std::swap is noexcept
- GH #2401 Net::MailMessage::read hangs on missing final multipart boundary
- GH #2457 Poco::Redis after executing "auth" command next command always return "OK"
- GH #2465 Operating system specific thread ID is not available any more in Logger/Formatter
- GH #2470 Can't use Poco::MongoDB::Cursor on aggregation cursor
- GH #2511 Negative precision in NumberFormatter::format()
- GH #2513 Poco::Net::SocketConnector unregistering
- GH #2516 SHA3Engine hard to use with HMACEngine duplicate enhancement
- GH #2521 MySQL Extractor null value extraction
- GH #2538 Poco::Data::Session::connector() returns empty string for MySQL session
- GH #2569 MySQL timestamp
- GH #2576 Add std::chrono support to Timespan
- GH #2590 Zip 64-bit extensions not set
- GH #2614 NTPClient ignores second fractions enhancement
- GH #2619 Decoding URI query parameters incompatible with Spring 5
- GH #2638 Upgrade Windows SDK Used for Building Poco
- GH #2688 Static code analyzer warnings
- GH #2691 MinGW: fatal error: kernelspecs.h: No such file
- GH #2706 [windows bug] pollset WSAPoll with non blocking socket will not report error
- GH #2755 MySQL LONGTEXT
- GH #2821 Poco::Buffer: full on creation
- GH #2849 setPadding does nothing when OpenSSL 1.1.x is used
- GH #2864 SessionImpl begin
- GH #2940 Add vcpkg installation instructions
- GH #2943 Avoid clang 10 -Wimplicit-int-float-conversion warning/error when converting int into float
- GH #2959 Fix percent-encoded fragment modification in Poco::URI
- GH #2980 Memory leaks in Poco::Any
- GH #2986 Once exhausted, Poco::ObjectPool does not lend out returned objects
- GH #3016 MongoDB::Array interface improvements
- GH #3026 HTTPDigestCredentials added support for RFC7616 algorithms
- GH #3039 Poco errors with _DEBUG and NDEBUG
- GH #3052 Fix constness of URI::getPathSegments
- GH #3088 Fix error in find_package example
- GH #3056 Inconsistent behavior ConsoleChannel vs. WindowsConsoleChannel
- GH #3062 Makefile: space(s) following target name will break build (during link)
- GH #3073 libPocoCrypto.so: undefined reference to `pthread_atfork' when linking statically with OpenSSL 1.1
- GH #3104 Publicly expose Poco::Message parameters
- GH #3105 CMake: use GNUInstallDirs
- GH #3175 SharedLibrary::isLoaded() not thread safe
- GH #3195 MinGW also defines __GNUC__
- GH #3240 Task::postNotification possible leak
- GH #3241 Poco::Data::SessionPool change connection timeout
- GH #3251 JSON Serializing NAN
- GH #3253 Arbitrary indent of 2 applied to JSON string objects Var conversion
- GH #3261 Upgrade to PCRE2 latest version
- GH #3283 DatagramSocket does not allow IPV6_V6ONLY
- GH #3296 Add move semantics to Net (sockets and addresses)
- GH #3297 Poco Foundation Fails to Compile With POCO_ENABLE_SOO Defined
- GH #3323 Extend format patterns %T and %I to support native threads
- GH #3342 DB into() does not compile for more than 20 members in a tuple
- GH #3357 Add socket proactor
- GH #3359 Make PollSet::poll() interruptible
- GH #3371 SocketReactor::getNotifier() does not use socket.impl()
- GH #3372 FTPClientSession::activeDataConnection 1.11.0 cannot set specific data port
- GH #3374 No access to padding in Cipher
- GH #3375 PollSet::SocketModeMap poll(const Poco::Timespan& timeout) hasSignaledFDs issue slow down connections
- GH #3378 PollSet function setMode 1.11.0 cause while(1) on windows
- GH #3380 Windows SO_REUSEADDR is neither reliable nor safe
- GH #3384 Always set thread names on POSIX platforms
- GH #3385 IPAddress::tryParse does not work for "::"
- GH #3396 Poco::Data::ODBC - dbEncoding property not used for insert/update
- GH #3399 IPAddress::isLoopback() returns false for IPv4 mapped in IPv6
- GH #3404 Net: make MessageHeader limits configurable
- GH #3415 OpenSSL 3.0 support
- GH #3417 Calling SocketReactor's run() method in a program's main thread yields a lot of null pointer exceptions
- GH #3421 Cannot use HMACEngine with SHA2Engine
- GH #3452 Syslog: Include Facility to Syslog Message
- GH #3453 added facility to SyslogChannel
- GH #3460 LoongArch support
- GH #3481 JSON DataType support for MySQL
- GH #3482 Visual Studio 2022 (v170) missing from buildwin.cmd
- GH #3486 Windows on ARM64 support
- GH #3516 Fix OpenSSL 3.0 deprecated warnings
- GH #3529 Added LocalConfigurationView to only search inside the viewed scope
- GH #3543 Visual Studio Warning C4244
- GH #3558 Race condition in SSLManager
- GH #3561 Add envelope to crypto
- GH #3569 Readded named substring support for regexes
- GH #3580 Rounds very large negative numbers to the incorrect values
- GH #3592 Add 425 / HTTP_TOO_EARLY to HTTPResponse::HTTPStatus
- GH #3598 Socket::available does not always return correct value for UDP
- GH #3602 Add Data::JSONRowFormatter
- GH #3603 Update minimum GCC version information
- GH #3611 VS2022 Arm64 projects missing or do not load
- GH #3613 UDPHandler data race
- GH #3620 MariaDB still uses tx_isolation for transaction isolation unlike MySQL 8+ which uses transaction_isolation
- GH #3624 Upgrade double-conversion to v3.2.0
- GH #3628 PollSet data race
- GH #3629 Event data race
- GH #3633 Redis: Support Authentication
- GH #3635 ConfigurationView and JSON is broken for array access
- GH #3639 Bugcheck: indicate compiler that functions will never return
- GH #3640 fix warning C4717: 'format<vector<any>': recursive on all control paths, function will cause runtime stack overflow
- GH #3641 FifoBuffer.advance method not throw exception when length==0
- GH #3642 Make ParallelSocketReactor thread namable
- GH #3651 TCPserver missing from Net/samples/CMakeLists.txt
- GH #3652 Linking with Foundation on Android gives error
- GH #3655 Socket::select EPOLL implementation returns socket in exceptList when empty list is given
- GH #3658 Support for chunked transfer encoding trailer
- GH #3661 PollSet::add()/update() semantics
- GH #3665 MSVC does not properly recognize std version
Release 1.11.3 (2022-06-12)
===========================

View File

@@ -50,6 +50,9 @@ if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
endif()
# Enable standard installation directories
include(GNUInstallDirs)
# Include some common macros to simpilfy the Poco CMake files
include(PocoMacros)
@@ -75,6 +78,11 @@ if(MSVC)
if((NOT POCO_DISABLE_INTERNAL_OPENSSL) AND (ENABLE_NETSSL OR ENABLE_CRYPTO OR (ENABLE_DATA_MYSQL AND MINGW)))
include(UseEmbeddedOpenSSL)
endif()
if(POCO_SANITIZE_ASAN)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fsanitize=address")
endif()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:__cplusplus")
endif()
option(ENABLE_NETSSL_WIN "Enable NetSSL Windows" OFF)
@@ -164,6 +172,7 @@ option(ENABLE_JSON "Enable JSON" ON)
option(ENABLE_MONGODB "Enable MongoDB" ON)
option(ENABLE_DATA_SQLITE "Enable Data SQlite" ON)
option(ENABLE_REDIS "Enable Redis" ON)
option(ENABLE_PROMETHEUS "Enable Prometheus" ON)
option(ENABLE_PDF "Enable PDF" OFF)
option(ENABLE_UTIL "Enable Util" ON)
option(ENABLE_NET "Enable Net" ON)
@@ -197,9 +206,9 @@ else()
endif()
if(POCO_UNBUNDLED)
message(STATUS "Using external sqlite, zlib, pcre, expat, ...")
message(STATUS "Using external sqlite, zlib, pcre2, expat, ...")
else()
message(STATUS "Using internal sqlite, zlib, pcre, expat, ...")
message(STATUS "Using internal sqlite, zlib, pcre2, expat, ...")
endif()
# Disable fork exec
@@ -234,7 +243,7 @@ if(ENABLE_PAGECOMPILER)
set(ENABLE_UTIL ON CACHE BOOL "Enable Util" FORCE)
endif()
if(ENABLE_MONGODB OR ENABLE_REDIS)
if(ENABLE_MONGODB OR ENABLE_REDIS OR ENABLE_PROMETHEUS)
set(ENABLE_NET ON CACHE BOOL "Enable Net" FORCE)
endif()
@@ -337,6 +346,11 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/Redis AND ENABLE_REDIS)
list(APPEND Poco_COMPONENTS "Redis")
endif()
if(EXISTS ${PROJECT_SOURCE_DIR}/Prometheus AND ENABLE_PROMETHEUS)
add_subdirectory(Prometheus)
list(APPEND Poco_COMPONENTS "Prometheus")
endif()
if(EXISTS ${PROJECT_SOURCE_DIR}/PDF AND ENABLE_PDF)
add_subdirectory(PDF)
list(APPEND Poco_COMPONENTS "PDF")
@@ -436,7 +450,9 @@ add_custom_target(uninstall
#############################################################
# Enable packaging
include(InstallRequiredSystemLibraries)
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
include(InstallRequiredSystemLibraries)
endif()
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Poco Libraries")
set(CPACK_PACKAGE_VENDOR "Applied Informatics Software Engineering GmbH")
@@ -462,7 +478,7 @@ write_basic_package_version_file(
if(WIN32)
set(PocoConfigPackageLocation "cmake")
else()
set(PocoConfigPackageLocation "lib${LIB_SUFFIX}/cmake/${PROJECT_NAME}")
set(PocoConfigPackageLocation "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
endif()
configure_file(cmake/${PROJECT_NAME}Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake" @ONLY)
@@ -477,7 +493,7 @@ install(
)
if(POCO_UNBUNDLED)
install(FILES cmake/FindPCRE.cmake
install(FILES cmake/FindPCRE2.cmake
DESTINATION "${PocoConfigPackageLocation}")
install(FILES cmake/V39/FindEXPAT.cmake
DESTINATION "${PocoConfigPackageLocation}/V39")

View File

@@ -25,7 +25,7 @@ target_link_libraries(CppParser PUBLIC Poco::Foundation)
target_include_directories(CppParser
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)

View File

@@ -9,6 +9,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\Test
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug_shared|ARM64 = debug_shared|ARM64
release_shared|ARM64 = release_shared|ARM64
debug_static_mt|ARM64 = debug_static_mt|ARM64
release_static_mt|ARM64 = release_static_mt|ARM64
debug_static_md|ARM64 = debug_static_md|ARM64
release_static_md|ARM64 = release_static_md|ARM64
debug_shared|Win32 = debug_shared|Win32
release_shared|Win32 = release_shared|Win32
debug_static_mt|Win32 = debug_static_mt|Win32
@@ -23,6 +29,24 @@ Global
release_static_md|x64 = release_static_md|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.Build.0 = release_shared|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Build.0 = debug_shared|Win32
{C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
@@ -59,6 +83,24 @@ Global
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.ActiveCfg = release_static_md|x64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Build.0 = release_static_md|x64
{C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Deploy.0 = release_static_md|x64
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.Build.0 = release_shared|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Build.0 = debug_shared|Win32
{C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Deploy.0 = debug_shared|Win32

View File

@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="debug_shared|ARM64">
<Configuration>debug_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_shared|Win32">
<Configuration>debug_shared</Configuration>
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
<Configuration>debug_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|ARM64">
<Configuration>debug_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|Win32">
<Configuration>debug_static_md</Configuration>
<Platform>Win32</Platform>
@@ -17,6 +25,10 @@
<Configuration>debug_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|ARM64">
<Configuration>debug_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|Win32">
<Configuration>debug_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -25,6 +37,10 @@
<Configuration>debug_static_mt</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|ARM64">
<Configuration>release_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|Win32">
<Configuration>release_shared</Configuration>
<Platform>Win32</Platform>
@@ -33,6 +49,10 @@
<Configuration>release_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|ARM64">
<Configuration>release_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|Win32">
<Configuration>release_static_md</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +61,10 @@
<Configuration>release_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|ARM64">
<Configuration>release_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|Win32">
<Configuration>release_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -51,6 +75,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<ProjectName>CppParser</ProjectName>
<ProjectGuid>{C77B9D92-EC91-11DA-A4CE-005056C00008}</ProjectGuid>
<RootNamespace>CppParser</RootNamespace>
@@ -87,6 +112,36 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
@@ -137,6 +192,24 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
@@ -157,7 +230,13 @@
</ImportGroup>
<PropertyGroup Label="UserMacros"/>
<PropertyGroup>
<_ProjectFileVersion>15.0.28307.799</_ProjectFileVersion>
<_ProjectFileVersion>17.0.32505.173</_ProjectFileVersion>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">PocoCppParserA64d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">PocoCppParsermdd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">PocoCppParsermtd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">PocoCppParserA64</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">PocoCppParsermd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">PocoCppParsermt</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">PocoCppParserd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">PocoCppParsermdd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">PocoCppParsermtd</TargetName>
@@ -171,6 +250,32 @@
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">PocoCppParsermd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">PocoCppParsermt</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<OutDir>..\binA64\</OutDir>
<IntDir>objA64\CppParser\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<OutDir>..\binA64\</OutDir>
<IntDir>objA64\CppParser\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\CppParser\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\CppParser\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\CppParser\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\CppParser\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<OutDir>..\bin\</OutDir>
<IntDir>obj\CppParser\$(Configuration)\</IntDir>
@@ -223,6 +328,164 @@
<OutDir>..\lib64\</OutDir>
<IntDir>obj64\CppParser\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<OutputFile>..\binA64\PocoCppParserA64d.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>..\binA64\PocoCppParserA64d.pdb</ProgramDatabaseFile>
<AdditionalLibraryDirectories>..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<ImportLibrary>..\libA64\PocoCppParserd.lib</ImportLibrary>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<OutputFile>..\binA64\PocoCppParserA64.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>false</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<ImportLibrary>..\libA64\PocoCppParser.lib</ImportLibrary>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<ProgramDataBaseFileName>..\libA64\PocoCppParsermtd.pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoCppParsermtd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoCppParsermt.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<ProgramDataBaseFileName>..\libA64\PocoCppParsermdd.pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoCppParsermdd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoCppParsermd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
@@ -615,12 +878,16 @@
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">true</ExcludedFromBuild>
</ResourceCompile>

View File

@@ -34,7 +34,7 @@ class CppParser_API Attributes
public:
typedef std::map<std::string, std::string> AttrMap;
typedef AttrMap::const_iterator Iterator;
Attributes();
/// Creates the Attributes object.
@@ -46,15 +46,15 @@ public:
Attributes& operator = (const Attributes& attrs);
/// Assignment operator.
bool has(const std::string& name) const;
/// Returns true if an attribute with the given name exists.
std::string getString(const std::string& name) const;
/// Returns the attribute's value as a string.
///
/// Throws a Poco::NotFoundException if the attribute does not exist.
std::string getString(const std::string& name, const std::string& defaultValue) const;
/// Returns the attribute's value as a string, if it exists.
/// Returns the defaultValue if the attribute does not exist.
@@ -64,7 +64,7 @@ public:
///
/// Throws a Poco::NotFoundException if the attribute does not exist.
/// Throws a Poco::SyntaxException if the stored value is not an integer.
int getInt(const std::string& name, int defaultValue) const;
/// Returns the attribute's value as an integer, if it exists.
/// Returns the defaultValue if the attribute does not exist.
@@ -74,7 +74,7 @@ public:
bool getBool(const std::string& name) const;
/// Returns the attribute's value as a boolean.
/// The returned value is 'true', iff the stored value is not "false".
///
///
/// Throws a Poco::NotFoundException if the attribute does not exist.
bool getBool(const std::string& name, bool defaultValue) const;
@@ -83,17 +83,17 @@ public:
void set(const std::string& name, const std::string& value);
/// Sets the value of an attribute.
void remove(const std::string& name);
/// Removes the attribute with the given name.
/// Does nothing if the attribute does not exist.
const std::string& operator [] (const std::string& name) const;
std::string& operator [] (const std::string& name);
std::string& operator [] (const std::string& name);
Iterator begin() const;
Iterator end() const;
void clear();
/// Clears all attributes.

View File

@@ -34,13 +34,13 @@ class CppParser_API AttributesParser
/// structs/classes, functions, types, etc. can be annotated
/// with attributes.
///
/// Attributes always come immediately before the symbol that
/// Attributes always come immediately before the symbol that
/// is being annotated, and are written inside special comments
/// with the syntax:
/// //@ <attrDecl>[,<attrDec>...]
/// where <attrDecl> is
/// <name>[=<value>]
/// <name> is a valid C++ identifier, or two identifiers separated by
/// <name> is a valid C++ identifier, or two identifiers separated by
/// a period (struct accessor notation).
/// <value> is a string, integer, identifier, bool literal, or a complex value
/// in the form
@@ -67,7 +67,7 @@ protected:
static bool isOperator(const Poco::Token* pToken, int kind);
static bool isLiteral(const Poco::Token* pToken);
static bool isEOF(const Poco::Token* pToken);
private:
Attributes& _attrs;
Tokenizer _tokenizer;

View File

@@ -48,7 +48,7 @@ public:
FN_DEFAULT = 512, /// The function is default.
FN_DELETE = 1024 /// The function has been deleted.
};
typedef std::vector<Parameter*> Parameters;
typedef Parameters::const_iterator Iterator;
@@ -68,51 +68,51 @@ public:
Iterator end() const;
/// Returns an iterator for iterating over the Function's Parameter's.
void makeInline();
/// Sets the FN_INLINE flag.
void makeConst();
/// Sets the FN_CONST flag.
void makePureVirtual();
/// Sets the FN_PURE_VIRTUAL flag.
void makeFinal();
/// Sets the FN_FINAL flag.
void makeOverride();
/// Sets the FN_OVERRIDE flag.
void makeNoexcept();
/// Sets the FN_NOEXCEPT flag.
void makeDefault();
/// Sets the FN_DEFAULT flag.
void makeDelete();
/// Sets the FN_DELETE flag.
int flags() const;
/// Returns the function's flags.
bool isConstructor() const;
/// Returns true iff the function is a constructor.
bool isDestructor() const;
/// Returns true iff the function is a destructor.
bool isMethod() const;
/// Returns true iff the function is a method (it's part of
/// a Struct and it's neither a constructor nor a destructor).
bool isFunction() const;
/// Returns true iff the function is not a member of a class
/// (a freestanding function).
bool isConst() const;
/// Returns true iff the method is const.
bool isDefault() const;
/// Returns true iff the method has a default implementation.
@@ -121,20 +121,20 @@ public:
int countParameters() const;
/// Returns the number of parameters.
std::string signature() const;
/// Returns the signature of the function.
bool isVirtual() const;
/// Returns true if the method is virtual. Also examines base
/// classes to check for a virtual function with the same
/// signature.
Function* getOverridden() const;
/// If the function is virtual and overrides a function in a
/// base class, the base class function is returned.
/// Otherwise, null is returned.
Symbol::Kind kind() const;
std::string toString() const;

View File

@@ -37,7 +37,7 @@ public:
typedef SymbolTable::const_iterator Iterator;
typedef std::map<std::string, std::string> AliasMap;
typedef std::vector<std::string> NameSpaceVec;
NameSpace();
/// Creates the NameSpace.
@@ -46,56 +46,56 @@ public:
~NameSpace();
/// Destroys the NameSpace.
void addSymbol(Symbol* pSymbol);
/// Adds a symbol to the namespace.
void importSymbol(const std::string& fullName);
/// Imports a symbol from another namespace (using <symbol>).
void importNameSpace(const std::string& nameSpace);
/// Imports a namespace (using namespace <namespace>).
Iterator begin() const;
/// Returns an iterator for iterating over the NameSpace's Symbol's.
Iterator end() const;
/// Returns an iterator for iterating over the NameSpace's Symbol's.
Symbol* lookup(const std::string& name) const;
/// Looks up the given name in the symbol table
/// and returns the corresponding symbol, or null
/// if no symbol can be found. The name can include
/// a namespace.
static NameSpace* root();
/// Returns the root namespace. Never delete this one!
void nameSpaces(SymbolTable& table) const;
/// Fills the symbol table with all namespaces.
void typeDefs(SymbolTable& table) const;
/// Fills the symbol table with all type definitions.
void typeAliases(SymbolTable& table) const;
/// Fills the symbol table with all type alias (using) definitions.
void enums(SymbolTable& table) const;
/// Fills the symbol table with all enums.
void classes(SymbolTable& table) const;
/// Fills the symbol table with all classes and structs.
void functions(SymbolTable& table) const;
/// Fills the symbol table with all functions.
void variables(SymbolTable& table) const;
/// Fills the symbol table with all variables.
const AliasMap& importedSymbols() const;
/// Returns a const reference to a SymbolTable containing all
/// imported symbols.
const NameSpaceVec& importedNameSpaces() const;
/// Returns a vector containing all imported namespaces.
@@ -128,7 +128,7 @@ inline const NameSpace::AliasMap& NameSpace::importedSymbols() const
return _importedSymbols;
}
inline const NameSpace::NameSpaceVec& NameSpace::importedNameSpaces() const
{
return _importedNameSpaces;

View File

@@ -82,7 +82,7 @@ protected:
const Poco::Token* parseClassMembers(const Poco::Token* pNext, Struct* pClass);
const Poco::Token* parseAccess(const Poco::Token* pNext);
const Poco::Token* parseIdentifier(const Poco::Token* pNext, std::string& id);
void addSymbol(Symbol* pSymbol, int lineNumber, bool addGST = true);
void pushNameSpace(NameSpace* pNameSpace, int lineNumber, bool addGST = true);
void popNameSpace();

View File

@@ -42,7 +42,7 @@ public:
FN_TEMPLATE_SPECIALIZATION = 4,
FN_FINAL = 8
};
struct Base
{
Symbol::Access access;
@@ -50,7 +50,7 @@ public:
std::string name;
Struct* pClass;
};
typedef std::vector<Base> BaseClasses;
typedef BaseClasses::const_iterator BaseIterator;
typedef std::vector<Struct*> StructVec;
@@ -67,13 +67,13 @@ public:
void addBase(const std::string&, Symbol::Access access, bool isVirtual);
/// Adds a base class.
BaseIterator baseBegin() const;
/// Returns an iterator for iterating over all base classes.
BaseIterator baseEnd() const;
/// Returns an iterator for iterating over all base classes.
void fixupBases();
/// Adds pointers for all base classes.
@@ -88,13 +88,13 @@ public:
const std::string& declaration() const;
/// Returns the declaration.
int flags() const;
/// Returns the struct's flags.
void makeInline();
/// Changes the class to a inline class, i.e. definition and implementation are hidden in a cpp file.
void makeFinal();
/// Makes the class final.
@@ -106,39 +106,39 @@ public:
void constructors(Functions& functions) const;
/// Returns all constructors, sorted by their parameter count.
Function* destructor() const;
/// Returns the destructor, or NULL if no
/// destructor is defined.
void methods(Symbol::Access access, Functions& functions) const;
/// Returns all functions with the given access.
void inheritedMethods(FunctionSet& functions) const;
/// Returns all inherited methods.
void bases(std::set<std::string>& bases) const;
/// Returns all base classes.
void derived(StructSet& derived) const;
/// Returns all derived classes.
/// Returns all derived classes.
Function* findFunction(const std::string& signature) const;
/// Finds a function with the given signature.
bool hasVirtualDestructor() const;
/// Returns true if the class CppParser_API or one if its base classes
/// has a virtual destructor.
bool isClass() const;
/// Returns true iff the struct was declared as class.
bool isDerived() const;
/// Returns true iff the struct or class is derived from another struct or class.
Symbol::Kind kind() const;
std::string toString() const;
private:
std::string _decl;
BaseClasses _bases;

View File

@@ -37,9 +37,9 @@ public:
public:
std::string beginNameSpaceDecl; // contains either $(NS)_BEGIN or the namespace x { decl
std::string endNameSpaceDecl; // contains either $(NS)_END or the closing brackets }
std::vector<std::string> classDecls; // contains strings of the form "class X;"
std::vector<std::string> classDecls; // contains strings of the form "class X;"
};
static void parse(const std::string& file, NameSpace::SymbolTable& st, const std::string& exec, const std::string& options, const std::string& path);
/// Preprocesses and parses the file. The resulting symboltable has base class references already fixed,

View File

@@ -37,13 +37,13 @@ public:
VAR_VOLATILE = 4, /// The variable is volatile.
VAR_CONST = 8 /// The variable is const.
};
Variable(const std::string& decl, NameSpace* pNameSpace);
/// Creates the Variable.
~Variable();
/// Destroys the Variable.
int flags() const;
/// Returns the variable's flags.
@@ -57,7 +57,7 @@ public:
///
/// Example: a type const std::string& -> std::string, a type const std::string* returns std::string
private:
int _flags;
bool _isPointer;

View File

@@ -48,13 +48,13 @@ Attributes& Attributes::operator = (const Attributes& attrs)
return *this;
}
bool Attributes::has(const std::string& name) const
{
return _map.find(name) != _map.end();
}
std::string Attributes::getString(const std::string& name) const
{
AttrMap::const_iterator it = _map.find(name);
@@ -64,7 +64,7 @@ std::string Attributes::getString(const std::string& name) const
throw Poco::NotFoundException(name);
}
std::string Attributes::getString(const std::string& name, const std::string& defaultValue) const
{
AttrMap::const_iterator it = _map.find(name);
@@ -84,7 +84,7 @@ int Attributes::getInt(const std::string& name) const
throw Poco::NotFoundException(name);
}
int Attributes::getInt(const std::string& name, int defaultValue) const
{
AttrMap::const_iterator it = _map.find(name);

View File

@@ -88,7 +88,7 @@ const Token* AttributesParser::parseAttribute(const Token* pNext)
const Token* AttributesParser::parseComplexAttribute(const Token* pNext, const std::string& id)
{
poco_assert_dbg (isOperator(pNext, OperatorToken::OP_OPENBRACE));
pNext = next();
std::string oldId(_id);
if (!_id.empty())
@@ -103,7 +103,7 @@ const Token* AttributesParser::parseComplexAttribute(const Token* pNext, const s
pNext = next();
else
throw SyntaxException("bad attribute declaration");
return pNext;
}

View File

@@ -111,13 +111,13 @@ void Function::makeFinal()
_flags |= FN_FINAL;
}
void Function::makeOverride()
{
_flags |= FN_OVERRIDE;
}
void Function::makeNoexcept()
{
_flags |= FN_NOEXCEPT;
@@ -141,7 +141,7 @@ bool Function::isConstructor() const
return name() == nameSpace()->name();
}
bool Function::isDestructor() const
{
return name()[0] == '~';
@@ -201,7 +201,7 @@ std::string Function::signature() const
return signature;
}
bool Function::isVirtual() const
{
if (_flags & FN_VIRTUAL)

View File

@@ -49,7 +49,7 @@ NameSpace::~NameSpace()
void NameSpace::addSymbol(Symbol* pSymbol)
{
poco_check_ptr (pSymbol);
_symbols.insert(SymbolTable::value_type(pSymbol->name(), pSymbol));
}
@@ -65,7 +65,7 @@ void NameSpace::importSymbol(const std::string& fullName)
}
}
void NameSpace::importNameSpace(const std::string& nameSpace)
{
_importedNameSpaces.push_back(nameSpace);
@@ -94,7 +94,7 @@ Symbol* NameSpace::lookup(const std::string& name) const
Symbol* NameSpace::lookup(const std::string& name, std::set<const NameSpace*>& alreadyVisited) const
{
Symbol* pSymbol = 0;
if (name.empty())
return pSymbol;
@@ -103,12 +103,12 @@ Symbol* NameSpace::lookup(const std::string& name, std::set<const NameSpace*>& a
std::string head;
std::string tail;
splitName(name, head, tail);
alreadyVisited.insert(this);
bool currentNSInserted = true;
if (head.empty())
if (head.empty())
{
alreadyVisited.insert(this);
return root()->lookup(tail, alreadyVisited);
@@ -161,13 +161,13 @@ void NameSpace::nameSpaces(SymbolTable& table) const
extract(Symbol::SYM_NAMESPACE, table);
}
void NameSpace::typeDefs(SymbolTable& table) const
{
extract(Symbol::SYM_TYPEDEF, table);
}
void NameSpace::typeAliases(SymbolTable& table) const
{
extract(Symbol::SYM_TYPEALIAS, table);
@@ -179,19 +179,19 @@ void NameSpace::enums(SymbolTable& table) const
extract(Symbol::SYM_ENUM, table);
}
void NameSpace::classes(SymbolTable& table) const
{
extract(Symbol::SYM_STRUCT, table);
}
void NameSpace::functions(SymbolTable& table) const
{
extract(Symbol::SYM_FUNCTION, table);
}
void NameSpace::variables(SymbolTable& table) const
{
extract(Symbol::SYM_VARIABLE, table);
@@ -226,7 +226,7 @@ void NameSpace::splitName(const std::string& name, std::string& head, std::strin
head.assign(name, 0, pos);
pos += 2;
poco_assert (pos < name.length());
tail.assign(name, pos, name.length() - pos);
tail.assign(name, pos, name.length() - pos);
}
else head = name;
}

View File

@@ -62,7 +62,7 @@ void Struct::addBase(const std::string& name, Symbol::Access access, bool isVirt
_bases.push_back(base);
}
Struct::BaseIterator Struct::baseBegin() const
{
return _bases.begin();
@@ -78,7 +78,7 @@ Struct::BaseIterator Struct::baseEnd() const
void Struct::addDerived(Struct* pClass)
{
poco_check_ptr (pClass);
_derived.push_back(pClass);
}

View File

@@ -25,7 +25,7 @@ namespace CppParser {
Tokenizer::Tokenizer(std::istream& istr):
StreamTokenizer(istr)
StreamTokenizer(istr)
{
addToken(new OperatorToken);
addToken(new IdentifierToken);

View File

@@ -195,14 +195,14 @@ std::string Utility::preprocessFile(const std::string& file, const std::string&
newPath += path;
Environment::set("PATH", path);
}
ProcessHandle proc = Process::launch(exec, args);
ProcessHandle proc = Process::launch(exec, args);
int rc = Process::wait(proc);
if (rc != 0)
{
throw Poco::RuntimeException("Failed to process file");
}
return pp.getFileName();
}
@@ -293,7 +293,7 @@ std::string replace(const std::string& input, const std::string& oldToken, const
start = pos + oldToken.length();
}
while (pos != std::string::npos);
return result;
}

View File

@@ -39,10 +39,10 @@ Variable::Variable(const std::string& decl, NameSpace* pNameSpace):
std::size_t pos = decl.rfind(name());
std::string tmp = decl.substr(0, pos);
tmp = Poco::trim(tmp);
pos = tmp.rfind("*");
_isPointer = (pos == (tmp.size()-1));
Poco::replaceInPlace(tmp, "static ", "");
Poco::replaceInPlace(tmp, "mutable ", "");
Poco::replaceInPlace(tmp, "volatile ", "");
@@ -53,7 +53,7 @@ Variable::Variable(const std::string& decl, NameSpace* pNameSpace):
tmp = tmp.substr(6);
if (tmp.find("const\t") == 0)
tmp = tmp.substr(6);
std::size_t rightCut = tmp.size();
while (rightCut > 0 && (tmp[rightCut-1] == '&' || tmp[rightCut-1] == '*' || tmp[rightCut-1] == '\t' || tmp[rightCut-1] == ' '))
--rightCut;

View File

@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="debug_shared|ARM64">
<Configuration>debug_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_shared|Win32">
<Configuration>debug_shared</Configuration>
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
<Configuration>debug_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|ARM64">
<Configuration>debug_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|Win32">
<Configuration>debug_static_md</Configuration>
<Platform>Win32</Platform>
@@ -17,6 +25,10 @@
<Configuration>debug_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|ARM64">
<Configuration>debug_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|Win32">
<Configuration>debug_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -25,6 +37,10 @@
<Configuration>debug_static_mt</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|ARM64">
<Configuration>release_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|Win32">
<Configuration>release_shared</Configuration>
<Platform>Win32</Platform>
@@ -33,6 +49,10 @@
<Configuration>release_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|ARM64">
<Configuration>release_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|Win32">
<Configuration>release_static_md</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +61,10 @@
<Configuration>release_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|ARM64">
<Configuration>release_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|Win32">
<Configuration>release_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -51,6 +75,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<ProjectName>TestSuite</ProjectName>
<ProjectGuid>{C79112BD-EC91-11DA-A4CE-005056C00008}</ProjectGuid>
<RootNamespace>TestSuite</RootNamespace>
@@ -87,6 +112,36 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
@@ -137,6 +192,24 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
@@ -157,7 +230,13 @@
</ImportGroup>
<PropertyGroup Label="UserMacros"/>
<PropertyGroup>
<_ProjectFileVersion>15.0.28307.799</_ProjectFileVersion>
<_ProjectFileVersion>17.0.32505.173</_ProjectFileVersion>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">TestSuited</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">TestSuited</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">TestSuited</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">TestSuite</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">TestSuite</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">TestSuite</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">TestSuited</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">TestSuited</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">TestSuited</TargetName>
@@ -171,6 +250,36 @@
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">TestSuite</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">TestSuite</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<OutDir>binA64\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<OutDir>binA64\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<OutDir>binA64\static_mt\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<OutDir>binA64\static_mt\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<OutDir>binA64\static_md\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<OutDir>binA64\static_md\</OutDir>
<IntDir>objA64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<OutDir>bin\</OutDir>
<IntDir>obj\TestSuite\$(Configuration)\</IntDir>
@@ -231,6 +340,189 @@
<IntDir>obj64\TestSuite\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnitd.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\TestSuited.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>binA64\TestSuited.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnit.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\TestSuite.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnitmtd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_mt\TestSuited.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>binA64\static_mt\TestSuited.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnitmt.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_mt\TestSuite.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnitmdd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_md\TestSuited.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>binA64\static_md\TestSuited.pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>CppUnitmd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>binA64\static_md\TestSuite.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>

View File

@@ -18,10 +18,15 @@ target_link_libraries(CppUnit PUBLIC Poco::Foundation)
target_include_directories(CppUnit
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
if(WIN32)
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_definitions(CppUnit PUBLIC POCO_NO_AUTOMATIC_LIBS)
endif()
endif()
if(NOT BUILD_SHARED_LIBS)
target_compile_definitions(CppUnit

View File

@@ -55,7 +55,6 @@
<ProjectGuid>{138BB448-808A-4FE5-A66D-78D1F8770F59}</ProjectGuid>
<RootNamespace>CppUnit</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="Configuration">

View File

@@ -55,7 +55,6 @@
<ProjectGuid>{138BB448-808A-4FE5-A66D-78D1F8770F59}</ProjectGuid>
<RootNamespace>CppUnit</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="Configuration">

View File

@@ -55,7 +55,6 @@
<ProjectGuid>{138BB448-808A-4FE5-A66D-78D1F8770F59}</ProjectGuid>
<RootNamespace>CppUnit</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="Configuration">

View File

@@ -4,6 +4,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUnit", "CppUnit_vs170.vc
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug_shared|ARM64 = debug_shared|ARM64
release_shared|ARM64 = release_shared|ARM64
debug_static_mt|ARM64 = debug_static_mt|ARM64
release_static_mt|ARM64 = release_static_mt|ARM64
debug_static_md|ARM64 = debug_static_md|ARM64
release_static_md|ARM64 = release_static_md|ARM64
debug_shared|Win32 = debug_shared|Win32
release_shared|Win32 = release_shared|Win32
debug_static_mt|Win32 = debug_static_mt|Win32
@@ -18,6 +24,24 @@ Global
release_static_md|x64 = release_static_md|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|ARM64.Build.0 = release_shared|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.Build.0 = debug_shared|Win32
{138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.Deploy.0 = debug_shared|Win32

View File

@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="debug_shared|ARM64">
<Configuration>debug_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_shared|Win32">
<Configuration>debug_shared</Configuration>
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
<Configuration>debug_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|ARM64">
<Configuration>debug_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|Win32">
<Configuration>debug_static_md</Configuration>
<Platform>Win32</Platform>
@@ -17,6 +25,10 @@
<Configuration>debug_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|ARM64">
<Configuration>debug_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|Win32">
<Configuration>debug_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -25,6 +37,10 @@
<Configuration>debug_static_mt</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|ARM64">
<Configuration>release_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|Win32">
<Configuration>release_shared</Configuration>
<Platform>Win32</Platform>
@@ -33,6 +49,10 @@
<Configuration>release_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|ARM64">
<Configuration>release_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|Win32">
<Configuration>release_static_md</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +61,10 @@
<Configuration>release_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|ARM64">
<Configuration>release_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|Win32">
<Configuration>release_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -51,6 +75,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<ProjectName>CppUnit</ProjectName>
<ProjectGuid>{138BB448-808A-4FE5-A66D-78D1F8770F59}</ProjectGuid>
<RootNamespace>CppUnit</RootNamespace>
@@ -87,6 +112,36 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
@@ -137,6 +192,24 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
@@ -157,7 +230,13 @@
</ImportGroup>
<PropertyGroup Label="UserMacros"/>
<PropertyGroup>
<_ProjectFileVersion>15.0.28307.799</_ProjectFileVersion>
<_ProjectFileVersion>17.0.32505.173</_ProjectFileVersion>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">CppUnitA64d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">CppUnitmdd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">CppUnitmtd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">CppUnitA64</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">CppUnitmd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">CppUnitmt</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">CppUnitd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">CppUnitmdd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">CppUnitmtd</TargetName>
@@ -171,6 +250,32 @@
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">CppUnitmd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">CppUnitmt</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<OutDir>..\binA64\</OutDir>
<IntDir>objA64\CppUnit\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<OutDir>..\binA64\</OutDir>
<IntDir>objA64\CppUnit\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\CppUnit\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\CppUnit\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\CppUnit\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\CppUnit\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<OutDir>..\bin\</OutDir>
<IntDir>obj\CppUnit\$(Configuration)\</IntDir>
@@ -223,6 +328,164 @@
<OutDir>..\lib64\</OutDir>
<IntDir>obj64\CppUnit\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;POCO_NO_AUTOMATIC_LIBS;CppUnit_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<OutputFile>..\binA64\CppUnitA64d.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>..\binA64\CppUnitA64d.pdb</ProgramDatabaseFile>
<AdditionalLibraryDirectories>..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<ImportLibrary>..\libA64\CppUnitd.lib</ImportLibrary>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;POCO_NO_AUTOMATIC_LIBS;CppUnit_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<OutputFile>..\binA64\CppUnitA64.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>false</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<ImportLibrary>..\libA64\CppUnit.lib</ImportLibrary>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<ProgramDataBaseFileName>..\libA64\CppUnitmtd.pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\CppUnitmtd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\CppUnitmt.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<ProgramDataBaseFileName>..\libA64\CppUnitmdd.pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\CppUnitmdd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\CppUnitmd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>

View File

@@ -15,14 +15,14 @@
<P>CppUnit is a simple unit test framework for C++. It is a port from JUnit, a testing framework for Java, developed by Kent Beck and Erich Gamma. </P>
<H3>Contents</H3>
<PRE>README.html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this file
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the source code
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; framework&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the testing framework
&#9;&#9;extensions&#9;some framework extension classes
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textui&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a command line interface to run tests
&#9;&#9;extensions&#9;some framework extension classes
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textui&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a command line interface to run tests
&nbsp;&nbsp;&nbsp;&nbsp;ms&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; code for a Microsoft specific TestRunner
&nbsp;&nbsp;&nbsp;&nbsp;samples&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; some example test cases and extensions to the framework
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; multicaster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a sample illustrating a publish/subscribe
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; multicaster&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a sample illustrating a publish/subscribe
&#9;&#9;&#9;&#9;multicaster under test
&nbsp;&nbsp;&nbsp; doc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; documentation</PRE>
<H3>Installation</H3>

View File

@@ -17,7 +17,7 @@
<P>Subclass the TestCase class. Override the method "runTest ()". When you want to check a value, call "assert (bool)" and pass in an expression that is true if the test succeeds. </P>
<P>For example, to test the equality comparison for a Complex number class, write:</P>
<TT><PRE>&#9;class ComplexNumberTest : public TestCase {&nbsp;
&#9;public:
&#9;public:
ComplexNumberTest (string name) : TestCase (name) {}
void runTest () {
assert (Complex (10, 1) == Complex (10, 1));
@@ -59,7 +59,7 @@
&#9;void&#9;&#9;setUp () {
&#9;&#9;&#9; m_10_1 = new Complex (10, 1);
&#9;&#9;&#9; m_1_1 = new Complex (1, 1);
&#9;&#9;&#9; m_11_2 = new Complex (11, 2);
&#9;&#9;&#9; m_11_2 = new Complex (11, 2);
}
&#9;void&#9;&#9;tearDown () {
&#9;&#9;&#9; delete m_10_1, delete m_1_1, delete m_11_2;
@@ -83,7 +83,7 @@
&#9;void&#9;&#9;setUp () {
&#9;&#9;&#9; m_10_1 = new Complex (10, 1);
&#9;&#9;&#9; m_1_1 = new Complex (1, 1);
&#9;&#9;&#9; m_11_2 = new Complex (11, 2);
&#9;&#9;&#9; m_11_2 = new Complex (11, 2);
}
&#9;void&#9;&#9;tearDown () {
&#9;&#9;&#9; delete m_10_1, delete m_1_1, delete m_11_2;

View File

@@ -20,8 +20,8 @@ class CppUnit_API CppUnitException: public std::exception
/// descriptive strings through its what() method
{
public:
CppUnitException(const std::string& message = "",
long lineNumber = CPPUNIT_UNKNOWNLINENUMBER,
CppUnitException(const std::string& message = "",
long lineNumber = CPPUNIT_UNKNOWNLINENUMBER,
const std::string& fileName = CPPUNIT_UNKNOWNFILENAME);
CppUnitException(const std::string& message,
long lineNumber,
@@ -110,26 +110,26 @@ inline const char* CppUnitException::what() const throw ()
inline long CppUnitException::lineNumber() const
{
return _lineNumber;
return _lineNumber;
}
inline long CppUnitException::data1LineNumber() const
{
return _data1lineNumber;
return _data1lineNumber;
}
inline long CppUnitException::data2LineNumber() const
{
return _data2lineNumber;
return _data2lineNumber;
}
// The file in which the error occurred
inline const std::string& CppUnitException::fileName() const
{
return _fileName;
return _fileName;
}

View File

@@ -45,11 +45,11 @@ namespace CppUnit {
*
* see TestSuite
*/
template <class ClassUnderTest>
template <class ClassUnderTest>
class Orthodox: public TestCase
{
public:
Orthodox(): TestCase("Orthodox")
Orthodox(): TestCase("Orthodox")
{
}
@@ -60,7 +60,7 @@ protected:
// Run an orthodoxy test
template <class ClassUnderTest>
template <class ClassUnderTest>
void Orthodox<ClassUnderTest>::runTest()
{
// make sure we have a default constructor
@@ -90,7 +90,7 @@ void Orthodox<ClassUnderTest>::runTest()
// Exercise a call
template <class ClassUnderTest>
template <class ClassUnderTest>
ClassUnderTest Orthodox<ClassUnderTest>::call(ClassUnderTest object)
{
return object;

View File

@@ -29,7 +29,7 @@ class CppUnit_API RepeatedTest: public TestDecorator
REFERENCEOBJECT (RepeatedTest)
public:
RepeatedTest(Test* test, int timesRepeat): TestDecorator (test), _timesRepeat (timesRepeat)
RepeatedTest(Test* test, int timesRepeat): TestDecorator (test), _timesRepeat (timesRepeat)
{
}
@@ -59,7 +59,7 @@ inline std::string RepeatedTest::toString()
// Runs a repeated test
inline void RepeatedTest::run(TestResult *result)
{
for (int n = 0; n < _timesRepeat; n++)
for (int n = 0; n < _timesRepeat; n++)
{
if (result->shouldStop())
break;

View File

@@ -10,6 +10,7 @@
#include "CppUnit/CppUnit.h"
#include <string>
#include <vector>
#include <functional>
namespace CppUnit {
@@ -33,8 +34,10 @@ public:
};
public:
using Callback = std::function<std::string(const std::exception&)>;
virtual ~Test() = 0;
virtual void run(TestResult* result) = 0;
virtual void run(TestResult* result, const Callback& callback = nullptr) = 0;
virtual int countTestCases() const = 0;
virtual std::string toString() const = 0;
virtual Test::Type getType() const = 0;
@@ -43,7 +46,7 @@ public:
const std::vector<std::string>& setup() const;
private:
std::vector<std::string> _setup;
std::vector<std::string> _setup;
};
@@ -53,7 +56,7 @@ inline Test::~Test()
// Runs a test and collects its result in a TestResult instance.
inline void Test::run(TestResult *result)
inline void Test::run(TestResult *result, const Callback& callback)
{
}
@@ -61,7 +64,7 @@ inline void Test::run(TestResult *result)
// Counts the number of test cases that will be run by this test.
inline int Test::countTestCases() const
{
return 0;
return 0;
}

View File

@@ -90,7 +90,7 @@ public:
TestCase(const std::string& Name, Test::Type testType = Test::Normal);
~TestCase();
virtual void run(TestResult* result);
virtual void run(TestResult* result, const Test::Callback& callback = nullptr);
virtual TestResult* run();
virtual int countTestCases() const;
virtual std::string toString() const;
@@ -124,10 +124,17 @@ protected:
long data2LineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
void assertEquals(long expected,
long actual,
template <typename T1, typename T2,
typename = typename std::enable_if<std::is_arithmetic<T1>::value, T1>::type,
typename = typename std::enable_if<std::is_arithmetic<T2>::value, T2>::type>
void assertEquals(T1 expected,
T2 actual,
long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME)
{
if (expected != actual)
assertImplementation(false, notEqualsMessage(expected, actual), lineNumber, fileName);
}
void assertEquals(double expected,
double actual,
@@ -140,13 +147,24 @@ protected:
long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
void assertEquals(const char* expected,
const std::string& actual,
long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
void assertEquals(const void* expected,
const void* actual,
long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
std::string notEqualsMessage(long expected, long actual);
std::string notEqualsMessage(double expected, double actual);
template <typename T1, typename T2,
typename = typename std::enable_if<std::is_arithmetic<T1>::value, T1>::type,
typename = typename std::enable_if<std::is_arithmetic<T2>::value, T2>::type>
std::string notEqualsMessage(T1 expected, T2 actual)
{
return "expected: " + std::to_string(expected) + " but was: " + std::to_string(actual);
}
std::string notEqualsMessage(const void* expected, const void* actual);
std::string notEqualsMessage(const std::string& expected, const std::string& actual);

View File

@@ -35,7 +35,7 @@ public:
int countTestCases() const;
void run(TestResult* result);
void run(TestResult* result, const Test::Callback& callback);
std::string toString() const;

View File

@@ -57,7 +57,7 @@ inline TestFailure::TestFailure(Test* failedTest, CppUnitException* thrownExcept
// Deletes the owned exception.
inline TestFailure::~TestFailure()
{
{
delete _thrownException;
}

View File

@@ -67,7 +67,7 @@ public:
SynchronizationObject()
{
}
virtual ~SynchronizationObject()
{
}
@@ -75,7 +75,7 @@ public:
virtual void lock()
{
}
virtual void unlock()
{
}
@@ -112,7 +112,7 @@ protected:
// Construct a TestResult
inline TestResult::TestResult(): _syncObject(new SynchronizationObject())
{
_runTests = 0;
_runTests = 0;
_stop = false;
}
@@ -121,7 +121,7 @@ inline TestResult::TestResult(): _syncObject(new SynchronizationObject())
// caused the error
inline void TestResult::addError(Test* test, CppUnitException* e)
{
ExclusiveZone zone(_syncObject);
ExclusiveZone zone(_syncObject);
_errors.push_back(new TestFailure(test, e));
}
@@ -130,7 +130,7 @@ inline void TestResult::addError(Test* test, CppUnitException* e)
// caused the failure.
inline void TestResult::addFailure(Test* test, CppUnitException* e)
{
ExclusiveZone zone(_syncObject);
ExclusiveZone zone(_syncObject);
_failures.push_back(new TestFailure(test, e));
}
@@ -138,7 +138,7 @@ inline void TestResult::addFailure(Test* test, CppUnitException* e)
// Informs the result that a test will be started.
inline void TestResult::startTest(Test* test)
{
ExclusiveZone zone(_syncObject);
ExclusiveZone zone(_syncObject);
_runTests++;
}
@@ -153,7 +153,7 @@ inline void TestResult::endTest(Test* test)
// Gets the number of run tests.
inline int TestResult::runTests()
{
ExclusiveZone zone(_syncObject);
ExclusiveZone zone(_syncObject);
return _runTests;
}
@@ -161,7 +161,7 @@ inline int TestResult::runTests()
// Gets the number of detected errors.
inline int TestResult::testErrors()
{
ExclusiveZone zone(_syncObject);
ExclusiveZone zone(_syncObject);
return (int) _errors.size();
}
@@ -169,7 +169,7 @@ inline int TestResult::testErrors()
// Gets the number of detected failures.
inline int TestResult::testFailures()
{
ExclusiveZone zone(_syncObject);
ExclusiveZone zone(_syncObject);
return (int) _failures.size();
}
@@ -177,15 +177,15 @@ inline int TestResult::testFailures()
// Returns whether the entire test was successful or not.
inline bool TestResult::wasSuccessful()
{
ExclusiveZone zone(_syncObject);
return _failures.size() == 0 && _errors.size () == 0;
ExclusiveZone zone(_syncObject);
return _failures.size() == 0 && _errors.size () == 0;
}
// Returns a std::vector of the errors.
inline std::vector<TestFailure*>& TestResult::errors()
{
ExclusiveZone zone(_syncObject);
ExclusiveZone zone(_syncObject);
return _errors;
}
@@ -193,7 +193,7 @@ inline std::vector<TestFailure*>& TestResult::errors()
// Returns a std::vector of the failures.
inline std::vector<TestFailure*>& TestResult::failures()
{
ExclusiveZone zone(_syncObject);
ExclusiveZone zone(_syncObject);
return _failures;
}
@@ -201,7 +201,7 @@ inline std::vector<TestFailure*>& TestResult::failures()
// Returns whether testing should be stopped
inline bool TestResult::shouldStop()
{
ExclusiveZone zone(_syncObject);
ExclusiveZone zone(_syncObject);
return _stop;
}
@@ -209,7 +209,7 @@ inline bool TestResult::shouldStop()
// Stop testing
inline void TestResult::stop()
{
ExclusiveZone zone(_syncObject);
ExclusiveZone zone(_syncObject);
_stop = true;
}
@@ -218,7 +218,7 @@ inline void TestResult::stop()
// TestResult assumes ownership of the object
inline void TestResult::setSynchronizationObject(SynchronizationObject* syncObject)
{
delete _syncObject;
delete _syncObject;
_syncObject = syncObject;
}

View File

@@ -8,20 +8,19 @@
#include "CppUnit/CppUnit.h"
#include "CppUnit/Test.h"
#include <vector>
#include <string>
#include <ostream>
#if defined(POCO_VXWORKS)
#include <cstdarg>
#endif
#include "Poco/Exception.h"
namespace CppUnit {
class Test;
/*
* A command line based tool to run tests.
* TestRunner expects as its only argument the name of a TestCase class.
@@ -46,7 +45,7 @@ public:
TestRunner(std::ostream& ostr);
~TestRunner();
bool run(const std::vector<std::string>& args);
bool run(const std::vector<std::string>& args, const Test::Callback& callback = nullptr);
void addTest(const std::string& name, Test* test);
protected:
@@ -85,6 +84,16 @@ private:
return runner.run(args) ? 0 : 1; \
}
#else
#define CppUnitPocoExceptionText(exc) \
CppUnit::Test::Callback exc = [] (const std::exception& ex) \
{ \
std::string text; \
const Poco::Exception* pEx = dynamic_cast<const Poco::Exception*>(&ex); \
if (pEx) text = pEx->displayText(); \
else text = ex.what(); \
return text; \
}
#define CppUnitMain(testCase) \
int main(int ac, char **av) \
{ \
@@ -93,7 +102,8 @@ private:
args.push_back(std::string(av[i])); \
CppUnit::TestRunner runner; \
runner.addTest(#testCase, testCase::suite()); \
return runner.run(args) ? 0 : 1; \
CppUnitPocoExceptionText(exc); \
return runner.run(args, exc) ? 0 : 1; \
}
#endif

View File

@@ -24,17 +24,17 @@ class CppUnit_API TestSetup: public TestDecorator
REFERENCEOBJECT (TestSetup)
public:
TestSetup(Test* test): TestDecorator(test)
TestSetup(Test* test): TestDecorator(test)
{
}
void run(TestResult* result);
protected:
void setUp()
void setUp()
{
}
void tearDown()
{
}
@@ -44,7 +44,7 @@ protected:
inline void TestSetup::run(TestResult* result)
{
setUp();
TestDecorator::run(result);
TestDecorator::run(result);
tearDown();
}

View File

@@ -41,14 +41,14 @@ public:
TestSuite(const std::string& name = "");
~TestSuite();
void run(TestResult* result);
void run(TestResult* result, const Test::Callback& callback = nullptr);
int countTestCases() const;
void addTest(Test* test);
std::string toString() const;
Test::Type getType() const;
virtual void deleteContents();
const std::vector<Test*> tests() const;
private:
@@ -80,7 +80,7 @@ inline void TestSuite::addTest(Test* test)
// Returns a std::string representation of the test suite.
inline std::string TestSuite::toString() const
{
return "suite " + _name;
return "suite " + _name;
}
// Returns the type of the test, see Test::Type

View File

@@ -31,7 +31,7 @@ public:
virtual void printErrors(std::ostream& stream);
virtual void printFailures(std::ostream& stream);
virtual void printHeader(std::ostream& stream);
protected:
std::string shortName(const std::string& testName);
void setup();

View File

@@ -32,26 +32,26 @@ inline std::string estring(std::string& expandedString)
// Create a std::string from an int
inline std::string estring(int number)
{
char buffer[50];
std::snprintf(buffer, sizeof(buffer), "%d", number);
return std::string (buffer);
char buffer[50];
std::snprintf(buffer, sizeof(buffer), "%d", number);
return std::string (buffer);
}
// Create a string from a long
inline std::string estring(long number)
{
char buffer[50];
std::snprintf(buffer, sizeof(buffer), "%ld", number);
return std::string (buffer);
char buffer[50];
std::snprintf(buffer, sizeof(buffer), "%ld", number);
return std::string (buffer);
}
// Create a std::string from a double
inline std::string estring(double number)
{
char buffer[50];
std::snprintf(buffer, sizeof(buffer), "%lf", number);
char buffer[50];
std::snprintf(buffer, sizeof(buffer), "%lf", number);
return std::string(buffer);
}
@@ -59,8 +59,8 @@ inline std::string estring(double number)
// Create a std::string from a double
inline std::string estring(const void* ptr)
{
char buffer[50];
std::snprintf(buffer, sizeof(buffer), "%p", ptr);
char buffer[50];
std::snprintf(buffer, sizeof(buffer), "%p", ptr);
return std::string(buffer);
}

View File

@@ -47,14 +47,6 @@ void TestCase::loop2assertImplementation(bool condition, const std::string& cond
}
// Check for a failed equality assertion
void TestCase::assertEquals(long expected, long actual, long lineNumber, const std::string& fileName)
{
if (expected != actual)
assertImplementation(false, notEqualsMessage(expected, actual), lineNumber, fileName);
}
// Check for a failed equality assertion
void TestCase::assertEquals(double expected, double actual, double delta, long lineNumber, const std::string& fileName)
{
@@ -79,6 +71,14 @@ void TestCase::assertEquals(const std::string& expected, const std::string& actu
}
// Check for a failed equality assertion
void TestCase::assertEquals(const char* expected, const std::string& actual, long lineNumber, const std::string& fileName)
{
if (std::string(expected) != actual)
assertImplementation(false, notEqualsMessage(std::string(expected), actual), lineNumber, fileName);
}
void TestCase::assertNotNull(const void* pointer, const std::string& pointerExpression, long lineNumber, const std::string& fileName)
{
if (pointer == NULL)
@@ -106,7 +106,7 @@ void TestCase::warn(const std::string& message, long lineNumber, const std::stri
// Run the test and catch any exceptions that are triggered by it
void TestCase::run(TestResult *result)
void TestCase::run(TestResult *result, const Test::Callback& callback)
{
result->startTest(this);
@@ -123,8 +123,7 @@ void TestCase::run(TestResult *result)
catch (std::exception& e)
{
std::string msg(typeid(e).name());
msg.append(": ");
msg.append(e.what());
msg.append(":\n").append(callback(e));
result->addError(this, new CppUnitException(msg));
}
catch (...)
@@ -153,20 +152,6 @@ void TestCase::runTest()
}
// Build a message about a failed equality check
std::string TestCase::notEqualsMessage(long expected, long actual)
{
return "expected: " + estring(expected) + " but was: " + estring(actual);
}
// Build a message about a failed equality check
std::string TestCase::notEqualsMessage(double expected, double actual)
{
return "expected: " + estring(expected) + " but was: " + estring(actual);
}
// Build a message about a failed equality check
std::string TestCase::notEqualsMessage(const void* expected, const void* actual)
{

View File

@@ -26,7 +26,7 @@ int TestDecorator::countTestCases() const
}
void TestDecorator::run(TestResult* result)
void TestDecorator::run(TestResult* result, const Test::Callback& callback = nullptr)
{
_test->run(result);
}

View File

@@ -41,7 +41,7 @@ void TestRunner::printBanner()
}
bool TestRunner::run(const std::vector<std::string>& args)
bool TestRunner::run(const std::vector<std::string>& args, const Test::Callback& callback)
{
std::string testCase;
int numberOfTests = 0;
@@ -139,7 +139,7 @@ bool TestRunner::run(const std::vector<std::string>& args)
if (setup.size() > 0)
testToRun->addSetup(setup);
testToRun->run(&result);
testToRun->run(&result, callback);
numberOfTests++;
}
_ostr << result << std::endl;

View File

@@ -19,9 +19,9 @@ void TestSuite::deleteContents()
// Runs the tests and collects their result in a TestResult.
void TestSuite::run(TestResult *result)
void TestSuite::run(TestResult *result, const Test::Callback& callback)
{
for (std::vector<Test*>::iterator it = _tests.begin(); it != _tests.end(); ++it)
for (std::vector<Test*>::iterator it = _tests.begin(); it != _tests.end(); ++it)
{
if (result->shouldStop ())
break;
@@ -29,7 +29,7 @@ void TestSuite::run(TestResult *result)
Test *test = *it;
if (!setup().empty())
test->addSetup(setup());
test->run(result);
test->run(result, callback);
}
}

View File

@@ -25,7 +25,7 @@ target_link_libraries(Crypto PUBLIC Poco::Foundation OpenSSL::SSL OpenSSL::Crypt
target_include_directories(Crypto
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)

View File

@@ -9,6 +9,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\Test
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
debug_shared|ARM64 = debug_shared|ARM64
release_shared|ARM64 = release_shared|ARM64
debug_static_mt|ARM64 = debug_static_mt|ARM64
release_static_mt|ARM64 = release_static_mt|ARM64
debug_static_md|ARM64 = debug_static_md|ARM64
release_static_md|ARM64 = release_static_md|ARM64
debug_shared|Win32 = debug_shared|Win32
release_shared|Win32 = release_shared|Win32
debug_static_mt|Win32 = debug_static_mt|Win32
@@ -23,6 +29,24 @@ Global
release_static_md|x64 = release_static_md|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|ARM64.Build.0 = release_shared|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.Build.0 = debug_shared|Win32
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
@@ -59,6 +83,24 @@ Global
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.ActiveCfg = release_static_md|x64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.Build.0 = release_static_md|x64
{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.Deploy.0 = release_static_md|x64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|ARM64.Build.0 = release_shared|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Build.0 = debug_shared|Win32
{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Deploy.0 = debug_shared|Win32

View File

@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="debug_shared|ARM64">
<Configuration>debug_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_shared|Win32">
<Configuration>debug_shared</Configuration>
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
<Configuration>debug_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|ARM64">
<Configuration>debug_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_md|Win32">
<Configuration>debug_static_md</Configuration>
<Platform>Win32</Platform>
@@ -17,6 +25,10 @@
<Configuration>debug_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|ARM64">
<Configuration>debug_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="debug_static_mt|Win32">
<Configuration>debug_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -25,6 +37,10 @@
<Configuration>debug_static_mt</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|ARM64">
<Configuration>release_shared</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_shared|Win32">
<Configuration>release_shared</Configuration>
<Platform>Win32</Platform>
@@ -33,6 +49,10 @@
<Configuration>release_shared</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|ARM64">
<Configuration>release_static_md</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_md|Win32">
<Configuration>release_static_md</Configuration>
<Platform>Win32</Platform>
@@ -41,6 +61,10 @@
<Configuration>release_static_md</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|ARM64">
<Configuration>release_static_mt</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="release_static_mt|Win32">
<Configuration>release_static_mt</Configuration>
<Platform>Win32</Platform>
@@ -51,6 +75,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<ProjectName>Crypto</ProjectName>
<ProjectGuid>{EEEE7259-32E9-4D56-B023-C733940AB2A0}</ProjectGuid>
<RootNamespace>Crypto</RootNamespace>
@@ -87,6 +112,36 @@
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
@@ -137,6 +192,24 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
</ImportGroup>
@@ -157,7 +230,13 @@
</ImportGroup>
<PropertyGroup Label="UserMacros"/>
<PropertyGroup>
<_ProjectFileVersion>15.0.28307.799</_ProjectFileVersion>
<_ProjectFileVersion>17.0.32505.173</_ProjectFileVersion>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">PocoCryptoA64d</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">PocoCryptomdd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">PocoCryptomtd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">PocoCryptoA64</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">PocoCryptomd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">PocoCryptomt</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">PocoCryptod</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">PocoCryptomdd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">PocoCryptomtd</TargetName>
@@ -171,6 +250,32 @@
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">PocoCryptomd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">PocoCryptomt</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<OutDir>..\binA64\</OutDir>
<IntDir>objA64\Crypto\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<OutDir>..\binA64\</OutDir>
<IntDir>objA64\Crypto\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\Crypto\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\Crypto\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\Crypto\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<OutDir>..\libA64\</OutDir>
<IntDir>objA64\Crypto\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<OutDir>..\bin\</OutDir>
<IntDir>obj\Crypto\$(Configuration)\</IntDir>
@@ -223,6 +328,166 @@
<OutDir>..\lib64\</OutDir>
<IntDir>obj64\Crypto\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>..\binA64\PocoCryptoA64d.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>..\binA64\PocoCryptoA64d.pdb</ProgramDatabaseFile>
<AdditionalLibraryDirectories>..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<ImportLibrary>..\libA64\PocoCryptod.lib</ImportLibrary>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>..\binA64\PocoCryptoA64.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<GenerateDebugInformation>false</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\libA64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<ImportLibrary>..\libA64\PocoCrypto.lib</ImportLibrary>
<TargetMachine>MachineARM64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<ProgramDataBaseFileName>..\libA64\PocoCryptomtd.pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoCryptomtd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoCryptomt.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<ProgramDataBaseFileName>..\libA64\PocoCryptomdd.pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoCryptomdd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<CompileAs>Default</CompileAs>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Lib>
<OutputFile>..\libA64\PocoCryptomd.lib</OutputFile>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
@@ -640,12 +905,16 @@
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">true</ExcludedFromBuild>
</ResourceCompile>

View File

@@ -6,11 +6,15 @@
include $(POCO_BASE)/build/rules/global
SYSLIBS += -lssl -lcrypto
# see https://github.com/pocoproject/poco/issues/3073
GLOBAL_SYSLIBS := $(SYSLIBS)
SYSLIBS = -lssl -lcrypto
SYSLIBS += $(GLOBAL_SYSLIBS)
objects = Cipher CipherFactory CipherImpl CipherKey CipherKeyImpl \
CryptoException CryptoStream CryptoTransform ECDSADigestEngine \
ECKey ECKeyImpl EVPPKey KeyPair KeyPairImpl PKCS12Container \
CryptoException CryptoStream CryptoTransform \
ECDSADigestEngine ECKey ECKeyImpl Envelope \
EVPCipherImpl EVPPKey KeyPair KeyPairImpl PKCS12Container \
RSACipherImpl RSAKey RSAKeyImpl RSADigestEngine DigestEngine \
X509Certificate OpenSSLInitializer

View File

@@ -107,16 +107,16 @@ public:
virtual CryptoTransform::Ptr createDecryptor() = 0;
/// Creates a decryptor object to be used with a CryptoStream.
virtual std::string encryptString(const std::string& str, Encoding encoding = ENC_NONE);
virtual std::string encryptString(const std::string& str, Encoding encoding = ENC_NONE, bool padding = true);
/// Directly encrypt a string and encode it using the given encoding.
virtual std::string decryptString(const std::string& str, Encoding encoding = ENC_NONE);
virtual std::string decryptString(const std::string& str, Encoding encoding = ENC_NONE, bool padding = true);
/// Directly decrypt a string that is encoded with the given encoding.
virtual void encrypt(std::istream& source, std::ostream& sink, Encoding encoding = ENC_NONE);
virtual void encrypt(std::istream& source, std::ostream& sink, Encoding encoding = ENC_NONE, bool padding = true);
/// Directly encrypts an input stream and encodes it using the given encoding.
virtual void decrypt(std::istream& source, std::ostream& sink, Encoding encoding = ENC_NONE);
virtual void decrypt(std::istream& source, std::ostream& sink, Encoding encoding = ENC_NONE, bool padding = true);
/// Directly decrypt an input stream that is encoded with the given encoding.
protected:

View File

@@ -28,6 +28,7 @@ namespace Crypto {
class Cipher;
class CipherKey;
class RSAKey;
class EVPPKey;
class Crypto_API CipherFactory
@@ -42,8 +43,8 @@ public:
/// Destroys the CipherFactory.
Cipher* createCipher(const CipherKey& key);
/// Creates a Cipher object for the given Cipher name. Valid cipher
/// names depend on the OpenSSL version the library is linked with;
/// Creates a Cipher object for the given Cipher name. Valid cipher
/// names depend on the OpenSSL version the library is linked with;
/// see the output of
///
/// openssl enc --help
@@ -59,7 +60,11 @@ public:
Cipher* createCipher(const RSAKey& key, RSAPaddingMode paddingMode = RSA_PADDING_PKCS1);
/// Creates a RSACipher using the given RSA key and padding mode
/// for public key encryption/private key decryption.
Cipher* createCipher(const EVPPKey& key);
/// Creates an EVPCipher using the given EVP key
/// for public key encryption/private key decryption.
static CipherFactory& defaultFactory();
/// Returns the default CipherFactory.

View File

@@ -35,6 +35,7 @@
#include "Poco/Foundation.h"
#include <openssl/opensslv.h>
#include <openssl/err.h>
#ifndef OPENSSL_VERSION_PREREQ
@@ -178,6 +179,20 @@ namespace Poco {
namespace Crypto {
inline std::string& getError(std::string& msg)
/// Appends OpenSSL error(s) to msg and
/// returns the augmented error description.
{
unsigned long err;
while ((err = ERR_get_error()))
{
if (!msg.empty()) msg.append(1, '\n');
msg.append(ERR_error_string(err, 0));
}
return msg;
}
void Crypto_API initializeCrypto();
/// Initialize the Crypto library, as well as the underlying OpenSSL
/// libraries, by calling OpenSSLInitializer::initialize().

View File

@@ -39,13 +39,13 @@ public:
/// See the OpenSSL documentation for a list of supported digest algorithms.
///
/// Throws a Poco::NotFoundException if no algorithm with the given name exists.
~DigestEngine();
/// Destroys the DigestEngine.
const std::string& algorithm() const;
/// Returns the name of the digest algorithm.
int nid() const;
/// Returns the NID (OpenSSL object identifier) of the digest algorithm.
@@ -56,7 +56,7 @@ public:
protected:
void updateImpl(const void* data, std::size_t length);
private:
std::string _name;
EVP_MD_CTX* _pContext;

View File

@@ -32,6 +32,7 @@ class X509Certificate;
class PKCS12Container;
//@ deprecated
class Crypto_API ECKey: public KeyPair
/// This class stores an EC key pair, consisting
/// of private and public key. Storage of the private

View File

@@ -62,8 +62,8 @@ public:
ECKeyImpl(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase);
/// Creates the ECKey, by reading public and private key from the given files and
/// using the given passphrase for the private key. Can only by used for signing if
/// a private key is available.
/// using the given passphrase for the private key. Can only by used for signing if
/// a private key is available.
ECKeyImpl(std::istream* pPublicKeyStream, std::istream* pPrivateKeyStream, const std::string& privateKeyPassphrase);
/// Creates the ECKey. Can only by used for signing if pPrivKey
@@ -91,7 +91,7 @@ public:
void save(const std::string& publicKeyFile,
const std::string& privateKeyFile = "",
const std::string& privateKeyPassphrase = "") const;
/// Exports the public and private keys to the given files.
/// Exports the public and private keys to the given files.
///
/// If an empty filename is specified, the corresponding key
/// is not exported.

View File

@@ -0,0 +1,76 @@
//
// EVPCipherImpl.h
//
// Library: Crypto
// Package: EVP
// Module: EVPCipherImpl
//
// Definition of the EVPCipherImpl class.
//
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#ifndef Crypto_EVPCipherImpl_INCLUDED
#define Crypto_EVPCipherImpl_INCLUDED
#include "Poco/Crypto/Crypto.h"
#include "Poco/Crypto/Cipher.h"
#include "Poco/Crypto/EVPPKey.h"
#include "Poco/Crypto/OpenSSLInitializer.h"
#include <openssl/evp.h>
namespace Poco {
namespace Crypto {
class EVPCipherImpl: public Cipher
/// An implementation of the Cipher class for
/// asymmetric (public-private key) encryption
/// based on the OpenSSL crypto library.
///
/// Encryption is using the public key, decryption
/// requires the private key.
{
public:
EVPCipherImpl(const EVPPKey& key);
/// Creates a new EVPCipherImpl object for the given EVPPKey
/// and using the given padding mode.
virtual ~EVPCipherImpl();
/// Destroys the EVPCipherImpl.
const std::string& name() const;
/// Returns the name of the Cipher.
CryptoTransform::Ptr createEncryptor();
/// Creates an encryptor object.
CryptoTransform::Ptr createDecryptor();
/// Creates a decryptor object.
private:
EVPPKey _key;
OpenSSLInitializer _openSSLInitializer;
};
//
// Inlines
//
inline const std::string& EVPCipherImpl::name() const
{
return _key.name();
}
} } // namespace Poco::Crypto
#endif // Crypto_EVPCipherImpl_INCLUDED

View File

@@ -22,20 +22,25 @@
#include "Poco/Crypto/Crypto.h"
#include "Poco/Crypto/CryptoException.h"
#include "Poco/StreamCopier.h"
#include "Poco/Format.h"
#include <openssl/ec.h>
#include <openssl/rsa.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <sstream>
#include <typeinfo>
#include <map>
namespace Poco {
namespace Crypto {
//@deprecated
class ECKey;
//@deprecated
class RSAKey;
class PKCS12Container;
class X509Certificate;
class Crypto_API EVPPKey
@@ -55,10 +60,36 @@ public:
/// Only EC keys can be wrapped by an EVPPKey
/// created using this constructor.
EVPPKey(const X509Certificate& cert);
/// Constructs EVPPKey from the given certificate.
EVPPKey(const PKCS12Container& cert);
/// Constructs EVPPKey from the given container.
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
EVPPKey(int type, int param);
/// Creates the EVPPKey.
/// Creates a new public/private keypair using the given parameters.
/// Can be used to sign data and verify signatures.
///
/// Suported types:
/// - EVP_PKEY_RSA
/// - EVP_PKEY_EC
///
/// Parameters:
/// - for EVP_PKEY_RSA: key length in bits
/// - for EVP_PKEY_EC: curve NID
///
/// This constructor is not available for OpenSSL version < 1.0.0
#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L
explicit EVPPKey(EVP_PKEY* pEVPPKey);
/// Constructs EVPPKey from EVP_PKEY pointer.
/// The content behind the supplied pointer is internally duplicated.
//@ deprecated
template<typename K>
explicit EVPPKey(K* pKey): _pEVPPKey(EVP_PKEY_new())
/// Constructs EVPPKey from a "native" OpenSSL (RSA or EC_KEY),
@@ -124,6 +155,9 @@ public:
int type() const;
/// Retuns the EVPPKey type NID.
const std::string& name() const;
/// Retuns the EVPPKey name.
bool isSupported(int type) const;
/// Returns true if OpenSSL type is supported
@@ -135,19 +169,25 @@ public:
static EVP_PKEY* duplicate(const EVP_PKEY* pFromKey, EVP_PKEY** pToKey);
/// Duplicates pFromKey into *pToKey and returns
// the pointer to duplicated EVP_PKEY.
/// the pointer to duplicated EVP_PKEY.
private:
EVPPKey();
static int type(const EVP_PKEY* pEVPPKey);
void checkType();
void newECKey(const char* group);
void duplicate(EVP_PKEY* pEVPPKey);
//@ deprecated
void setKey(ECKey* pKey);
//@ deprecated
void setKey(RSAKey* pKey);
//@ deprecated
void setKey(EC_KEY* pKey);
//@ deprecated
void setKey(RSA* pKey);
static int passCB(char* buf, int size, int, void* pass);
typedef EVP_PKEY* (*PEM_read_FILE_Key_fn)(FILE*, EVP_PKEY**, pem_password_cb*, void*);
@@ -180,7 +220,7 @@ private:
#if defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable:4996) // deprecation warnings
#endif
#endif
pFile = fopen(keyFile.c_str(), "r");
#if defined(_MSC_VER)
#pragma warning(pop)
@@ -211,8 +251,10 @@ private:
}
else
{
std::string msg = Poco::format("EVPPKey::loadKey('%s')\n", keyFile);
getError(msg);
if (getFunc) EVP_PKEY_free(pKey);
throw IOException("ECKeyImpl, cannot open file", keyFile);
throw IOException(msg);
}
}
else goto error;
@@ -220,8 +262,10 @@ private:
return false;
error:
std::string msg = Poco::format("EVPPKey::loadKey('%s')\n", keyFile);
getError(msg);
if (pFile) fclose(pFile);
throw OpenSSLException("EVPKey::loadKey(string)");
throw OpenSSLException(msg);
}
template <typename K, typename F>
@@ -277,13 +321,18 @@ private:
return false;
error:
std::string msg = "EVPPKey::loadKey(istream)\n";
getError(msg);
if (pBIO) BIO_free(pBIO);
throw OpenSSLException("EVPKey::loadKey(stream)");
throw OpenSSLException(msg);
}
EVP_PKEY* _pEVPPKey;
EVP_PKEY* _pEVPPKey = 0;
static const std::map<int, std::string> KNOWN_TYPES;
//@deprecated
friend class ECKeyImpl;
//@deprecated
friend class RSAKeyImpl;
};
@@ -297,7 +346,11 @@ inline bool EVPPKey::operator == (const EVPPKey& other) const
{
poco_check_ptr (other._pEVPPKey);
poco_check_ptr (_pEVPPKey);
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
return (1 == EVP_PKEY_eq(_pEVPPKey, other._pEVPPKey));
#else
return (1 == EVP_PKEY_cmp(_pEVPPKey, other._pEVPPKey));
#endif
}
@@ -311,7 +364,7 @@ inline int EVPPKey::type(const EVP_PKEY* pEVPPKey)
{
if (!pEVPPKey) return NID_undef;
return EVP_PKEY_type(EVP_PKEY_id(pEVPPKey));
return EVP_PKEY_type(EVP_PKEY_base_id(pEVPPKey));
}
@@ -339,20 +392,6 @@ inline EVPPKey::operator EVP_PKEY*()
}
inline void EVPPKey::setKey(EC_KEY* pKey)
{
if (!EVP_PKEY_set1_EC_KEY(_pEVPPKey, pKey))
throw OpenSSLException();
}
inline void EVPPKey::setKey(RSA* pKey)
{
if (!EVP_PKEY_set1_RSA(_pEVPPKey, pKey))
throw OpenSSLException();
}
} } // namespace Poco::Crypto

View File

@@ -0,0 +1,174 @@
//
// Envelope.h
//
// Library: Crypto
// Package: Envelope
// Module: Envelope
//
// Definition of the Envelope class.
//
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#ifndef Crypto_Envelope_INCLUDED
#define Crypto_Envelope_INCLUDED
#include "Poco/Crypto/Crypto.h"
#include "Poco/Crypto/EVPPKey.h"
#include <vector>
#include <openssl/evp.h>
namespace Poco {
namespace Crypto {
class Crypto_API Envelope
/// Envelope encrypts/decrypts data using a symmetric key.
///
/// Encryption and decryption with asymmetric keys is computationally expensive.
/// To alleviate that, Envelope encrypts data using a symmetric session key;
/// the key is then itself asymmetrically encrypted using a public key.
/// It is also possible to encrypt the session key with multiple public keys,
/// so that the message can be sent to multiple recipients.
///
/// Each recipient decrypts the session with their private key; the session
/// key for the message decryption is the same for each recipient.
{
public:
using Byte = unsigned char;
using ByteVec = std::vector<Byte>;
using EVPPKeyVec = std::vector<EVPPKey>;
using EVP_PKEYVec = std::vector<EVP_PKEY*>;
using EncKeyVec = std::vector<ByteVec>;
Envelope() = delete;
Envelope(const EVPPKey& key, int cipherNID);
/// Creates a new Envelope object.
/// Initialization vector is automatically
/// generated.
Envelope(const EVPPKeyVec& keys, int cipherNID);
/// Creates a new Envelope object.
/// Initialization vector is automatically
/// generated.
~Envelope();
/// Destroys the Envelope.
const ByteVec& iv() const;
/// Returns the initialization vector.
void addKey(const EVPPKey& key);
/// Adds the key to the list of private keys.
const EncKeyVec& keys() const;
/// Returns encrypted symmetric keys.
int cipherNID() const;
/// Reurns the cipher NID.
const ByteVec& seal(const std::string& plainText);
/// Encrypts the given text and returns the encrypted text.
const ByteVec& seal(const ByteVec& plainData);
/// Encrypts the given data and returns the encrypted data.
const ByteVec& getContent() const;
/// Returns the encrypted content.
void setContent(const ByteVec& enc);
/// Sets the encrypted content.
ByteVec open(const EVPPKey& privKey, const ByteVec& encKeys, const ByteVec& iv = ByteVec());
/// Decrypts the stored encrypted data and returns it.
std::string openAsString(const EVPPKey& privKey, const ByteVec& encKeys, const ByteVec& iv = ByteVec());
/// Decrypts the stored encrypted data and returns it.
static std::string toString(const ByteVec& data);
/// Converts and returns string from ByteVec.
private:
Envelope(int cipherNID);
Envelope(int cipherNID, const ByteVec& iv);
int ivSize() const;
int blockSize() const;
void handleErrors(std::string&& msg);
const EVP_CIPHER* _pCipher;
EVP_CIPHER_CTX* _pCtx;
EVP_CIPHER_CTX* _pDecCtx;
ByteVec _iv;
EVP_PKEYVec _pubKeys;
EncKeyVec _encKeys;
std::vector<int> _encKeysSizes;
ByteVec _encContent;
};
inline int Envelope::ivSize() const
{
return EVP_CIPHER_iv_length(_pCipher);
}
inline const Envelope::ByteVec& Envelope::iv() const
{
return _iv;
}
inline int Envelope::blockSize() const
{
return EVP_CIPHER_block_size(_pCipher);
}
inline const Envelope::EncKeyVec& Envelope::keys() const
{
return _encKeys;
}
inline std::string Envelope::toString(const ByteVec& data)
{
return std::string(data.begin(), data.end());
}
inline std::string Envelope::openAsString(const EVPPKey& privKey, const ByteVec& encKey, const ByteVec& iv)
{
return toString(open(privKey, encKey, iv));
}
const Envelope::ByteVec& Envelope::getContent() const
{
return _encContent;
}
void Envelope::setContent(const ByteVec& enc)
{
_encContent = enc;
}
inline int Envelope::cipherNID() const
{
return EVP_CIPHER_nid(_pCipher);
}
} } // namespace Poco::Crypto
#endif // Crypto_Envelope_INCLUDED

View File

@@ -56,7 +56,7 @@ public:
virtual void save(const std::string& publicKeyFile,
const std::string& privateKeyFile = "",
const std::string& privateKeyPassphrase = "") const = 0;
/// Exports the public and private keys to the given files.
/// Exports the public and private keys to the given files.
///
/// If an empty filename is specified, the corresponding key
/// is not exported.

View File

@@ -24,6 +24,7 @@
#include <openssl/crypto.h>
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
#include <openssl/provider.h>
#include <atomic>
#endif
#if defined(OPENSSL_FIPS) && OPENSSL_VERSION_NUMBER < 0x010001000L
#include <openssl/fips.h>
@@ -91,8 +92,8 @@ private:
#endif
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
static OSSL_PROVIDER* _defaultProvider;
static OSSL_PROVIDER* _legacyProvider;
static std::atomic<OSSL_PROVIDER*> _defaultProvider;
static std::atomic<OSSL_PROVIDER*> _legacyProvider;
#endif
};

View File

@@ -39,7 +39,7 @@ class Crypto_API RSADigestEngine: public Poco::DigestEngine
/// signed. Then, the hash value is encrypted, using
/// the RSA private key.
///
/// To verify a signature, pass it to the verify()
/// To verify a signature, pass it to the verify()
/// member function. It will decrypt the signature
/// using the RSA public key and compare the resulting
/// hash with the actual hash of the data.
@@ -50,7 +50,7 @@ public:
DIGEST_MD5,
DIGEST_SHA1
};
//@ deprecated
RSADigestEngine(const RSAKey& key, DigestType digestType = DIGEST_SHA1);
/// Creates the RSADigestEngine with the given RSA key,
@@ -74,11 +74,11 @@ public:
void reset();
/// Resets the engine so that a new
/// digest can be computed.
const DigestEngine::Digest& digest();
/// Finishes the computation of the digest
/// Finishes the computation of the digest
/// (the first time it's called) and
/// returns the message digest.
/// returns the message digest.
///
/// Can be called multiple times.

View File

@@ -31,6 +31,7 @@ class X509Certificate;
class PKCS12Container;
//@ deprecated
class Crypto_API RSAKey: public KeyPair
/// This class stores an RSA key pair, consisting
/// of private and public key. Storage of the private
@@ -56,7 +57,7 @@ public:
};
RSAKey(const EVPPKey& key);
/// Constructs ECKeyImpl by extracting the EC key.
/// Constructs RSAKey by extracting the RSA key.
RSAKey(const X509Certificate& cert);
/// Extracts the RSA public key from the given certificate.

View File

@@ -51,13 +51,13 @@ public:
using ByteVec = std::vector<unsigned char>;
RSAKeyImpl(const EVPPKey& key);
/// Constructs ECKeyImpl by extracting the EC key.
/// Constructs RSAKeyImpl by extracting the RSA key.
RSAKeyImpl(const X509Certificate& cert);
/// Extracts the RSA public key from the given certificate.
RSAKeyImpl(const PKCS12Container& cert);
/// Extracts the EC private key from the given certificate.
/// Extracts the RSA private key from the given certificate.
RSAKeyImpl(int keyLength, unsigned long exponent);
/// Creates the RSAKey. Creates a new public/private keypair using the given parameters.
@@ -65,8 +65,8 @@ public:
RSAKeyImpl(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase);
/// Creates the RSAKey, by reading public and private key from the given files and
/// using the given passphrase for the private key. Can only by used for signing if
/// a private key is available.
/// using the given passphrase for the private key. Can only by used for signing if
/// a private key is available.
RSAKeyImpl(std::istream* pPublicKeyStream, std::istream* pPrivateKeyStream, const std::string& privateKeyPassphrase);
/// Creates the RSAKey. Can only by used for signing if pPrivKey
@@ -97,7 +97,7 @@ public:
void save(const std::string& publicKeyFile,
const std::string& privateKeyFile = "",
const std::string& privateKeyPassphrase = "") const;
/// Exports the public and private keys to the given files.
/// Exports the public and private keys to the given files.
///
/// If an empty filename is specified, the corresponding key
/// is not exported.

View File

@@ -84,7 +84,7 @@ public:
X509Certificate& operator = (X509Certificate&& cert) noexcept;
/// Move assignment.
void swap(X509Certificate& cert);
void swap(X509Certificate& cert) noexcept;
/// Exchanges the certificate with another one.
~X509Certificate();

View File

@@ -52,29 +52,29 @@ public:
{
Poco::Crypto::initializeCrypto();
}
~RSAApp()
{
Poco::Crypto::uninitializeCrypto();
}
protected:
protected:
void initialize(Application& self)
{
loadConfiguration(); // load default configuration files, if present
Application::initialize(self);
}
void uninitialize()
{
Application::uninitialize();
}
void reinitialize(Application& self)
{
Application::reinitialize(self);
}
void defineOptions(OptionSet& options)
{
Application::defineOptions(options);
@@ -97,7 +97,7 @@ protected:
.repeatable(false)
.argument("512|1024|2048|4096")
.callback(OptionCallback<RSAApp>(this, &RSAApp::handleKeyLength)));
options.addOption(
Option("exponent", "e", "defines the exponent of the key")
.required(false)
@@ -119,14 +119,14 @@ protected:
.argument("pwd")
.callback(OptionCallback<RSAApp>(this, &RSAApp::handlePassword)));
}
void handleHelp(const std::string& name, const std::string& value)
{
_helpRequested = true;
displayHelp();
stopOptionsProcessing();
}
void handleKeyLength(const std::string& name, const std::string& value)
{
int keyLen = Poco::NumberParser::parse(value);
@@ -150,12 +150,12 @@ protected:
throw Poco::Util::IncompatibleOptionsException("Empty file prefix forbidden");
_name = value;
}
void handlePassword(const std::string& name, const std::string& value)
{
_pwd = value;
}
void displayHelp()
{
HelpFormatter helpFormatter(options());
@@ -176,14 +176,14 @@ protected:
logger().information("Generating key: DONE");
std::string pubFile(_name + ".pub");
std::string privFile(_name + ".priv");
logger().information("Saving key to " + pubFile + " and " + privFile);
key.save(pubFile, privFile, _pwd);
logger().information("Key saved");
}
return Application::EXIT_OK;
}
private:
bool _helpRequested;
RSAKey::KeyLength _length;

View File

@@ -39,30 +39,32 @@ Cipher::~Cipher()
}
std::string Cipher::encryptString(const std::string& str, Encoding encoding)
std::string Cipher::encryptString(const std::string& str, Encoding encoding, bool padding)
{
std::istringstream source(str);
std::ostringstream sink;
encrypt(source, sink, encoding);
encrypt(source, sink, encoding, padding);
return sink.str();
}
std::string Cipher::decryptString(const std::string& str, Encoding encoding)
std::string Cipher::decryptString(const std::string& str, Encoding encoding, bool padding)
{
std::istringstream source(str);
std::ostringstream sink;
decrypt(source, sink, encoding);
decrypt(source, sink, encoding, padding);
return sink.str();
}
void Cipher::encrypt(std::istream& source, std::ostream& sink, Encoding encoding)
void Cipher::encrypt(std::istream& source, std::ostream& sink, Encoding encoding, bool padding)
{
CryptoInputStream encryptor(source, createEncryptor());
CryptoTransform::Ptr p = createEncryptor();
if (!padding) p->setPadding(0);
CryptoInputStream encryptor(source, p);
switch (encoding)
{
@@ -102,9 +104,11 @@ void Cipher::encrypt(std::istream& source, std::ostream& sink, Encoding encoding
}
void Cipher::decrypt(std::istream& source, std::ostream& sink, Encoding encoding)
void Cipher::decrypt(std::istream& source, std::ostream& sink, Encoding encoding, bool padding)
{
CryptoOutputStream decryptor(sink, createDecryptor());
CryptoTransform::Ptr p = createDecryptor();
if (!padding) p->setPadding(0);
CryptoOutputStream decryptor(sink, p);
switch (encoding)
{

View File

@@ -18,10 +18,14 @@
#include "Poco/Crypto/RSAKey.h"
#include "Poco/Crypto/CipherImpl.h"
#include "Poco/Crypto/RSACipherImpl.h"
#include "Poco/Crypto/EVPCipherImpl.h"
#include "Poco/Exception.h"
#include "Poco/SingletonHolder.h"
#include <openssl/evp.h>
#include <openssl/err.h>
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
#include <openssl/provider.h>
#endif
namespace Poco {
@@ -30,6 +34,10 @@ namespace Crypto {
CipherFactory::CipherFactory()
{
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
OSSL_PROVIDER_load(NULL, "default");
OSSL_PROVIDER_load(NULL, "legacy");
#endif
}
@@ -62,4 +70,10 @@ Cipher* CipherFactory::createCipher(const RSAKey& key, RSAPaddingMode paddingMod
}
Cipher* CipherFactory::createCipher(const EVPPKey& key)
{
return new EVPCipherImpl(key);
}
} } // namespace Poco::Crypto

View File

@@ -28,7 +28,7 @@ CryptoTransform::~CryptoTransform()
{
}
int CryptoTransform::setPadding(int padding)
{
return 1;

View File

@@ -26,10 +26,10 @@ DigestEngine::DigestEngine(const std::string& name):
{
const EVP_MD* md = EVP_get_digestbyname(_name.c_str());
if (!md) throw Poco::NotFoundException(_name);
EVP_DigestInit_ex(_pContext, md, NULL);
EVP_DigestInit_ex(_pContext, md, NULL);
}
DigestEngine::~DigestEngine()
{
EVP_MD_CTX_destroy(_pContext);
@@ -37,7 +37,11 @@ DigestEngine::~DigestEngine()
int DigestEngine::nid() const
{
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
return EVP_MD_nid(EVP_MD_CTX_get0_md(_pContext));
#else
return EVP_MD_nid(EVP_MD_CTX_md(_pContext));
#endif
}
std::size_t DigestEngine::digestLength() const

View File

@@ -0,0 +1,310 @@
//
// EVPCipherImpl.cpp
//
// Library: Crypto
// Package: EVP
// Module: EVPCipherImpl
//
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#include "Poco/Crypto/EVPCipherImpl.h"
#include "Poco/Crypto/CryptoTransform.h"
#include "Poco/Exception.h"
#include "Poco/Logger.h"
#include <openssl/err.h>
#include <openssl/evp.h>
#include <cstring>
namespace Poco {
namespace Crypto {
namespace
{
void throwError(std::string&& msg)
{
unsigned long err;
while ((err = ERR_get_error()))
{
if (!msg.empty()) msg.append("; ");
msg.append(ERR_error_string(err, 0));
}
throw Poco::IOException(msg);
}
class EVPPKeyContext
{
public:
EVPPKeyContext() = delete;
EVPPKeyContext(const EVP_PKEY* pEVP) : _pCtx(EVP_PKEY_CTX_new(const_cast<EVP_PKEY*>(pEVP), NULL))
{
if (!_pCtx)
{
std::string fmt = "EVPPKeyContext():%s()";
throwError(Poco::format(fmt, std::string("EVP_PKEY_CTX_new")));
}
}
~EVPPKeyContext()
{
EVP_PKEY_CTX_free(_pCtx);
}
operator EVP_PKEY_CTX*()
{
return _pCtx;
}
private:
EVP_PKEY_CTX* _pCtx = nullptr;
};
class EVPEncryptImpl: public CryptoTransform
{
public:
EVPEncryptImpl(const EVP_PKEY* pEVP):
_pEVP(pEVP),
_pCtx(_pEVP),
_pos(0),
_pBuf(0)
{
std::string fmt = "EVPEncryptImpl():%s()";
poco_check_ptr(_pEVP);
if (!_pCtx)
throwError(Poco::format(fmt, std::string("EVP_PKEY_CTX_new")));
if (EVP_PKEY_encrypt_init(_pCtx) <= 0)
throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt_init")));
_blockSize = EVP_PKEY_size(_pEVP);
if (!_blockSize)
throwError(Poco::format(fmt, std::string("EVP_PKEY_size")));
_pBuf = new unsigned char[_blockSize];
}
~EVPEncryptImpl()
{
delete [] _pBuf;
}
std::size_t blockSize() const
{
return _blockSize;
}
std::string getTag(std::size_t)
{
return "";
}
void setTag(const std::string&)
{
}
std::streamsize transform(const unsigned char* input, std::streamsize inputLength,
unsigned char* output, std::streamsize outputLength)
{
std::string fmt = "EVPEncryptImpl::transform():%s()";
std::streamsize maxSize = static_cast<std::streamsize>(maxDataSize(input, inputLength));
std::streamsize evpSize = static_cast<std::streamsize>(_blockSize);
poco_assert_dbg(_pos <= maxSize);
poco_assert (outputLength >= evpSize);
int rc = 0;
while (inputLength > 0)
{
poco_assert_dbg (maxSize >= _pos);
std::streamsize missing = maxSize - _pos;
if (missing == 0)
{
poco_assert (outputLength >= evpSize);
std::size_t outLen;
if (EVP_PKEY_encrypt(_pCtx, NULL, &outLen, _pBuf, static_cast<std::size_t>(maxSize)) <= 0)
throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt(NULL)")));
if (EVP_PKEY_encrypt(_pCtx, output, &outLen, _pBuf, static_cast<std::size_t>(maxSize)) <= 0)
throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt")));
rc += outLen;
output += outLen;
outputLength -= outLen;
_pos = 0;
}
else
{
if (missing > inputLength) missing = inputLength;
std::memcpy(_pBuf + _pos, input, static_cast<std::size_t>(missing));
input += missing;
_pos += missing;
inputLength -= missing;
}
}
return rc;
}
std::streamsize finalize(unsigned char* output, std::streamsize length)
{
poco_assert (length >= blockSize());
poco_assert (_pos <= maxDataSize(output, length));
std::string fmt = "EVPEncryptImpl::finalize():%s()";
std::size_t outLen = 0;
if (_pos > 0)
{
if (EVP_PKEY_encrypt(_pCtx, NULL, &outLen, _pBuf, static_cast<std::size_t>(_pos)) <= 0)
throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt")));
if (EVP_PKEY_encrypt(_pCtx, output, &outLen, _pBuf, static_cast<std::size_t>(_pos)) <= 0)
throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt")));
}
return static_cast<std::streamsize>(outLen);
}
private:
std::size_t maxDataSize(const unsigned char* pIO, std::streamsize length)
{
std::string fmt = "EVPEncryptImpl::maxDataSize():%s()";
std::size_t outLength = 0;
if (EVP_PKEY_encrypt(_pCtx, NULL, &outLength, pIO, length) <= 0)
throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt")));
return outLength;
}
const EVP_PKEY* _pEVP;
EVPPKeyContext _pCtx;
int _blockSize;
std::streamsize _pos;
unsigned char* _pBuf;
};
class EVPDecryptImpl: public CryptoTransform
{
public:
EVPDecryptImpl(const EVP_PKEY* pEVP):
_pEVP(pEVP),
_pCtx(_pEVP),
_pos(0),
_pBuf(0)
{
std::string fmt = "EVPDecryptImpl():%s()";
poco_check_ptr(_pEVP);
if (EVP_PKEY_decrypt_init(_pCtx) <= 0)
throwError(Poco::format(fmt, std::string("EVP_PKEY_decrypt_init")));
_blockSize = EVP_PKEY_size(_pEVP);
if (!_blockSize)
throwError(Poco::format(fmt, std::string("EVP_PKEY_size")));
_pBuf = new unsigned char[_blockSize];
}
~EVPDecryptImpl()
{
delete [] _pBuf;
}
std::size_t blockSize() const
{
return _blockSize;
}
std::string getTag(std::size_t)
{
return "";
}
void setTag(const std::string&)
{
}
std::streamsize transform(const unsigned char* input, std::streamsize inputLength,
unsigned char* output, std::streamsize outputLength)
{
std::string fmt = "EVPDecryptImpl::transform():%s()";
std::streamsize evpSize = static_cast<std::streamsize>(_blockSize);
poco_assert_dbg(_pos <= evpSize);
poco_assert (outputLength >= evpSize);
int rc = 0;
while (inputLength > 0)
{
poco_assert_dbg (evpSize >= _pos);
std::streamsize missing = evpSize - _pos;
if (missing == 0)
{
std::size_t outLen = 0;
if (EVP_PKEY_decrypt(_pCtx, NULL, &outLen, _pBuf, static_cast<std::size_t>(_pos)) <= 0)
throwError(Poco::format(fmt, std::string("EVP_PKEY_decrypt(NULL)")));
if (EVP_PKEY_decrypt(_pCtx, output, &outLen, _pBuf, static_cast<std::size_t>(_pos)) <= 0)
throwError(Poco::format(fmt, std::string("EVP_PKEY_decrypt")));
rc += outLen;
output += outLen;
outputLength -= outLen;
_pos = 0;
}
else
{
if (missing > inputLength) missing = inputLength;
std::memcpy(_pBuf + _pos, input, static_cast<std::size_t>(missing));
input += missing;
_pos += missing;
inputLength -= missing;
}
}
return rc;
}
std::streamsize finalize(unsigned char* output, std::streamsize length)
{
poco_assert (length >= _blockSize);
std::string fmt = "EVPDecryptImpl::finalize():%s()";
std::size_t outLen = 0;
if (EVP_PKEY_decrypt(_pCtx, NULL, &outLen, _pBuf, static_cast<std::size_t>(_pos)) <= 0)
throwError(Poco::format(fmt, std::string("EVP_PKEY_decrypt(NULL)")));
poco_assert (length >= outLen);
if (_pos > 0)
{
if (EVP_PKEY_decrypt(_pCtx, output, &outLen, _pBuf, static_cast<std::size_t>(_pos)) <= 0)
throwError(Poco::format(fmt, std::string("EVP_PKEY_decrypt")));
}
return outLen;
}
private:
const EVP_PKEY* _pEVP;
EVPPKeyContext _pCtx;
int _blockSize;
std::streamsize _pos;
unsigned char* _pBuf;
};
}
EVPCipherImpl::EVPCipherImpl(const EVPPKey& key):
_key(key)
{
}
EVPCipherImpl::~EVPCipherImpl()
{
}
CryptoTransform::Ptr EVPCipherImpl::createEncryptor()
{
return new EVPEncryptImpl(_key);
}
CryptoTransform::Ptr EVPCipherImpl::createDecryptor()
{
return new EVPDecryptImpl(_key);
}
} } // namespace Poco::Crypto

View File

@@ -14,19 +14,33 @@
#include "Poco/Crypto/EVPPKey.h"
#include "Poco/Crypto/PKCS12Container.h"
#include "Poco/Crypto/X509Certificate.h"
#include "Poco/Crypto/ECKey.h"
#include "Poco/Crypto/RSAKey.h"
#include "Poco/NumberFormatter.h"
#include <iostream>
namespace Poco {
namespace Crypto {
const std::map<int, std::string> EVPPKey::KNOWN_TYPES =
{
{ EVP_PKEY_RSA, "rsa" },
// not implemented
//{ EVP_PKEY_DSA, "dsa" },
//{ EVP_PKEY_DH, "dh" },
{ EVP_PKEY_EC, "ec" }
};
EVPPKey::EVPPKey(const std::string& ecCurveName): _pEVPPKey(0)
{
newECKey(ecCurveName.c_str());
poco_check_ptr(_pEVPPKey);
checkType();
}
@@ -34,13 +48,93 @@ EVPPKey::EVPPKey(const char* ecCurveName): _pEVPPKey(0)
{
newECKey(ecCurveName);
poco_check_ptr(_pEVPPKey);
checkType();
}
EVPPKey::EVPPKey(const X509Certificate& cert):
_pEVPPKey(X509_get_pubkey(const_cast<X509*>(cert.certificate())))
{
poco_check_ptr(_pEVPPKey);
checkType();
}
EVPPKey::EVPPKey(const PKCS12Container& cont): EVPPKey(cont.getKey())
{
poco_check_ptr(_pEVPPKey);
checkType();
}
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
EVPPKey::EVPPKey(int type, int param): _pEVPPKey(0)
{
EVP_PKEY_CTX *pCtx = EVP_PKEY_CTX_new_id(type, NULL);
if (NULL == pCtx)
{
std::string msg = Poco::format(
"EVPPKey(%d, %d):EVP_PKEY_CTX_new_id()\n", type, param);
throw OpenSSLException(getError(msg));
}
int ret = EVP_PKEY_keygen_init(pCtx);
if (ret != 1)
{
std::string msg = Poco::format(
"EVPPKey(%d, %d):EVP_PKEY_keygen_init()\n", type, param);
throw OpenSSLException(getError(msg));
}
if (EVP_PKEY_RSA == type)
{
ret = EVP_PKEY_CTX_set_rsa_keygen_bits(pCtx, param);
if (ret != 1)
{
std::string msg = Poco::format(
"EVPPKey(%d, %d):EVP_PKEY_CTX_set_rsa_keygen_bits()\n", type, param);
throw OpenSSLException(getError(msg));
}
}
else if (EVP_PKEY_EC == type)
{
ret = EVP_PKEY_CTX_set_ec_paramgen_curve_nid(pCtx, param);
if (ret != 1)
{
std::string msg = Poco::format(
"EVPPKey(%d, %d):EVP_PKEY_CTX_set_ec_paramgen_curve_nid()\n", type, param);
throw OpenSSLException(getError(msg));
}
}
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
ret = EVP_PKEY_generate(pCtx, &_pEVPPKey);
if (ret != 1)
{
std::string msg = Poco::format(
"EVPPKey(%d, %d):EVP_PKEY_generate()\n", type, param);
throw OpenSSLException(getError(msg));
}
#else
ret = EVP_PKEY_keygen(pCtx, &_pEVPPKey);
if (ret != 1)
{
std::string msg = Poco::format(
"EVPPKey(%d, %d):EVP_PKEY_keygen()\n", type, param);
throw OpenSSLException(getError(msg));
}
#endif
EVP_PKEY_CTX_free(pCtx);
checkType();
}
#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L
EVPPKey::EVPPKey(EVP_PKEY* pEVPPKey): _pEVPPKey(0)
{
duplicate(pEVPPKey, &_pEVPPKey);
poco_check_ptr(_pEVPPKey);
checkType();
}
@@ -57,9 +151,11 @@ EVPPKey::EVPPKey(const std::string& publicKeyFile,
// no private key, this must be public key only, otherwise throw
if (!loadKey(&_pEVPPKey, PEM_read_PUBKEY, (EVP_PKEY_get_Key_fn)0, publicKeyFile))
{
throw OpenSSLException("ECKeyImpl(const string&, const string&, const string&");
std::string msg = "EVPPKey(const string&, const string&, const string&)\n";
throw OpenSSLException(getError(msg));
}
poco_check_ptr(_pEVPPKey);
checkType();
}
@@ -76,9 +172,11 @@ EVPPKey::EVPPKey(std::istream* pPublicKeyStream,
// no private key, this must be public key only, otherwise throw
if (!loadKey(&_pEVPPKey, PEM_read_bio_PUBKEY, (EVP_PKEY_get_Key_fn)0, pPublicKeyStream))
{
throw OpenSSLException("ECKeyImpl(istream*, istream*, const string&");
std::string msg = "EVPPKey(istream* ,istream* const string&)\n";
throw OpenSSLException(getError(msg));
}
poco_check_ptr(_pEVPPKey);
checkType();
}
@@ -86,6 +184,7 @@ EVPPKey::EVPPKey(const EVPPKey& other)
{
duplicate(other._pEVPPKey, &_pEVPPKey);
poco_check_ptr(_pEVPPKey);
checkType();
}
@@ -93,6 +192,7 @@ EVPPKey::EVPPKey(EVPPKey&& other) noexcept:
_pEVPPKey(other._pEVPPKey)
{
other._pEVPPKey = nullptr;
checkType();
}
@@ -100,6 +200,7 @@ EVPPKey& EVPPKey::operator = (const EVPPKey& other)
{
duplicate(other._pEVPPKey, &_pEVPPKey);
poco_check_ptr(_pEVPPKey);
checkType();
return *this;
}
@@ -108,6 +209,7 @@ EVPPKey& EVPPKey::operator = (EVPPKey&& other) noexcept
{
_pEVPPKey = other._pEVPPKey;
other._pEVPPKey = nullptr;
checkType();
return *this;
}
@@ -118,19 +220,68 @@ EVPPKey::~EVPPKey()
}
const std::string& EVPPKey::name() const
{
int t = type(_pEVPPKey);
auto it = KNOWN_TYPES.find(t);
if (it == KNOWN_TYPES.end())
throw Poco::NotImplementedException(Poco::format("EVPPKey::type(%d)", t));
return it->second;
}
void EVPPKey::checkType()
{
if (_pEVPPKey)
{
int t = type(_pEVPPKey);
if (KNOWN_TYPES.find(t) == KNOWN_TYPES.end())
throw Poco::NotImplementedException(Poco::format("EVPPKey::type(%d)", t));
}
}
void EVPPKey::setKey(EC_KEY* pKey)
{
if (!EVP_PKEY_set1_EC_KEY(_pEVPPKey, pKey))
{
std::string msg = "EVPPKey::setKey('EC')\n";
throw OpenSSLException(getError(msg));
}
}
void EVPPKey::setKey(RSA* pKey)
{
if (!EVP_PKEY_set1_RSA(_pEVPPKey, pKey))
{
std::string msg = "EVPPKey::setKey('RSA')\n";
throw OpenSSLException(getError(msg));
}
}
void EVPPKey::save(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase) const
{
if (!publicKeyFile.empty() && (publicKeyFile != privateKeyFile))
{
BIO* bio = BIO_new(BIO_s_file());
if (!bio) throw Poco::IOException("Cannot create BIO for writing public key file", publicKeyFile);
if (!bio)
{
std::string msg = Poco::format(
"EVPPKey::save(%s) Cannot create BIO for writing public key file\n", publicKeyFile);
throw Poco::IOException(getError(msg));
}
try
{
if (BIO_write_filename(bio, const_cast<char*>(publicKeyFile.c_str())))
{
if (!PEM_write_bio_PUBKEY(bio, _pEVPPKey))
{
throw Poco::WriteFileException("Failed to write public key to file", publicKeyFile);
std::string msg = Poco::format("EVPPKey::save('%s', '%s', '%s')\n",
publicKeyFile, privateKeyFile, privateKeyPassphrase);
msg.append(Poco::format("Failed to write public key '%s' to file", publicKeyFile));
throw Poco::WriteFileException(getError(msg));
}
}
else throw Poco::CreateFileException("Cannot create public key file");
@@ -146,7 +297,12 @@ void EVPPKey::save(const std::string& publicKeyFile, const std::string& privateK
if (!privateKeyFile.empty())
{
BIO* bio = BIO_new(BIO_s_file());
if (!bio) throw Poco::IOException("Cannot create BIO for writing private key file", privateKeyFile);
if (!bio)
{
std::string msg = Poco::format(
"EVPPKey::save(%s): Cannot create BIO for writing private key file\n", privateKeyFile);
throw Poco::IOException(getError(msg));
}
try
{
if (BIO_write_filename(bio, const_cast<char*>(privateKeyFile.c_str())))
@@ -163,9 +319,18 @@ void EVPPKey::save(const std::string& publicKeyFile, const std::string& privateK
static_cast<int>(privateKeyPassphrase.length()), 0, 0);
}
if (!rc)
throw Poco::FileException("Failed to write private key to file", privateKeyFile);
{
std::string msg = Poco::format(
"EVPPKey::save(%s):PEM_write_bio_PrivateKey()\n", privateKeyFile);
throw Poco::FileException(getError(msg));
}
}
else
{
std::string msg = Poco::format(
"EVPPKey::save(%s):BIO_write_filename()\n", privateKeyFile);
throw Poco::CreateFileException(getError(msg));
}
else throw Poco::CreateFileException("Cannot create private key file", privateKeyFile);
}
catch (...)
{
@@ -182,11 +347,18 @@ void EVPPKey::save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyStre
if (pPublicKeyStream && (pPublicKeyStream != pPrivateKeyStream))
{
BIO* bio = BIO_new(BIO_s_mem());
if (!bio) throw Poco::IOException("Cannot create BIO for writing public key");
if (!bio)
{
std::string msg = "EVPPKey::save(ostream*, ostream*, const string&)\n";
msg.append("Cannot create BIO for writing public key");
throw Poco::IOException(getError(msg));
}
if (!PEM_write_bio_PUBKEY(bio, _pEVPPKey))
{
std::string msg = "EVPPKey::save(ostream*, ostream*, const string&)\n";
msg.append("Failed to write public key to stream");
BIO_free(bio);
throw Poco::WriteFileException("Failed to write public key to stream");
throw Poco::WriteFileException(getError(msg));
}
char* pData;
long size = BIO_get_mem_data(bio, &pData);
@@ -197,7 +369,12 @@ void EVPPKey::save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyStre
if (pPrivateKeyStream)
{
BIO* bio = BIO_new(BIO_s_mem());
if (!bio) throw Poco::IOException("Cannot create BIO for writing public key");
if (!bio)
{
std::string msg = "EVPPKey::save(ostream*, ostream*, const string&)\n";
msg.append("Cannot create BIO for writing private key");
throw Poco::IOException(getError(msg));
}
int rc = 0;
if (privateKeyPassphrase.empty())
rc = PEM_write_bio_PrivateKey(bio, _pEVPPKey, 0, 0, 0, 0, 0);
@@ -207,8 +384,10 @@ void EVPPKey::save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyStre
static_cast<int>(privateKeyPassphrase.length()), 0, 0);
if (!rc)
{
std::string msg = "EVPPKey::save(ostream*, ostream*, const string&)\n";
msg.append("Failed to write private key to stream");
BIO_free(bio);
throw Poco::FileException("Failed to write private key to stream");
throw Poco::FileException(getError(msg));
}
char* pData;
long size = BIO_get_mem_data(bio, &pData);
@@ -224,8 +403,11 @@ EVP_PKEY* EVPPKey::duplicate(const EVP_PKEY* pFromKey, EVP_PKEY** pToKey)
"provided key pointer is null.");
*pToKey = EVP_PKEY_new();
if (!*pToKey) throw NullPointerException("EVPPKey::duplicate(): "
"EVP_PKEY_new() returned null.");
if (!*pToKey)
{
std::string msg = "EVPPKey::duplicate():EVP_PKEY_new()\n";
throw NullPointerException(getError(msg));
}
int keyType = type(pFromKey);
switch (keyType)
@@ -238,7 +420,11 @@ EVP_PKEY* EVPPKey::duplicate(const EVP_PKEY* pFromKey, EVP_PKEY** pToKey)
EVP_PKEY_set1_RSA(*pToKey, pRSA);
RSA_free(pRSA);
}
else throw OpenSSLException("EVPPKey::duplicate(): EVP_PKEY_get1_RSA()");
else
{
std::string msg = "EVPPKey::duplicate():EVP_PKEY_get1_RSA()\n";
throw OpenSSLException(getError(msg));
}
break;
}
case EVP_PKEY_EC:
@@ -250,14 +436,24 @@ EVP_PKEY* EVPPKey::duplicate(const EVP_PKEY* pFromKey, EVP_PKEY** pToKey)
EC_KEY_free(pEC);
int cmp = EVP_PKEY_cmp_parameters(*pToKey, pFromKey);
if (cmp < 0)
throw OpenSSLException("EVPPKey::duplicate(): EVP_PKEY_cmp_parameters()");
{
std::string msg = "EVPPKey::duplicate():EVP_PKEY_cmp_parameters()\n";
throw OpenSSLException(getError(msg));
}
if (0 == cmp)
{
if(!EVP_PKEY_copy_parameters(*pToKey, pFromKey))
throw OpenSSLException("EVPPKey::duplicate(): EVP_PKEY_copy_parameters()");
{
std::string msg = "EVPPKey::duplicate():EVP_PKEY_copy_parameters()\n";
throw OpenSSLException(getError(msg));
}
}
}
else throw OpenSSLException();
else
{
std::string msg = "EVPPKey::duplicate():EVP_PKEY_get1_EC_KEY()\n";
throw OpenSSLException(getError(msg));
}
break;
}
default:
@@ -281,7 +477,8 @@ void EVPPKey::newECKey(const char* ecCurveName)
EC_KEY_free(pEC);
return;
err:
throw OpenSSLException("EVPPKey:newECKey()");
std::string msg = "EVPPKey::newECKey()\n";
throw OpenSSLException(getError(msg));
}

159
Crypto/src/Envelope.cpp Normal file
View File

@@ -0,0 +1,159 @@
//
// Envelope.cpp
//
// Library: Crypto
// Package: Envelope
// Module: Envelope
//
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#include "Poco/Crypto/Envelope.h"
namespace Poco {
namespace Crypto {
Envelope::Envelope(int cipherNID): _pCipher(EVP_get_cipherbynid(cipherNID)),
_pCtx(EVP_CIPHER_CTX_new())
{
poco_check_ptr(_pCipher);
poco_check_ptr(_pCtx);
if (1 != EVP_CIPHER_CTX_init(_pCtx))
handleErrors(std::string("Envelope():EVP_CIPHER_CTX_init()"));
_iv.resize(ivSize(), 0);
}
Envelope::Envelope(const EVPPKey& key, int cipherNID):
Envelope(cipherNID)
{
addKey(key);
}
Envelope::Envelope(const EVPPKeyVec& keys, int cipherNID):
Envelope(cipherNID)
{
for (const auto& k : keys) addKey(k);
}
Envelope::~Envelope()
{
for (auto& pK : _pubKeys)
EVP_PKEY_free(pK);
EVP_CIPHER_CTX_free(_pCtx);
}
void Envelope::addKey(const EVPPKey& key)
{
EVP_PKEY* pKey;
_pubKeys.push_back(EVPPKey::duplicate((const EVP_PKEY*)key, &pKey));
_encKeys.emplace_back(EVP_PKEY_size(_pubKeys.back()));
}
const Envelope::ByteVec& Envelope::seal(const ByteVec& plainData)
{
std::vector<Byte*> pEncKeys(_encKeys.size(), 0);
std::vector<int> encKeysSizes(_encKeys.size(), 0);
int i = 0;
for (const auto& k : _encKeys)
pEncKeys[i++] = new Byte[k.size()];
int noOfKeys = static_cast<int>(_pubKeys.size());
if (_encKeys.size() != EVP_SealInit(_pCtx, _pCipher, &pEncKeys[0], &encKeysSizes[0], &_iv[0], &_pubKeys[0], noOfKeys))
{
i = 0;
for (; i < _encKeys.size(); ++i) delete [] pEncKeys[i];
handleErrors(std::string("Envelope::seal():EVP_SealInit()"));
}
i = 0;
for (auto& k : _encKeys)
{
if (encKeysSizes[i] != k.size())
k.resize(encKeysSizes[i]);
std::memcpy(&k[0], pEncKeys[i], encKeysSizes[i]);
++i;
}
i = 0;
for (; i < _encKeys.size(); ++i) delete [] pEncKeys[i];
int cipherTextLen = 0, len = 0;
int plainDataSize = static_cast<int>(plainData.size());
_encContent.resize(plainDataSize + blockSize());
if (1 != EVP_SealUpdate(_pCtx, &_encContent[0], &len, &plainData[0], plainDataSize))
handleErrors(std::string("Envelope::seal():EVP_SealUpdate()"));
cipherTextLen = len;
poco_assert (cipherTextLen < _encContent.size());
if(1 != EVP_SealFinal(_pCtx, &_encContent[len], &len))
handleErrors(std::string("Envelope::seal():EVP_SealFinal()"));
cipherTextLen += len;
poco_assert (cipherTextLen <= _encContent.size());
_encContent.resize(cipherTextLen);
return _encContent;
}
const Envelope::ByteVec& Envelope::seal(const std::string& plainText)
{
return seal(ByteVec(plainText.begin(), plainText.end()));
}
Envelope::ByteVec Envelope::open(const EVPPKey& privKey, const ByteVec& encKey, const ByteVec& iv)
{
if (iv.size() > 0) _iv = iv;
int encContentLen = static_cast<int>(_encContent.size());
int blockSz = blockSize();
int mod = encContentLen % blockSz;
if (mod || (encContentLen < blockSz))
{
throw Poco::InvalidArgumentException(
Poco::format("Envelope::open(): bad encrypted buffer size: %z (must be N x %d)",
_encContent.size(), blockSz));
}
int encKeyLen = static_cast<int>(encKey.size());
EVP_PKEY* pKey = const_cast<EVP_PKEY*>((const EVP_PKEY*)privKey);
if (1 != EVP_OpenInit(_pCtx, _pCipher, &encKey[0], encKeyLen, &_iv[0], pKey))
handleErrors(std::string("Envelope::open():EVP_OpenInit()"));
ByteVec plainData(_encContent.size()+blockSz, 0);
int len = 0;
if(1 != EVP_OpenUpdate(_pCtx, &plainData[0], &len, &_encContent[0], encContentLen))
handleErrors(std::string("Envelope::open():EVP_OpenUpdate()"));
int totalLen = len;
if(1 != EVP_OpenFinal(_pCtx, &plainData[len], &len))
handleErrors(std::string("Envelope::open():EVP_OpenFinal()"));
totalLen += len;
plainData.resize(totalLen);
return plainData;
}
void Envelope::handleErrors(std::string&& msg)
{
unsigned long err;
while ((err = ERR_get_error()))
{
if (!msg.empty()) msg.append("\n");
msg.append(ERR_error_string(err, 0));
}
throw CryptoException(msg);
}
} } // namespace Poco::Crypto

Some files were not shown because too many files have changed in this diff Show More