Skip to content

Commit

Permalink
Add Windows support for OCI 19
Browse files Browse the repository at this point in the history
As requested by Christopher Jones.
  • Loading branch information
cmb69 committed Dec 14, 2020
1 parent 15d9c42 commit 2e974c8
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 1 deletion.
55 changes: 55 additions & 0 deletions ext/oci8/config.w32
Original file line number Diff line number Diff line change
Expand Up @@ -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") {
Expand Down Expand Up @@ -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"
}
}
2 changes: 1 addition & 1 deletion ext/oci8/oci8.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
/* }}} */
Expand Down
1 change: 1 addition & 0 deletions ext/oci8/php_oci8.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
1 change: 1 addition & 0 deletions php.ini-development
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions php.ini-production
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 2e974c8

Please sign in to comment.