diff --git a/ext/ereg/config.w32 b/ext/ereg/config.w32 index 9a25368df08..59cdb046859 100644 --- a/ext/ereg/config.w32 +++ b/ext/ereg/config.w32 @@ -1,7 +1,11 @@ // $Id$ // vim:ft=javascript -EXTENSION("ereg", "ereg.c", false /* never shared */, "-Dregexec=php_regexec -Dregerror=php_regerror -Dregfree=php_regfree -Dregcomp=php_regcomp -Iext/ereg/regex"); -ADD_SOURCES("ext/ereg/regex", "regcomp.c regexec.c regerror.c regfree.c", "ereg"); -AC_DEFINE('REGEX', 1, 'Bundled regex'); -AC_DEFINE('HSREGEX', 1, 'Bundled regex'); +ARG_WITH("ereg", "POSIX extended regular expressions", "yes"); +if (PHP_EREG != "no") { + + EXTENSION("ereg", "ereg.c", false /* never shared */, "-Dregexec=php_regexec -Dregerror=php_regerror -Dregfree=php_regfree -Dregcomp=php_regcomp -Iext/ereg/regex"); + ADD_SOURCES("ext/ereg/regex", "regcomp.c regexec.c regerror.c regfree.c", "ereg"); + AC_DEFINE('REGEX', 1, 'Bundled regex'); + AC_DEFINE('HSREGEX', 1, 'Bundled regex'); +} \ No newline at end of file diff --git a/ext/libxml/config.w32 b/ext/libxml/config.w32 index 08a06af1f1e..bfac5c839a3 100644 --- a/ext/libxml/config.w32 +++ b/ext/libxml/config.w32 @@ -5,7 +5,7 @@ ARG_WITH("libxml", "LibXML support", "yes"); if (PHP_LIBXML == "yes") { if (CHECK_LIB("libxml2_a_dll.lib;libxml2_a.lib", "libxml") && - CHECK_LIB("iconv_a.lib;iconv.lib", "libxml") && + CHECK_LIB("libiconv_a.lib;iconv_a.lib;libiconv.lib;iconv.lib", "libxml") && CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS")) { EXTENSION("libxml", "libxml.c", false /* never shared */); diff --git a/ext/mysqlnd/config.w32 b/ext/mysqlnd/config.w32 index a49a918b7f5..d495672cf71 100644 --- a/ext/mysqlnd/config.w32 +++ b/ext/mysqlnd/config.w32 @@ -1,21 +1,25 @@ // $Id$ // vim:ft=javascript -if (CHECK_LIB("ws2_32.lib", "mysqlnd")) { - mysqlnd_source = - "mysqlnd.c " + - "mysqlnd_block_alloc.c " + - "mysqlnd_charset.c " + - "mysqlnd_debug.c " + - "mysqlnd_loaddata.c " + - "mysqlnd_palloc.c " + - "mysqlnd_ps.c " + - "mysqlnd_ps_codec.c " + - "mysqlnd_qcache.c " + - "mysqlnd_result.c " + - "mysqlnd_result_meta.c " + - "mysqlnd_statistics.c " + - "mysqlnd_wireprotocol.c " + - "php_mysqlnd.c"; - EXTENSION("mysqlnd", mysqlnd_source, false); -} +ARG_WITH("mysqlnd", "Mysql Native Client Driver", "yes"); +if (PHP_MYSQLND != "no") { + + if (CHECK_LIB("ws2_32.lib", "mysqlnd")) { + mysqlnd_source = + "mysqlnd.c " + + "mysqlnd_block_alloc.c " + + "mysqlnd_charset.c " + + "mysqlnd_debug.c " + + "mysqlnd_loaddata.c " + + "mysqlnd_palloc.c " + + "mysqlnd_ps.c " + + "mysqlnd_ps_codec.c " + + "mysqlnd_qcache.c " + + "mysqlnd_result.c " + + "mysqlnd_result_meta.c " + + "mysqlnd_statistics.c " + + "mysqlnd_wireprotocol.c " + + "php_mysqlnd.c"; + EXTENSION("mysqlnd", mysqlnd_source, false); + } +} \ No newline at end of file diff --git a/ext/zlib/config.w32 b/ext/zlib/config.w32 index 3639276c8c1..d5981a99ce4 100644 --- a/ext/zlib/config.w32 +++ b/ext/zlib/config.w32 @@ -6,7 +6,7 @@ ARG_ENABLE("zlib", "ZLIB support", "yes"); if (PHP_ZLIB == "yes") { EXTENSION("zlib", "zlib.c zlib_fopen_wrapper.c zlib_filter.c", null, "/D ZLIB_EXPORTS"); AC_DEFINE("HAVE_ZLIB", 1, "ZLIB support"); - CHECK_LIB("zlib.lib", "zlib", PHP_ZLIB); + CHECK_LIB("zlib_a.lib;zlib.lib", "zlib", PHP_ZLIB); CHECK_HEADER_ADD_INCLUDE("zlib.h", "CFLAGS", "..\\zlib;" + php_usual_include_suspects); if (!PHP_ZLIB_SHARED) { ADD_DEF_FILE("ext\\zlib\\php_zlib.def"); diff --git a/sapi/apache2filter/config.w32 b/sapi/apache2filter/config.w32 index 9b26f9ef3f0..361d0310742 100755 --- a/sapi/apache2filter/config.w32 +++ b/sapi/apache2filter/config.w32 @@ -4,7 +4,9 @@ ARG_ENABLE('apache2filter', 'Build Apache 2.x filter', 'no'); if (PHP_APACHE2FILTER != "no") { - if (CHECK_HEADER_ADD_INCLUDE("httpd.h", "CFLAGS_APACHE2FILTER", PHP_PHP_BUILD + "\\include\\apache2") && + if (PHP_ZTS == "no") { + WARNING("Apache2 module requires an --enable-zts build of PHP on windows"); + } else if (CHECK_HEADER_ADD_INCLUDE("httpd.h", "CFLAGS_APACHE2FILTER", PHP_PHP_BUILD + "\\include\\apache2") && CHECK_LIB("libhttpd.lib", "apache2filter", PHP_PHP_BUILD + "\\lib\\apache2") && CHECK_LIB("libapr.lib", "apache2filter", PHP_PHP_BUILD + "\\lib\\apache2") && CHECK_LIB("libaprutil.lib", "apache2filter", PHP_PHP_BUILD + "\\lib\\apache2") @@ -20,7 +22,9 @@ if (PHP_APACHE2FILTER != "no") { ARG_ENABLE('apache2-2filter', 'Build Apache 2.2.x filter', 'no'); if (PHP_APACHE2_2FILTER != "no") { - if (CHECK_HEADER_ADD_INCLUDE("httpd.h", "CFLAGS_APACHE2_2FILTER", PHP_PHP_BUILD + "\\include\\apache2_2") && + if (PHP_ZTS == "no") { + WARNING("Apache2 module requires an --enable-zts build of PHP on windows"); + } else if (CHECK_HEADER_ADD_INCLUDE("httpd.h", "CFLAGS_APACHE2_2FILTER", PHP_PHP_BUILD + "\\include\\apache2_2") && CHECK_LIB("libhttpd.lib", "apache2_2filter", PHP_PHP_BUILD + "\\lib\\apache2_2") && CHECK_LIB("libapr-1.lib", "apache2_2filter", PHP_PHP_BUILD + "\\lib\\apache2_2") && CHECK_LIB("libaprutil-1.lib", "apache2_2filter", PHP_PHP_BUILD + "\\lib\\apache2_2") diff --git a/sapi/apache2handler/config.w32 b/sapi/apache2handler/config.w32 index 486af80d8db..2f2084cb142 100644 --- a/sapi/apache2handler/config.w32 +++ b/sapi/apache2handler/config.w32 @@ -4,12 +4,14 @@ ARG_ENABLE('apache2handler', 'Build Apache 2.x handler', 'no'); if (PHP_APACHE2HANDLER != "no") { - if (CHECK_HEADER_ADD_INCLUDE("httpd.h", "CFLAGS_APACHE2HANDLER", PHP_PHP_BUILD + "\\include\\apache2") && + if (PHP_ZTS == "no") { + WARNING("Apache2 module requires an --enable-zts build of PHP on windows"); + } else if (CHECK_HEADER_ADD_INCLUDE("httpd.h", "CFLAGS_APACHE2HANDLER", PHP_PHP_BUILD + "\\include\\apache2") && CHECK_LIB("libhttpd.lib", "apache2handler", PHP_PHP_BUILD + "\\lib\\apache2") && CHECK_LIB("libapr.lib", "apache2handler", PHP_PHP_BUILD + "\\lib\\apache2") && CHECK_LIB("libaprutil.lib", "apache2handler", PHP_PHP_BUILD + "\\lib\\apache2") ) { - SAPI('apache2handler', 'mod_php.c sapi_apache2.c apache_config.c php_functions.c', + SAPI('apache2handler', 'mod_php5.c sapi_apache2.c apache_config.c php_functions.c', 'php' + PHP_VERSION + 'apache2.dll', '/D PHP_APACHE2_EXPORTS /I win32'); } else { @@ -20,12 +22,14 @@ if (PHP_APACHE2HANDLER != "no") { ARG_ENABLE('apache2-2handler', 'Build Apache 2.2.x handler', 'no'); if (PHP_APACHE2_2HANDLER != "no") { - if (CHECK_HEADER_ADD_INCLUDE("httpd.h", "CFLAGS_APACHE2_2HANDLER", PHP_PHP_BUILD + "\\include\\apache2_2") && + if (PHP_ZTS == "no") { + WARNING("Apache2 module requires an --enable-zts build of PHP on windows"); + } else if (CHECK_HEADER_ADD_INCLUDE("httpd.h", "CFLAGS_APACHE2_2HANDLER", PHP_PHP_BUILD + "\\include\\apache2_2") && CHECK_LIB("libhttpd.lib", "apache2_2handler", PHP_PHP_BUILD + "\\lib\\apache2_2") && CHECK_LIB("libapr-1.lib", "apache2_2handler", PHP_PHP_BUILD + "\\lib\\apache2_2") && CHECK_LIB("libaprutil-1.lib", "apache2_2handler", PHP_PHP_BUILD + "\\lib\\apache2_2") ) { - SAPI('apache2_2handler', 'mod_php.c sapi_apache2.c apache_config.c php_functions.c', + SAPI('apache2_2handler', 'mod_php5.c sapi_apache2.c apache_config.c php_functions.c', 'php' + PHP_VERSION + 'apache2_2.dll', '/D PHP_APACHE2_EXPORTS /I win32', 'sapi\\apache2_2handler'); diff --git a/sapi/isapi/config.w32 b/sapi/isapi/config.w32 index 13d0e016eb7..80123527442 100644 --- a/sapi/isapi/config.w32 +++ b/sapi/isapi/config.w32 @@ -5,9 +5,9 @@ ARG_ENABLE('isapi', 'Build ISAPI version of PHP', 'no'); if (PHP_ISAPI == "yes") { if (PHP_ZTS == "no") { - ERROR("ISAPI module requires an --enable-zts build of PHP"); + WARNING("ISAPI module requires an --enable-zts build of PHP"); + } else { + SAPI('isapi', 'php5isapi.c', 'php' + PHP_VERSION + 'isapi.dll', '/D PHP5ISAPI_EXPORTS'); + ADD_FLAG('LDFLAGS_ISAPI', '/DEF:sapi\\isapi\\php5isapi.def'); } - - SAPI('isapi', 'php5isapi.c', 'php' + PHP_VERSION + 'isapi.dll', '/D PHP5ISAPI_EXPORTS'); - ADD_FLAG('LDFLAGS_ISAPI', '/DEF:sapi\\isapi\\php5isapi.def'); } diff --git a/win32/build/confutils.js b/win32/build/confutils.js index 6e040aa1dc2..3ae25434c72 100644 --- a/win32/build/confutils.js +++ b/win32/build/confutils.js @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -// $Id: confutils.js,v 1.72 2008-02-17 01:29:16 pajoye Exp $ +// $Id: confutils.js,v 1.73 2008-05-14 03:32:27 auroraeosrose Exp $ var STDOUT = WScript.StdOut; var STDERR = WScript.StdErr; @@ -586,6 +586,17 @@ function CHECK_LIB(libnames, target, path_to_check, common_name) // libnames can be ; separated list of accepted library names libnames = libnames.split(';'); + // for debug builds, lib may have _debug appended, we want that first + if (PHP_DEBUG == "yes") { + var length = libnames.length; + for (var i = 0; i < length; i++) { + var name = new String(libnames[i]); + rExp = /.lib$/i; + name = name.replace(rExp,"_debug.lib"); + libnames.unshift(name); + } + } + var i, j, k, libname; var location = false; var path = path_to_check.split(';'); @@ -835,14 +846,24 @@ function CHECK_HEADER_ADD_INCLUDE(header_name, flag_name, path_to_check, use_env /* emits rule to generate version info for a SAPI * or extension. Returns the name of the .res file * that will be generated */ -function generate_version_info_resource(makefiletarget, creditspath) +function generate_version_info_resource(makefiletarget, basename, creditspath, sapi) { var resname = makefiletarget + ".res"; - var res_desc = "PHP " + makefiletarget; - var res_prod_name = res_desc; + var res_desc = makefiletarget; + var res_prod_name = "PHP " + makefiletarget; var credits; var thanks = ""; var logo = ""; + var debug = ""; + var project_url = "http://www.php.net"; + var project_header = creditspath + "/php_" + basename + ".h"; + var versioning = ""; + + if (sapi) { + var internal_name = basename.toUpperCase() + " SAPI"; + } else { + var internal_name = basename.toUpperCase() + " extension"; + } if (FSO.FileExists(creditspath + '/CREDITS')) { credits = FSO.OpenTextFile(creditspath + '/CREDITS', 1); @@ -860,8 +881,34 @@ function generate_version_info_resource(makefiletarget, creditspath) credits.Close(); } + if (creditspath.match(new RegExp("pecl"))) { + /* PECL project url - this will eventually work correctly for all */ + project_url = "http://pecl.php.net/" + basename; + + /* keep independent versioning PECL-specific for now */ + if (FSO.FileExists(project_header)) { + if (header = FSO.OpenTextFile(project_header, 1)) { + contents = header.ReadAll(); + /* allowed: x.x.x[a|b|-alpha|-beta][RCx][-dev] */ + if (contents.match(new RegExp('PHP_' + basename.toUpperCase() + '_VERSION(\\s+)"((\\d+\.\\d+(\.\\d+)?)((a|b)(\\d)?|\-[a-z]{3,5})?(RC\\d+)?(\-dev)?)'))) { + project_version = RegExp.$2; + file_version = RegExp.$3.split('.'); + if (!file_version[2]) { + file_version[2] = 0; + } + versioning = '\\"" /d EXT_FILE_VERSION=' + file_version[0] + ',' + file_version[1] + ',' + file_version[2] + ' /d EXT_VERSION="\\"' + project_version; + } + header.Close(); + } + } + } + if (makefiletarget.match(new RegExp("\\.exe$"))) { - logo = " /D WANT_LOGO "; + logo = " /d WANT_LOGO "; + } + + if (PHP_DEBUG != "no") { + debug = " /d _DEBUG"; } /** @@ -869,20 +916,21 @@ function generate_version_info_resource(makefiletarget, creditspath) */ if (FSO.FileExists(creditspath + '\\template.rc')) { MFO.WriteLine("$(BUILD_DIR)\\" + resname + ": " + creditspath + "\\template.rc"); - MFO.WriteLine("\t$(RC) /fo $(BUILD_DIR)\\" + resname + logo + - ' /d FILE_DESCRIPTION="\\"' + res_desc + '\\"" /d FILE_NAME="\\"' + makefiletarget + - '\\"" /d PRODUCT_NAME="\\"' + res_prod_name + '\\"" /d THANKS_GUYS="\\"' + - thanks + '\\"" ' + creditspath + '\\template.rc'); + MFO.WriteLine("\t$(RC) /fo $(BUILD_DIR)\\" + resname + logo + debug + + ' /d FILE_DESCRIPTION="\\"' + res_desc + '\\"" /d FILE_NAME="\\"' + + makefiletarget + '\\"" /d PRODUCT_NAME="\\"' + res_prod_name + + versioning + '\\"" /d THANKS_GUYS="\\"' + thanks + '\\"" ' + + creditspath + '\\template.rc'); return resname; } MFO.WriteLine("$(BUILD_DIR)\\" + resname + ": win32\\build\\template.rc"); - MFO.WriteLine("\t$(RC) /fo $(BUILD_DIR)\\" + resname + logo + - ' /d FILE_DESCRIPTION="\\"' + res_desc + '\\"" /d FILE_NAME="\\"' + makefiletarget + - '\\"" /d PRODUCT_NAME="\\"' + res_prod_name + '\\"" /d THANKS_GUYS="\\"' + - thanks + '\\"" win32\\build\\template.rc'); + MFO.WriteLine("\t$(RC) /n /fo $(BUILD_DIR)\\" + resname + logo + debug + + ' /d FILE_DESCRIPTION="\\"' + res_desc + '\\"" /d FILE_NAME="\\"' + + makefiletarget + '\\"" /d URL="\\"' + project_url + + '\\"" /d INTERNAL_NAME="\\"' + internal_name + versioning + + '\\"" /d THANKS_GUYS="\\"' + thanks + '\\"" win32\\build\\template.rc'); MFO.WriteBlankLines(1); - return resname; } @@ -916,7 +964,7 @@ function SAPI(sapiname, file_list, makefiletarget, cflags, obj_dir) MFO.WriteBlankLines(1); /* generate a .res file containing version information */ - resname = generate_version_info_resource(makefiletarget, configure_module_dirname); + resname = generate_version_info_resource(makefiletarget, sapiname, configure_module_dirname, true); MFO.WriteLine(makefiletarget + ": $(BUILD_DIR)\\" + makefiletarget); MFO.WriteLine("\t@echo SAPI " + sapiname_for_printing + " build complete"); @@ -1065,7 +1113,7 @@ function EXTENSION(extname, file_list, shared, cflags, dllname, obj_dir) } var libname = dllname.substring(0, dllname.length-4) + ".lib"; - var resname = generate_version_info_resource(dllname, configure_module_dirname); + var resname = generate_version_info_resource(dllname, extname, configure_module_dirname, false); var ld = "@$(CC)"; MFO.WriteLine("$(BUILD_DIR)\\" + libname + ": $(BUILD_DIR)\\" + dllname);