pajoye                                   Sat, 01 Jan 2011 20:00:10 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=306957

Log:
- missing file

Changed paths:
    A   php/php-src/trunk/win32/build/phpize.js.in

Added: php/php-src/trunk/win32/build/phpize.js.in
===================================================================
--- php/php-src/trunk/win32/build/phpize.js.in                          (rev 0)
+++ php/php-src/trunk/win32/build/phpize.js.in  2011-01-01 20:00:10 UTC (rev 
306957)
@@ -0,0 +1,262 @@
+/*
+  +----------------------------------------------------------------------+
+  | PHP Version 5                                                        |
+  +----------------------------------------------------------------------+
+  | Copyright (c) 1997-2008 The PHP Group                                |
+  +----------------------------------------------------------------------+
+  | This source file is subject to version 3.01 of the PHP license,      |
+  | that is bundled with this package in the file LICENSE, and is        |
+  | available through the world-wide-web at the following url:           |
+  | http://www.php.net/license/3_01.txt                                  |
+  | If you did not receive a copy of the PHP license and are unable to   |
+  | obtain it through the world-wide-web, please send a note to          |
+  | lice...@php.net so we can mail you a copy immediately.               |
+  +----------------------------------------------------------------------+
+  | Author: Pierre Joye <pier...@php.net>                                |
+  +----------------------------------------------------------------------+
+*/
+
+/* $Id$ */
+// This generates a configure script for win32 build
+
+var STDOUT = WScript.StdOut;
+
+var FSO = WScript.CreateObject("Scripting.FileSystemObject");
+var C = FSO.CreateTextFile("configure.js", true);
+var B = FSO.CreateTextFile("configure.bat", true);
+var DSP = false;
+re = /\\script/i;
+var PHP_DIR=FSO.GetParentFolderName(WScript.ScriptFullName).replace(re,"");
+
+var modules = "";
+var MODULES = WScript.CreateObject("Scripting.Dictionary");
+var module_dirs = new Array();
+
+function ERROR(msg)
+{
+       STDERR.WriteLine("ERROR: " + msg);
+       WScript.Quit(3);
+}
+
+function file_get_contents(filename)
+{
+       var F = FSO.OpenTextFile(filename, 1);
+       var t = F.ReadAll();
+       F.Close();
+       return t;
+}
+
+function Module_Item(module_name, config_path, dir_line, deps, content)
+{
+       this.module_name = module_name;
+       this.config_path = config_path;
+       this.dir_line = dir_line;
+       this.deps = deps;
+       this.content = content;
+}
+
+function get_module_dep(contents)
+{
+       var re_dep_line = new 
RegExp("ADD_EXTENSION_DEP\\([^,]*\\s*,\\s*['\"]([^'\"]+)['\"].*\\)", "gm");
+       var calls = contents.match(re_dep_line);
+       var deps = new Array();
+       if (calls != null) {
+               for (i = 0; i < calls.length; i++) {
+                       // now we need the extension name out of this thing
+                       if (calls[i].match(re_dep_line)) {
+                               deps[deps.length] = RegExp.$1;
+
+                       }
+               }
+       }
+       return deps;
+}
+
+function find_config_w32(dirname)
+{
+       if (!FSO.FolderExists(dirname)) {
+               return;
+       }
+
+       var f = FSO.GetFolder(dirname);
+       var     fc = new Enumerator(f.SubFolders);
+       var c, i, ok, n;
+       var item = null;
+
+       c = dirname + "\\config.w32";
+       if (FSO.FileExists(c)) {
+               var dir_line = "configure_module_dirname = 
condense_path(FSO.GetParentFolderName('"
+                                                               + c.replace(new 
RegExp('(["\\\\])', "g"), '\\$1') + "'));\r\n";
+               var contents = file_get_contents(c);
+
+               deps = get_module_dep(contents);
+
+               item = new Module_Item(n, c, dir_line, deps, contents);
+               MODULES.Add(n, item);
+       }
+
+       for (; !fc.atEnd(); fc.moveNext()) {
+               /* check if we already picked up a module with the same dirname;
+                * if we have, don't include it here */
+               n = FSO.GetFileName(fc.item());
+               if (n == '.svn' || n == 'tests' || n == '.git') {
+                       continue;
+               }
+
+               c = FSO.BuildPath(fc.item(), "config.w32");
+               if (FSO.FileExists(c)) {
+                       var dir_line = "configure_module_dirname = 
condense_path(FSO.GetParentFolderName('"
+                                                               + c.replace(new 
RegExp('(["\\\\])', "g"), '\\$1') + "'));\r\n";
+                       var contents = file_get_contents(c);
+
+                       deps = get_module_dep(contents);
+
+                       item = new Module_Item(n, c, dir_line, deps, contents);
+                       MODULES.Add(n, item);
+               }
+       }
+}
+
+function emit_module(item)
+{
+       return item.dir_line + item.content;
+}
+
+function emit_dep_modules(module_names)
+{
+       var i, mod_name, j;
+       var output = "";
+       var item = null;
+
+       for (i in module_names) {
+               mod_name = module_names[i];
+
+               if (MODULES.Exists(mod_name)) {
+                       item = MODULES.Item(mod_name);
+                       MODULES.Remove(mod_name);
+                       if (item.deps.length) {
+                               output += emit_dep_modules(item.deps);
+                       }
+                       output += emit_module(item);
+               }
+       }
+
+       return output;
+}
+
+function gen_modules()
+{
+       var module_names = (new VBArray(MODULES.Keys())).toArray();
+       var i, mod_name, j;
+       var item;
+       var output = "";
+
+       // first, look for modules with empty deps; emit those first
+       for (i in module_names) {
+               STDOUT.WriteLine("module ... " + module_names);
+               mod_name = module_names[i];
+               item = MODULES.Item(mod_name);
+               if (item.deps.length == 0) {
+                       MODULES.Remove(mod_name);
+                       output += emit_module(item);
+               }
+       }
+
+       // now we are left with modules that have dependencies on other modules
+       module_names = (new VBArray(MODULES.Keys())).toArray();
+       output += emit_dep_modules(module_names);
+
+       return output;
+}
+
+// Process buildconf arguments
+function buildconf_process_args()
+{
+       args = WScript.Arguments;
+
+       for (i = 0; i < args.length; i++) {
+               arg = args(i);
+               // If it is --foo=bar, split on the equals sign
+               arg = arg.split("=", 2);
+               argname = arg[0];
+               if (arg.length > 1) {
+                       argval = arg[1];
+               } else {
+                       argval = null;
+               }
+
+               if (argname == '--clean' && argval != null) {
+                       STDOUT.WriteLine("Cleaning...");
+                       return 0;
+               }
+
+               if (argname == '--help') {
+                       STDOUT.WriteLine("Usage: phpize 
[--clean|--help|--version|-v]");
+                       return 0;
+               }
+               return 1;
+       }
+}
+
+if (buildconf_process_args() == 0) {
+       WScript.Quit(3);
+}
+STDOUT.WriteLine("Rebuilding configure.js");
+STDOUT.WriteLine(PHP_DIR);
+
+// Write the head of the configure script
+C.WriteLine("/* This file automatically generated from script/confutils.js 
*/");
+C.WriteLine("var MODE_PHPIZE = true;");
+C.WriteLine("var PHP_DIR = " + '"' + PHP_DIR.replace(new RegExp('(["\\\\])', 
"g"), '\\$1') + '"');
+
+C.Write(file_get_contents(PHP_DIR + "/script/confutils.js"));
+C.Write(file_get_contents(PHP_DIR + "/script/config.phpize.js"));
+
+// If project files were requested, pull in the code to generate them
+if (DSP == true) {
+       C.WriteLine('PHP_DSP="yes"');
+       C.WriteBlankLines(1);
+       C.Write(file_get_contents(PHP_DIR + "win32/build/projectgen.js"));
+} else {
+       C.WriteLine('PHP_DSP="no"');
+       C.WriteBlankLines(1);
+}
+
+// Pull in code from sapi and extensions
+modules = file_get_contents(PHP_DIR + "/script/config.w32.phpize.in");
+
+C.WriteLine("ARG_ENABLE('debug', 'Compile with debugging symbols', \"no\");");
+find_config_w32(".");
+
+// Now generate contents of module based on MODULES, chasing dependencies
+// to ensure that dependent modules are emitted first
+modules += gen_modules();
+
+// Look for ARG_ENABLE or ARG_WITH calls
+re = new RegExp("(ARG_(ENABLE|WITH)\([^;]+\);)", "gm");
+calls = modules.match(re);
+for (i = 0; i < calls.length; i++) {
+       item = calls[i];
+       C.WriteLine("try {");
+       C.WriteLine(item);
+       C.WriteLine("} catch (e) {");
+       C.WriteLine('\tSTDOUT.WriteLine("problem: " + e);');
+       C.WriteLine("}");
+}
+
+C.WriteBlankLines(1);
+C.WriteLine("conf_process_args();");
+C.WriteBlankLines(1);
+
+C.Write(file_get_contents(PHP_DIR + "/script/config.w32.phpize.in"));
+
+// Comment out the calls from their original positions
+modules = modules.replace(re, "/* $1 */");
+C.Write(modules);
+
+
+C.WriteBlankLines(1);
+C.Write(file_get_contents(PHP_DIR + "\\script\\configure.tail"));
+
+B.WriteLine("@echo off");
+B.WriteLine("cscript /nologo configure.js %*");

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to