]> granicus.if.org Git - php/commitdiff
implement basic config support for OpenSSL 1.1.x
authorAnatol Belski <ab@php.net>
Sat, 7 Jan 2017 22:47:04 +0000 (23:47 +0100)
committerAnatol Belski <ab@php.net>
Sat, 7 Jan 2017 23:25:46 +0000 (00:25 +0100)
ext/openssl/config.w32
win32/build/confutils.js

index 066d7bc8537792a5966610463af05e7d474fec40..1f5fa39b8577a4ac50547ebd9b1b9b194235e7b6 100644 (file)
@@ -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;
+               }
        }
 }
 
index 1307d732ee6ac76f38b0417de73a96025664f611..841fa293df7e237114d72fae9af8a435dc199b67 100644 (file)
@@ -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;
+}
+