sfox            Wed Jul  9 14:57:15 2008 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src/win32/build        projectgen.js 
  Log:
  - Clean up ws/cs a bit and add some comments
  
http://cvs.php.net/viewvc.cgi/php-src/win32/build/projectgen.js?r1=1.1.2.1&r2=1.1.2.2&diff_format=u
Index: php-src/win32/build/projectgen.js
diff -u php-src/win32/build/projectgen.js:1.1.2.1 
php-src/win32/build/projectgen.js:1.1.2.2
--- php-src/win32/build/projectgen.js:1.1.2.1   Wed Jul  9 08:15:46 2008
+++ php-src/win32/build/projectgen.js   Wed Jul  9 14:57:14 2008
@@ -1,3 +1,4 @@
+/* utility function to write .dsp source blocks */
 function write_src_file(fname, arr)
 {
        var src = FSO.CreateTextFile(fname, true);
@@ -10,36 +11,51 @@
                        src.WriteBlankLines(1);
                }
        }
+
        src.Close();
        return;
 }
 
-function copy_dsp_files() {
+/* final stage, all gets cleaned up here */
+function copy_dsp_files()
+{
        var tmp = FSO.GetFolder("tmp");
        var core = "TSRM Zend main streams win32 standard";
        var tmpl = file_get_contents("win32\\build\\template.dsw");
 
        f = new Enumerator(tmp.Files);
        blocks = "";
+
        for (; !f.atEnd(); f.moveNext()) {
+               /* retrieve the final path for the .dsp */
                contents = file_get_contents(f.item());
                address = contents.slice(0, contents.indexOf("#"));
                contents = contents.slice(contents.indexOf("#"));
                dsp = FSO.CreateTextFile(address, true);
                dsp.Write(contents);
                dsp.Close();
+
+               /* pick up module name, check it isn't already in template.dsw 
*/
                ext = address.slice(address.lastIndexOf("\\")+1, 
address.length-4);
+
+               /* if not, write the workspace block */
                if (!core.match(ext)) {
                        blocks += 
file_get_contents("win32\\build\\block.template.dsw");
                        blocks = blocks.replace("ADDRESS", address);
                        blocks = blocks.replace("EXTNAME", ext);
                }
+
                FSO.DeleteFile(f.item());
        }
+
+       /* push all the blocks to the same tag */
        tmpl = tmpl.replace("INSERT", blocks);
+
        dsw = FSO.CreateTextFile("win32\\php.dsw", true);
        dsw.Write(tmpl);
        dsw.Close();
+
+       /* goodnight vienna */
        FSO.DeleteFolder("tmp");
 }
 
@@ -47,6 +63,9 @@
 {
        for (i = 0; i < DSP_FLAGS.length; i++) {
                name = DSP_FLAGS[i][0];
+
+               /* it's apparently not possible to key a javascript
+                  array using strings, much less dual-key it */
                if (DSP_FLAGS.length == i+1 || name != DSP_FLAGS[i+1][0]) {
                        ext = name.substr(7).toLowerCase();
                        src = file_get_contents("tmp\\" + ext + ".dsp");
@@ -57,6 +76,9 @@
                        dsp.Close();
                }
        }
+
+       /* now we have flags (and potentially other stuff) for
+          all configured modules, so finish off the process */
        copy_dsp_files();
        return;
 }
@@ -67,13 +89,19 @@
        var tabs = new RegExp("[\t\r\n\'\"]", "gm");
        var ws = new RegExp("\\s+", "g");
        var dir = FSO.GetFolder(ext_dir);
+       var configfile = FSO.BuildPath(ext_dir, "config.w32");
        var headers = "";
 
        if (!files) {
+               /* module either lacks a config.w32 or is core
+                * either way, we know nothing about its sources
+                */
                files = "";
                f = new Enumerator(dir.Files);
+
                for (; !f.atEnd(); f.moveNext()) {
                        name = FSO.GetFileName(f.item());
+
                        if (name.substr(name.length-2) == ".c") {
                                files += " ./" + name;
                        }
@@ -82,20 +110,26 @@
                files = files.replace(tabs, "");
                files = "./" + files.replace(/ /g, " ./");
        }
+
        DSP_SOURCES = files.split(" ");
 
+       /* pick up headers (all modules) */
        f = new Enumerator(dir.Files);
+
        for (; !f.atEnd(); f.moveNext()) {
                name = FSO.GetFileName(f.item());
+
                if (name.substr(name.length-2) == ".h") {
                        headers += " ./" + name;
                }
        }
+
        DSP_HEADERS = headers.split(" ");
 
-       configfile = FSO.BuildPath(ext_dir, "config.w32");
+       /* check for bundled library paths and sourcefiles */
        if (FSO.FileExists(configfile)) {
                config = file_get_contents(configfile);
+
                if (config.match("ADD_SOURCES")) {
                        sources = new 
RegExp("ADD_SOURCES\\([^,]*\\s*,\\s*['\"]([^'\"]+)['\"].*\\)", "gm");
                        arr = config.match(sources);
@@ -107,16 +141,19 @@
                        orig_path = orig_path.replace(" + ", "");
                        path = orig_path.replace(munged_dir + '/', "");
 
-                       if (path.length > 0) {
+                       if (path.length > 0 && path != ext) {
                                subdir = FSO.GetFolder(orig_path);
                                lib = new Enumerator(subdir.Files);
                                libheaders = "";
+
                                for (; !lib.atEnd(); lib.moveNext()) {
                                        name = FSO.GetFileName(lib.item());
+
                                        if (name.substr(name.length-2) == ".h") 
{
                                                libheaders += " ./" + path + 
"/" + name;
                                        }
                                }
+
                                DSP_HEADERS = 
DSP_HEADERS.concat(libheaders.split(" "));
                        }
 
@@ -127,17 +164,24 @@
                        DSP_SOURCES = DSP_SOURCES.concat(sources.split(" "));
                }
        }
+
+       /* store the array contents in temp files
+          waiting for CFLAGS etc to be populated */
        write_src_file("tmp\\" + ext + ".headers.tmp", DSP_HEADERS);
        write_src_file("tmp\\" + ext + ".sources.tmp", DSP_SOURCES);
+
        return;
 }
 
+/* entry point. Called from EXTENSION(), from SAPI() and (for
+   core modules) from generate_files(), all in confutils.js */
 function generate_dsp_file(ext, ext_dir, files, shared)
 {
        var dsp = FSO.CreateTextFile("tmp\\" + ext + ".dsp", true);
        var tmpl = file_get_contents("win32\\build\\template.dsp");
        var EXT = ext.toUpperCase();
 
+       /* store the final path in the head of the tmp file */
        tmpl = ext_dir + "\\" + ext + ".dsp" + tmpl;
 
        extname = new RegExp("extname", "gm");
@@ -161,25 +205,33 @@
 
        cflags = get_define("CFLAGS").replace("$(BASE_INCLUDES)", '/I "..\\.." 
/I "..\\..\\..\\Zend" /I "..\\..\\TSRM" /I "..\\..\\main" ');
        basecpp = cflags = cflags.replace('/I "..\\bindlib_w32"', '/I 
"..\\..\\..\\bindlib_w32"');
+
        if (shared) {
                basecpp += " /D COMPILE_DL_" + EXT;
        }
+
        tmpl = tmpl.replace("BASECPP", basecpp);
        tmpl = tmpl.replace("BASECPP", cflags + " /D HAVE_" + EXT + "=1");
        tmpl = tmpl.replace(/BASELIBS/g, get_define("LIBS"));
        tmpl = tmpl.replace("LOCALLIBS", get_define("PHPLIB"));
+
        debug = PHP_DEBUG != "no" ? " /debug" : "";
        dll = shared ? ' /dll /out:"..\\..\\Debug_TS\\php_' + ext + '.dll"' : 
"";
        tmpl = tmpl.replace(/BASELDFLAGS/g, "/nologo" + debug + dll);
 
+       /* call to generate source and header blocks for .dsp */
        generate_dsp_filelist(ext, ext_dir, files);
+
        sources = file_get_contents("tmp\\" + ext + ".sources.tmp");
        tmpl = tmpl.replace("SOURCEFILES", sources);
        FSO.DeleteFile("tmp\\" + ext + ".sources.tmp");
+
        headers = file_get_contents("tmp\\" + ext + ".headers.tmp");
        tmpl = tmpl.replace("HEADERFILES", headers);
        FSO.DeleteFile("tmp\\" + ext + ".headers.tmp");
+
        dsp.Write(tmpl);
        dsp.Close();
+
        return;
 }



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

Reply via email to