summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2005-01-20 03:28:04 +0000
committerWez Furlong <wez@php.net>2005-01-20 03:28:04 +0000
commit1a27ca62a8581223752fae205af68477da5b99ca (patch)
tree4d4e13714e9fc5b15f967293a0c53b40b7b30805
parent235f05dafd91577e4f8d368fa3059aede1618851 (diff)
downloadphp-git-1a27ca62a8581223752fae205af68477da5b99ca.tar.gz
merge from head
-rw-r--r--win32/build/confutils.js84
1 files changed, 64 insertions, 20 deletions
diff --git a/win32/build/confutils.js b/win32/build/confutils.js
index 76d91cc038..955186b162 100644
--- a/win32/build/confutils.js
+++ b/win32/build/confutils.js
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-// $Id: confutils.js,v 1.42 2004-07-07 12:25:10 edink Exp $
+// $Id: confutils.js,v 1.42.2.1 2005-01-20 03:28:04 wez Exp $
var STDOUT = WScript.StdOut;
var STDERR = WScript.StdErr;
@@ -708,7 +708,7 @@ function OLD_CHECK_LIB(libnames, target, path_to_check)
}
-function CHECK_FUNC_IN_HEADER(header_name, func_name, path_to_check)
+function CHECK_FUNC_IN_HEADER(header_name, func_name, path_to_check, add_to_flag)
{
var c = false;
var sym;
@@ -720,7 +720,11 @@ function CHECK_FUNC_IN_HEADER(header_name, func_name, path_to_check)
sym = func_name.toUpperCase();
sym = sym.replace(new RegExp("[\\\\/\.-]", "g"), "_");
- AC_DEFINE("HAVE_" + sym, c ? 1 : 0);
+ if (typeof(add_to_flag) == "undefined") {
+ AC_DEFINE("HAVE_" + sym, c ? 1 : 0);
+ } else {
+ ADD_FLAG(add_to_flag, "/DHAVE_" + sym + "=" + (c ? "1" : "0"));
+ }
if (c) {
STDOUT.WriteLine("OK");
@@ -766,7 +770,7 @@ function GREP_HEADER(header_name, regex, path_to_check)
return false;
}
-function CHECK_HEADER_ADD_INCLUDE(header_name, flag_name, path_to_check, use_env, add_dir_part)
+function CHECK_HEADER_ADD_INCLUDE(header_name, flag_name, path_to_check, use_env, add_dir_part, add_to_flag_only)
{
var dir_part_to_add = "";
@@ -810,7 +814,11 @@ function CHECK_HEADER_ADD_INCLUDE(header_name, flag_name, path_to_check, use_env
sym = header_name.toUpperCase();
sym = sym.replace(new RegExp("[\\\\/\.-]", "g"), "_");
- AC_DEFINE("HAVE_" + sym, have);
+ if (typeof(add_to_flag_only) != "undefined") {
+ ADD_FLAG(flag_name, "/DHAVE_" + sym + "=" + have);
+ } else {
+ AC_DEFINE("HAVE_" + sym, have);
+ }
return p;
}
@@ -959,10 +967,11 @@ function ADD_EXTENSION_DEP(extname, dependson, optional)
}
}
-function EXTENSION(extname, file_list, shared, cflags, dllname)
+function EXTENSION(extname, file_list, shared, cflags, dllname, obj_dir)
{
var objs = null;
var EXT = extname.toUpperCase();
+ var extname_for_printing;
if (shared == null) {
eval("shared = PHP_" + EXT + "_SHARED;");
@@ -971,12 +980,18 @@ function EXTENSION(extname, file_list, shared, cflags, dllname)
cflags = "";
}
+ if (typeof(obj_dir) == "undefined") {
+ extname_for_printing = configure_module_dirname;
+ } else {
+ extname_for_printing = configure_module_dirname + " (via " + obj_dir + ")";
+ }
+
if (shared) {
- STDOUT.WriteLine("Enabling extension " + configure_module_dirname + " [shared]");
+ STDOUT.WriteLine("Enabling extension " + extname_for_printing + " [shared]");
cflags = "/D COMPILE_DL_" + EXT + " /D " + EXT + "_EXPORTS=1 " + cflags;
ADD_FLAG("CFLAGS_PHP", "/D COMPILE_DL_" + EXT);
} else {
- STDOUT.WriteLine("Enabling extension " + configure_module_dirname);
+ STDOUT.WriteLine("Enabling extension " + extname_for_printing);
}
MFO.WriteBlankLines(1);
@@ -984,7 +999,7 @@ function EXTENSION(extname, file_list, shared, cflags, dllname)
MFO.WriteBlankLines(1);
- ADD_SOURCES(configure_module_dirname, file_list, extname);
+ ADD_SOURCES(configure_module_dirname, file_list, extname, obj_dir);
MFO.WriteBlankLines(1);
@@ -1040,7 +1055,7 @@ function EXTENSION(extname, file_list, shared, cflags, dllname)
ADD_FLAG("CFLAGS_" + EXT, cflags);
}
-function ADD_SOURCES(dir, file_list, target)
+function ADD_SOURCES(dir, file_list, target, obj_dir)
{
var i;
var tv;
@@ -1077,11 +1092,17 @@ function ADD_SOURCES(dir, file_list, target)
* This probably breaks for non-sibling dirs, but that
* is not a problem as buildconf only checks for pecl
* as either a child or a sibling */
- var build_dir = dir.replace(new RegExp("^..\\\\"), "");
-
- var mangle_dir = build_dir.replace(new RegExp("[\\\\/.]", "g"), "_");
- var bd_flags_name = "CFLAGS_BD_" + mangle_dir.toUpperCase();
-
+ if (obj_dir == null) {
+ var build_dir = dir.replace(new RegExp("^..\\\\"), "");
+ var mangle_dir = build_dir.replace(new RegExp("[\\\\/.]", "g"), "_");
+ var bd_flags_name = "CFLAGS_BD_" + mangle_dir.toUpperCase();
+ }
+ else {
+ var build_dir = obj_dir.replace(new RegExp("^..\\\\"), "");
+ var mangle_dir = build_dir.replace(new RegExp("[\\\\/.]", "g"), "_");
+ var bd_flags_name = "CFLAGS_BD_" + mangle_dir.toUpperCase();
+ }
+
var dirs = build_dir.split("\\");
var i, d = "";
for (i = 0; i < dirs.length; i++) {
@@ -1092,7 +1113,7 @@ function ADD_SOURCES(dir, file_list, target)
sub_build += d;
- DEFINE(bd_flags_name, "/Fo" + sub_build + " /Fd" + sub_build + " /Fp" + sub_build + " /FR" + sub_build + " ");
+ DEFINE(bd_flags_name, " /Fd" + sub_build + " /Fp" + sub_build + " /FR" + sub_build + " ");
for (i in file_list) {
src = file_list[i];
@@ -1109,13 +1130,13 @@ function ADD_SOURCES(dir, file_list, target)
}
} else {
MFO.WriteLine(sub_build + obj + ": " + dir + "\\" + src);
- MFO.WriteLine("\t$(CC) $(" + flags + ") $(CFLAGS) $(" + bd_flags_name + ") -c " + dir + "\\" + src + " -o " + sub_build + obj);
+ MFO.WriteLine("\t$(CC) $(" + flags + ") $(CFLAGS) $(" + bd_flags_name + ") /c " + dir + "\\" + src + " /Fo" + sub_build + obj);
}
}
if (PHP_ONE_SHOT == "yes") {
MFO.WriteLine(objs_line + ": " + srcs_line);
- MFO.WriteLine("\t$(CC) $(" + flags + ") $(CFLAGS) $(" + bd_flags_name + ") -c " + srcs_line);
+ MFO.WriteLine("\t$(CC) $(" + flags + ") $(CFLAGS) /Fo" + sub_build + " $(" + bd_flags_name + ") /c " + srcs_line);
}
DEFINE(sym, tv);
@@ -1210,8 +1231,9 @@ function generate_config_h()
outfile.Write(indata);
var keys = (new VBArray(configure_hdr.Keys())).toArray();
- var i;
+ var i, j;
var item;
+ var pieces, stuff_to_crack, chunk;
outfile.WriteBlankLines(1);
outfile.WriteLine("/* values determined by configure.js */");
@@ -1220,7 +1242,29 @@ function generate_config_h()
item = configure_hdr.Item(keys[i]);
outfile.WriteBlankLines(1);
outfile.WriteLine("/* " + item[1] + " */");
- outfile.WriteLine("#define " + keys[i] + " " + item[0]);
+ pieces = item[0];
+
+ if (typeof(pieces) == "string" && pieces.charCodeAt(0) == 34) {
+ /* quoted string have a maximal length of 2k under vc.
+ * solution is to crack them and let the compiler concat
+ * them implicitly */
+ stuff_to_crack = pieces;
+ pieces = "";
+
+ while (stuff_to_crack.length) {
+ j = 65;
+ while (stuff_to_crack.charCodeAt(j) != 32 && j < stuff_to_crack.length)
+ j++;
+
+ chunk = stuff_to_crack.substr(0, j);
+ pieces += chunk;
+ stuff_to_crack = stuff_to_crack.substr(chunk.length);
+ if (stuff_to_crack.length)
+ pieces += '" "';
+ }
+ }
+
+ outfile.WriteLine("#define " + keys[i] + " " + pieces);
}
outfile.Close();