]> granicus.if.org Git - php/commitdiff
Re-enable OCI8 DLL builds with Oracle 10g & 11g client libraries on
authorChristopher Jones <sixd@php.net>
Wed, 9 Oct 2013 19:17:11 +0000 (12:17 -0700)
committerChristopher Jones <sixd@php.net>
Wed, 9 Oct 2013 19:17:11 +0000 (12:17 -0700)
Windows, in addition to Oracle 12c.  From discussions with Anatol &
Pierre this seems to be the most direct way for the Windows PECL build
scripts to automatically create links to the generated DLLs.  The
issue is that the name php_oci8_12c.dll doesn't match the package
name.

In the far future when php_oci8.dll (with Oracle 10g) is no longer
built then another Windows PECL packaging fix will be needed.

ext/oci8/config.w32
ext/oci8/package.xml

index 750f163950cc96f5628749eb84e4b833f46873c8..d83bf3fbdb7d5342eeefd584fa76504b63cf57b1 100644 (file)
@@ -1,6 +1,97 @@
 // $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"
+       }
+}
+
+if (PHP_OCI8 != "no" && PHP_OCI8_12C != "no") {
+       if (!PHP_OCI8_SHARED && !PHP_OCI8_12C_SHARED) {
+               WARNING("oci8 and oci8-12c provide the same extension and cannot both be built statically");
+               PHP_OCI8 = "no"
+       }
+}
+
+if (PHP_OCI8_11G != "no" && PHP_OCI8_12C != "no") {
+       if (!PHP_OCI8_11G_SHARED && !PHP_OCI8_12C_SHARED) {
+               WARNING("oci8-11g and oci8-12c provide the same extension and cannot both be built statically");
+               PHP_OCI8_11G = "no"
+       }
+}
+
+ARG_WITH("oci8", "OCI8 support", "no");
+
+if (PHP_OCI8 != "no") {
+
+       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);
+               AC_DEFINE('HAVE_OCI_INSTANT_CLIENT', 1);
+
+       } else {
+               WARNING("oci8 not enabled: Oracle Database client 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);
+
+       } else {
+               WARNING("oci8-11g not enabled: Oracle Database client libraries or Oracle 11g Instant Client not found");
+               PHP_OCI8_11G = "no"
+       }
+}
+
 ARG_WITH("oci8-12c", "OCI8 support using Oracle Database 12c Instant Client", "no");
 
 if (PHP_OCI8_12C != "no") {
index 47e5415aa83942973a3b48d407674ba7c4abef67..d85faf046c97011222b47b4adb4e9fdef546d0bf 100644 (file)
@@ -60,6 +60,9 @@ Bump mininum requirements for PHP OCI8 2.0 to PHP 5.2 and Oracle
 client library 10.2 (Note this will connect to Oracle Database 8.1.7
 onwards). Use the older OCI8 1.4 if an earlier PHP version or older
 Oracle client library support is necessary.
+
+Re-enable php_oci8.dll and php_oci8_11g.dll for Windows builds so URL
+linking works in the new Windows PECL infrastructure.
   </notes>
  <contents>
   <dir name="/">