diff --git a/Crypto/CMakeLists.txt b/Crypto/CMakeLists.txt index dfb80880e..8ba34a5b8 100644 --- a/Crypto/CMakeLists.txt +++ b/Crypto/CMakeLists.txt @@ -23,6 +23,10 @@ target_include_directories(Crypto PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) +if(MSVC AND OPENSSL_USE_STATIC_LIBS) + target_link_libraries(Crypto PUBLIC ws2_32.lib Crypt32.lib) +endif() + POCO_INSTALL(Crypto) POCO_GENERATE_PACKAGE(Crypto) diff --git a/Crypto/include/Poco/Crypto/Crypto.h b/Crypto/include/Poco/Crypto/Crypto.h index f63736e86..e2633fb2a 100644 --- a/Crypto/include/Poco/Crypto/Crypto.h +++ b/Crypto/include/Poco/Crypto/Crypto.h @@ -121,15 +121,30 @@ enum RSAPaddingMode #elif defined(POCO_EXTERNAL_OPENSSL) #if POCO_EXTERNAL_OPENSSL == POCO_EXTERNAL_OPENSSL_SLPRO #if defined(POCO_DLL) - #pragma comment(lib, "libeay32.lib") - #pragma comment(lib, "ssleay32.lib") + #if OPENSSL_VERSION_PREREQ(1,1) + #pragma comment(lib, "libcrypto.lib") + #pragma comment(lib, "libssl.lib") + #else + #pragma comment(lib, "libeay32.lib") + #pragma comment(lib, "ssleay32.lib") + #endif #else - #pragma comment(lib, "libeay32" POCO_LIB_SUFFIX) - #pragma comment(lib, "ssleay32" POCO_LIB_SUFFIX) + #if OPENSSL_VERSION_PREREQ(1,1) + #pragma comment(lib, "libcrypto" POCO_LIB_SUFFIX) + #pragma comment(lib, "libssl" POCO_LIB_SUFFIX) + #else + #pragma comment(lib, "libeay32" POCO_LIB_SUFFIX) + #pragma comment(lib, "ssleay32" POCO_LIB_SUFFIX) + #endif #endif #elif POCO_EXTERNAL_OPENSSL == POCO_EXTERNAL_OPENSSL_DEFAULT - #pragma comment(lib, "libeay32.lib") - #pragma comment(lib, "ssleay32.lib") + #if OPENSSL_VERSION_PREREQ(1,1) + #pragma comment(lib, "libcrypto.lib") + #pragma comment(lib, "libssl.lib") + #else + #pragma comment(lib, "libeay32.lib") + #pragma comment(lib, "ssleay32.lib") + #endif #endif #endif // POCO_INTERNAL_OPENSSL_MSVC_VER #if !defined(Crypto_EXPORTS) diff --git a/Foundation/src/pcre.h b/Foundation/src/pcre.h index 5ee5c9ab6..c92cf6a08 100644 --- a/Foundation/src/pcre.h +++ b/Foundation/src/pcre.h @@ -42,9 +42,9 @@ POSSIBILITY OF SUCH DAMAGE. /* The current PCRE version information. */ #define PCRE_MAJOR 8 -#define PCRE_MINOR 42 +#define PCRE_MINOR 43 #define PCRE_PRERELEASE -#define PCRE_DATE 2018-03-20 +#define PCRE_DATE 2019-02-23 /* When an application links to a PCRE DLL in Windows, the symbols that are imported have to be identified as such. When building PCRE, the appropriate diff --git a/Foundation/src/pcre_compile.c b/Foundation/src/pcre_compile.c index 208b9f635..b4b78b418 100644 --- a/Foundation/src/pcre_compile.c +++ b/Foundation/src/pcre_compile.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2016 University of Cambridge + Copyright (c) 1997-2018 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -7644,6 +7644,8 @@ for (;; ptr++) /* Can't determine a first byte now */ if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; + zerofirstchar = firstchar; + zerofirstcharflags = firstcharflags; continue; @@ -8684,13 +8686,20 @@ do { if (!is_anchored(scode, new_map, cd, atomcount)) return FALSE; } - /* Positive forward assertions and conditions */ + /* Positive forward assertion */ - else if (op == OP_ASSERT || op == OP_COND) + else if (op == OP_ASSERT) { if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE; } + /* Condition; not anchored if no second branch */ + else if (op == OP_COND) + { + if (scode[GET(scode,1)] != OP_ALT) return FALSE; + if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE; + } + /* Atomic groups */ else if (op == OP_ONCE || op == OP_ONCE_NC) diff --git a/Foundation/src/pcre_config.h b/Foundation/src/pcre_config.h index ea56cf017..7d95bd4f6 100644 --- a/Foundation/src/pcre_config.h +++ b/Foundation/src/pcre_config.h @@ -10,7 +10,13 @@ config.h by the "configure" script. In environments that use CMake, config-cmake.in is converted into config.h. If you are going to build PCRE "by hand" without using "configure" or CMake, you should copy the distributed config.h.generic to config.h, and edit the macro definitions to be the way you -need them. +need them. You must then add -DHAVE_CONFIG_H to all of your compile commands, +so that config.h is included at the start of every source. + +Alternatively, you can avoid editing by using -D on the compiler command line +to set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H, +but if you do, default values will be taken from config.h for non-boolean +macros that are not defined on the command line. Boolean macros such as HAVE_STDLIB_H and SUPPORT_PCRE8 should either be defined (conventionally to 1) for TRUE, and not defined at all for FALSE. All such @@ -283,7 +289,7 @@ sure both macros are undefined; an emulation function will then be used. */ #define PACKAGE_NAME "PCRE" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "PCRE 8.40" +#define PACKAGE_STRING "PCRE 8.43" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "pcre" @@ -292,7 +298,7 @@ sure both macros are undefined; an emulation function will then be used. */ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "8.40" +#define PACKAGE_VERSION "8.43" /* The value of PARENS_NEST_LIMIT specifies the maximum depth of nested parentheses (of any kind) in a pattern. This limits the amount of system @@ -394,7 +400,7 @@ sure both macros are undefined; an emulation function will then be used. */ /* #undef SUPPORT_VALGRIND */ /* Version number of package */ -#define VERSION "8.40" +#define VERSION "8.43" /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ diff --git a/PDF/CMakeLists.txt b/PDF/CMakeLists.txt index 37e197be1..ed850fd12 100644 --- a/PDF/CMakeLists.txt +++ b/PDF/CMakeLists.txt @@ -137,8 +137,6 @@ target_include_directories(PDF PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) -endif() - POCO_INSTALL(PDF) POCO_GENERATE_PACKAGE(PDF) diff --git a/cmake/PocoMacros.cmake b/cmake/PocoMacros.cmake index 49140a5cf..4490b7b64 100644 --- a/cmake/PocoMacros.cmake +++ b/cmake/PocoMacros.cmake @@ -17,17 +17,30 @@ if (WIN32) get_filename_component(sdk_dir "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows;CurrentInstallFolder]" REALPATH) get_filename_component(kit_dir "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot]" REALPATH) get_filename_component(kit81_dir "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot81]" REALPATH) + get_filename_component(kit10_dir "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" REALPATH) + get_filename_component(kit10wow_dir "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" REALPATH) + file(GLOB kit10_list ${kit10_dir}/bin/10.* ${kit10wow_dir}/bin/10.*) if (X64) set(sdk_bindir "${sdk_dir}/bin/x64") set(kit_bindir "${kit_dir}/bin/x64") set(kit81_bindir "${kit81_dir}/bin/x64") + foreach (tmp_elem ${kit10_list}) + if (IS_DIRECTORY ${tmp_elem}) + list(APPEND kit10_bindir "${tmp_elem}/x64") + endif() + endforeach() else (X64) set(sdk_bindir "${sdk_dir}/bin") set(kit_bindir "${kit_dir}/bin/x86") set(kit81_bindir "${kit81_dir}/bin/x86") + foreach (tmp_elem ${kit10_list}) + if (IS_DIRECTORY ${tmp_elem}) + list(APPEND kit10_bindir "${tmp_elem}/x86") + endif() + endforeach() endif (X64) endif () - find_program(CMAKE_MC_COMPILER mc.exe HINTS "${sdk_bindir}" "${kit_bindir}" "${kit81_bindir}" + find_program(CMAKE_MC_COMPILER mc.exe HINTS "${sdk_bindir}" "${kit_bindir}" "${kit81_bindir}" ${kit10_bindir} DOC "path to message compiler") if (NOT CMAKE_MC_COMPILER) message(FATAL_ERROR "message compiler not found: required to build")