From: Pierre Joye Date: Fri, 1 Aug 2008 15:07:59 +0000 (+0000) Subject: - MFH: support for Oracle 11g (either 8 or 11g can be built but not both X-Git-Tag: BEFORE_NS_RULES_CHANGE~921 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ef6cc19055f44ee2c3dc411daa8df97c0068112b;p=php - MFH: support for Oracle 11g (either 8 or 11g can be built but not both --- diff --git a/ext/oci8/config.w32 b/ext/oci8/config.w32 index c6487d6a18..fdd7fa5e48 100644 --- a/ext/oci8/config.w32 +++ b/ext/oci8/config.w32 @@ -1,14 +1,38 @@ // $Id$ // vim:ft=javascript +if (PHP_OCI8 != "no" && PHP_OCI8_11G != "no") { + if (!PHP_OCI8_SHARED && !PHP_OCI8_11G_SHARED) { + WARNING("oci8 and oci8-11g provide the same extension and cannot both be built statically"); + PHP_OCI8 = "no" + PHP_OCI8_11G = "no" + } +} + ARG_WITH("oci8", "OCI8 support", "no"); if (PHP_OCI8 != "no") { - if (CHECK_HEADER_ADD_INCLUDE("oci.h", "CFLAGS_OCI8", PHP_PHP_BUILD + "\\include\\instantclient;" + PHP_OCI8) && - CHECK_LIB("oci.lib", "oci8", PHP_PHP_BUILD + "\\lib\\instantclient;" + PHP_OCI8) - - ) { + oci8_dirs = new Array( + PHP_OCI8 + ); + + oci8_lib_paths = ""; + oci8_inc_paths = ""; + + // find the Oracle install + for (i = 0; i < oci8_dirs.length; i++) { + oci8_lib_paths += oci8_dirs[i] + "\\lib;"; + oci8_lib_paths += oci8_dirs[i] + "\\lib\\msvc;"; + oci8_inc_paths += oci8_dirs[i] + "\\include;"; + } + + oci8_inc_paths += PHP_PHP_BUILD + "\\include\\instantclient;" + oci8_lib_paths += PHP_PHP_BUILD + "\\lib\\instantclient;"; + + if (CHECK_HEADER_ADD_INCLUDE("oci.h", "CFLAGS_OCI8", oci8_inc_paths) && + CHECK_LIB("oci.lib", "oci8", oci8_lib_paths)) + { EXTENSION('oci8', 'oci8.c oci8_lob.c oci8_statement.c oci8_collection.c oci8_interface.c'); AC_DEFINE('HAVE_OCI8', 1); @@ -16,7 +40,43 @@ if (PHP_OCI8 != "no") { AC_DEFINE('HAVE_OCI_LOB_READ2', 1); } else { - WARNING("oci8 not enabled; Oracle Database libraries or Oracle 10g Instant Client not found"); + WARNING("oci8 not enabled: Oracle Database libraries or Oracle 10g Instant Client not found"); + PHP_OCI8 = "no" } } +ARG_WITH("oci8-11g", "OCI8 support using Oracle 11g Instant Client", "no"); + +if (PHP_OCI8_11G != "no") { + + oci8_11g_dirs = new Array( + PHP_OCI8_11G + ); + + oci8_11g_lib_paths = ""; + oci8_11g_inc_paths = ""; + + // find the Oracle install + for (i = 0; i < oci8_11g_dirs.length; i++) { + oci8_11g_lib_paths += oci8_11g_dirs[i] + "\\lib;"; + oci8_11g_lib_paths += oci8_11g_dirs[i] + "\\lib\\msvc;"; + oci8_11g_inc_paths += oci8_11g_dirs[i] + "\\include;"; + } + + oci8_11g_inc_paths += PHP_PHP_BUILD + "\\include\\instantclient_11;" + oci8_11g_lib_paths += PHP_PHP_BUILD + "\\lib\\instantclient_11;"; + + if (CHECK_HEADER_ADD_INCLUDE("oci.h", "CFLAGS_OCI8_11G", oci8_11g_inc_paths) && + CHECK_LIB("oci.lib", "oci8_11g", oci8_11g_lib_paths)) + { + EXTENSION('oci8_11g', 'oci8.c oci8_lob.c oci8_statement.c oci8_collection.c oci8_interface.c', null, null, null, "ext\\oci8_11g") + + AC_DEFINE('HAVE_OCI8', 1); + AC_DEFINE('HAVE_OCI_INSTANT_CLIENT', 1); + AC_DEFINE('HAVE_OCI_LOB_READ2', 1); + + } else { + WARNING("oci8-11g not enabled: Oracle Database libraries or Oracle 11g Instant Client not found"); + PHP_OCI8_11G = "no" + } +} diff --git a/ext/oci8/php_oci8.h b/ext/oci8/php_oci8.h index e0f59e1799..73ce8352e8 100644 --- a/ext/oci8/php_oci8.h +++ b/ext/oci8/php_oci8.h @@ -50,6 +50,7 @@ extern zend_module_entry oci8_module_entry; #define phpext_oci8_ptr &oci8_module_entry +#define phpext_oci8_11g_ptr &oci8_module_entry PHP_MINIT_FUNCTION(oci);