From: Anatol Belski Date: Sat, 7 Jan 2017 22:47:04 +0000 (+0100) Subject: implement basic config support for OpenSSL 1.1.x X-Git-Tag: php-7.1.2RC1~126 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=df1e1fdcb99fabe1f7a6812ba96538e72148acc9;p=php implement basic config support for OpenSSL 1.1.x --- diff --git a/ext/openssl/config.w32 b/ext/openssl/config.w32 index 066d7bc853..1f5fa39b85 100644 --- a/ext/openssl/config.w32 +++ b/ext/openssl/config.w32 @@ -4,15 +4,22 @@ ARG_WITH("openssl", "OpenSSL support", "no"); if (PHP_OPENSSL != "no") { - if (CHECK_LIB("ssleay32.lib", "openssl", PHP_OPENSSL) && - CHECK_LIB("libeay32.lib", "openssl", PHP_OPENSSL) && - CHECK_LIB("crypt32.lib", "openssl") && - CHECK_HEADER_ADD_INCLUDE("openssl/ssl.h", "CFLAGS_OPENSSL")) { - EXTENSION("openssl", "openssl.c xp_ssl.c"); + var ret = SETUP_OPENSSL("openssl", PHP_OPENSSL); + if (ret > 0) { + EXTENSION("openssl", "openssl.c xp_ssl.c"); AC_DEFINE("HAVE_OPENSSL_EXT", PHP_OPENSSL_SHARED ? 0 : 1, "Have openssl"); AC_DEFINE("HAVE_OPENSSL", 1); - AC_DEFINE("HAVE_DSA_DEFAULT_METHOD", 1); + + switch (ret) { + /* Openssl 1.0.x and lower */ + case 1: + AC_DEFINE("HAVE_DSA_DEFAULT_METHOD", 1); + break; + /* Openssl 1.1.x */ + case 2: + break; + } } } diff --git a/win32/build/confutils.js b/win32/build/confutils.js index 1307d732ee..841fa293df 100644 --- a/win32/build/confutils.js +++ b/win32/build/confutils.js @@ -3264,3 +3264,25 @@ function force_all_shared() return !!PHP_ALL_SHARED && "yes" == PHP_ALL_SHARED; } +function SETUP_OPENSSL(target, path_to_check, common_name, use_env, add_dir_part, add_to_flag_only) +{ + var ret = 0; + var cflags_var = "CFLAGS_" + target.toUpperCase(); + + if (CHECK_LIB("ssleay32.lib", target, path_to_check, common_name) && + CHECK_LIB("libeay32.lib", target, path_to_check, common_name) && + CHECK_LIB("crypt32.lib", target, path_to_check, common_name) && + CHECK_HEADER_ADD_INCLUDE("openssl/ssl.h", cflags_var, path_to_check, use_env, add_dir_part, add_to_flag_only)) { + /* Openssl 1.0.x and lower */ + return 1; + } else if (CHECK_LIB("libcrypto.lib", target, path_to_check) && + CHECK_LIB("libssl.lib", target, path_to_check) && + CHECK_LIB("crypt32.lib", target, path_to_check, common_name) && + CHECK_HEADER_ADD_INCLUDE("openssl/ssl.h", cflags_var, path_to_check, use_env, add_dir_part, add_to_flag_only)) { + /* Openssl 1.1.x */ + return 2; + } + + return ret; +} +