]> granicus.if.org Git - php/commitdiff
Add Windows support for OCI 19
authorChristoph M. Becker <cmbecker69@gmx.de>
Mon, 14 Dec 2020 21:42:54 +0000 (22:42 +0100)
committerChristoph M. Becker <cmbecker69@gmx.de>
Mon, 14 Dec 2020 22:11:04 +0000 (23:11 +0100)
As requested by Christopher Jones.

ext/oci8/config.w32
ext/oci8/oci8.c
ext/oci8/php_oci8.h
php.ini-development
php.ini-production

index 6ac80aa9865a622c27811309f408a75da0ccabaf..5f0da8f33d2d8438ba6cca0107e98beb757d60d9 100644 (file)
@@ -21,6 +21,27 @@ if (PHP_OCI8_11G != "no" && PHP_OCI8_12C != "no") {
        }
 }
 
+if (PHP_OCI8 != "no" && PHP_OCI8_19 != "no") {
+       if (!PHP_OCI8_SHARED && !PHP_OCI8_19_SHARED) {
+               WARNING("oci8 and oci8-19 provide the same extension and cannot both be built statically");
+               PHP_OCI8 = "no"
+       }
+}
+
+if (PHP_OCI8_11G != "no" && PHP_OCI8_19 != "no") {
+       if (!PHP_OCI8_11G_SHARED && !PHP_OCI8_19_SHARED) {
+               WARNING("oci8-11g and oci8-19 provide the same extension and cannot both be built statically");
+               PHP_OCI8_11G = "no"
+       }
+}
+
+if (PHP_OCI8_12C != "no" && PHP_OCI8_19 != "no") {
+       if (!PHP_OCI8_12C_SHARED && !PHP_OCI8_19_SHARED) {
+               WARNING("oci8-12c and oci8-19 provide the same extension and cannot both be built statically");
+               PHP_OCI8_12C = "no"
+       }
+}
+
 ARG_WITH("oci8", "OCI8 support", "no");
 
 if (PHP_OCI8 != "no") {
@@ -124,3 +145,37 @@ if (PHP_OCI8_12C != "no") {
                PHP_OCI8_12C = "no"
        }
 }
+
+ARG_WITH("oci8-19", "OCI8 support using Oracle Database 19 Instant Client", "no");
+
+if (PHP_OCI8_19 != "no") {
+
+       oci8_19_dirs = new Array(
+               PHP_OCI8_19
+       );
+
+       oci8_19_lib_paths = "";
+       oci8_19_inc_paths = "";
+
+       // find the Oracle install
+       for (i = 0; i < oci8_19_dirs.length; i++) {
+               oci8_19_lib_paths += oci8_19_dirs[i] + "\\lib;";
+               oci8_19_lib_paths += oci8_19_dirs[i] + "\\lib\\msvc;";
+               oci8_19_inc_paths += oci8_19_dirs[i] + "\\include;";
+       }
+
+       oci8_19_inc_paths += PHP_PHP_BUILD + "\\include\\instantclient_12;"
+       oci8_19_lib_paths += PHP_PHP_BUILD + "\\lib\\instantclient_12;";
+
+       if (CHECK_HEADER_ADD_INCLUDE("oci.h", "CFLAGS_OCI8_19", oci8_19_inc_paths) &&
+                       CHECK_LIB("oci.lib", "oci8_19", oci8_19_lib_paths))
+       {
+               EXTENSION('oci8_19', 'oci8.c oci8_lob.c oci8_statement.c oci8_collection.c oci8_interface.c oci8_failover.c', null, null, null, "ext\\oci8_19")
+
+               AC_DEFINE('HAVE_OCI8', 1);
+               AC_DEFINE('HAVE_OCI_INSTANT_CLIENT', 1);
+       } else {
+               WARNING("oci8-19 not enabled: Oracle Database client libraries or Oracle Database 19 Instant Client not found");
+               PHP_OCI8_19 = "no"
+       }
+}
index 48b6c5c936c74a5080a9e7bab4931165744824dd..ad9b23a9c40acdc316a8305993a5e37d9980343b 100644 (file)
@@ -120,7 +120,7 @@ static sword php_oci_ping_init(php_oci_connection *connection, OCIError *errh);
 /* }}} */
 
 /* {{{ dynamically loadable module stuff */
-#if defined(COMPILE_DL_OCI8) || defined(COMPILE_DL_OCI8_11G) || defined(COMPILE_DL_OCI8_12C)
+#if defined(COMPILE_DL_OCI8) || defined(COMPILE_DL_OCI8_11G) || defined(COMPILE_DL_OCI8_12C) || defined(COMPILE_DL_OCI8_19)
 ZEND_GET_MODULE(oci8)
 #endif /* COMPILE_DL */
 /* }}} */
index c1ebf7b86e0c14d2a51eaea0344b0ba2b0ebecf8..e3e294ef4fc62940909237f1b7d7426c8f1ff7f5 100644 (file)
@@ -47,6 +47,7 @@ extern zend_module_entry oci8_module_entry;
 #define phpext_oci8_ptr &oci8_module_entry
 #define phpext_oci8_11g_ptr &oci8_module_entry
 #define phpext_oci8_12c_ptr &oci8_module_entry
+#define phpext_oci8_19_ptr &oci8_module_entry
 
 
 PHP_MINIT_FUNCTION(oci);
index 9eed34c6ac1b642d8f9d649d42bbe58ec2f6cd72..06e4a5af14df4afe64b91f16f1a4c7fc86139d8f 100644 (file)
@@ -932,6 +932,7 @@ default_socket_timeout = 60
 ;extension=exif      ; Must be after mbstring as it depends on it
 ;extension=mysqli
 ;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
+;extension=oci8_19  ; Use with Oracle Database 19 Instant Client
 ;extension=odbc
 ;extension=openssl
 ;extension=pdo_firebird
index 281272e3db8339d60a289c71208e9a347db422c2..d43db55e7b65b631c44cd81c7b9ad16d19cccf0a 100644 (file)
@@ -934,6 +934,7 @@ default_socket_timeout = 60
 ;extension=exif      ; Must be after mbstring as it depends on it
 ;extension=mysqli
 ;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
+;extension=oci8_19  ; Use with Oracle Database 19 Instant Client
 ;extension=odbc
 ;extension=openssl
 ;extension=pdo_firebird