diff options
author | Wez Furlong <wez@php.net> | 2005-01-20 03:28:04 +0000 |
---|---|---|
committer | Wez Furlong <wez@php.net> | 2005-01-20 03:28:04 +0000 |
commit | 1a27ca62a8581223752fae205af68477da5b99ca (patch) | |
tree | 4d4e13714e9fc5b15f967293a0c53b40b7b30805 | |
parent | 235f05dafd91577e4f8d368fa3059aede1618851 (diff) | |
download | php-git-1a27ca62a8581223752fae205af68477da5b99ca.tar.gz |
merge from head
-rw-r--r-- | win32/build/confutils.js | 84 |
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(); |