]> granicus.if.org Git - php/commitdiff
basic routines for phpize mode to
authorAnatol Belski <ab@php.net>
Wed, 16 Jul 2014 19:33:07 +0000 (21:33 +0200)
committerAnatol Belski <ab@php.net>
Wed, 16 Jul 2014 19:33:07 +0000 (21:33 +0200)
- generate headers for non core ext defines
- generate js deps for non core exts

win32/build/confutils.js

index ef50dfe08ec0d2e378a3c61330af117997527eff..419d0bab5fa5bbdf62d56fcf3e4634e3c9869a4b 100644 (file)
@@ -1636,6 +1636,9 @@ function generate_files()
                generate_internal_functions();\r
                generate_config_h();\r
                generate_phpize();\r
+       } else {\r
+               generate_config_pickle_h();\r
+               generate_ext_pickle();\r
        }\r
        STDOUT.WriteLine("Done.");\r
        STDOUT.WriteBlankLines(1);\r
@@ -1648,6 +1651,140 @@ function generate_files()
        }\r
 }\r
 \r
+function generate_ext_pickle()\r
+{\r
+       var content;\r
+       var DEPS = null;\r
+       var dest;\r
+       var deps_lines = new Array();\r
+\r
+       var build_var_name = function(name) {\r
+               return "PHP_" + name.toUpperCase();\r
+       }\r
+\r
+       STDOUT.WriteLine("Generating pickle deps");\r
+       dest = PHP_DIR + "/script/";\r
+\r
+       if (!FSO.FolderExists(dest)) {\r
+               FSO.CreateFolder(dest);\r
+       }\r
+\r
+       if (FSO.FileExists(dest + "/ext_pickle.js")) {\r
+               DEPS = FSO.OpenTextFile(dest + "/ext_pickle.js", 1);\r
+\r
+               while (!DEPS.AtEndOfStream) {\r
+                       var ln = DEPS.ReadLine();\r
+                       var found = false;\r
+\r
+                       for (var i in extensions_enabled) {\r
+                               var reg0 = new RegExp(build_var_name(extensions_enabled[i][0]) + "\s*=.+", "g");\r
+                               var reg1 = new RegExp(build_var_name(extensions_enabled[i][0]) + "_SHARED" + "\s*=.+", "g");\r
+\r
+                               if (ln.match(reg1) || ln.match(reg0)) {\r
+                                       found = true;\r
+                                       break;\r
+                               }\r
+                       }\r
+\r
+                       if (!found) {\r
+                               deps_lines.push(ln);\r
+                       }\r
+               }\r
+       }\r
+\r
+       for (var i in extensions_enabled) {\r
+               deps_lines.push(build_var_name(extensions_enabled[i][0]) + "=true;");\r
+               deps_lines.push(build_var_name(extensions_enabled[i][0]) + "_SHARED=" + (extensions_enabled[i][1] == 'shared' ? 'true' : 'false') + ";");\r
+       }\r
+\r
+       if (!!DEPS) {\r
+               DEPS.Close();\r
+               DEPS = null;\r
+       }\r
+\r
+       /* Replace the ext_pickle.js with the new content */\r
+       DEPS = FSO.CreateTextFile(dest + "/ext_pickle.js", true);\r
+\r
+       for (var j in deps_lines) {\r
+               DEPS.WriteLine(deps_lines[j]);\r
+       }\r
+\r
+       DEPS.Close();\r
+}\r
+\r
+function generate_config_pickle_h()\r
+{\r
+       var outfile = null;\r
+       var lines = new Array();\r
+       var keys = (new VBArray(configure_hdr.Keys())).toArray();\r
+       dest = PHP_DIR + "/include/main";\r
+\r
+       var ignore_key = function(key) {\r
+               var ignores = [ "CONFIGURE_COMMAND", "PHP_COMPILER_ID", "COMPILER", "ARCHITECTURE", "HAVE_STRNLEN", "PHP_DIR" ];\r
+\r
+               for (var k in ignores) {\r
+                       if (ignores[k] == key) {\r
+                               return true;\r
+                       }\r
+               }\r
+\r
+               return false;\r
+       }\r
+\r
+\r
+       STDOUT.WriteLine("Generating main/config.pickle.h");\r
+\r
+       if (FSO.FileExists(dest + "/config.pickle.h")) {\r
+               outfile = FSO.OpenTextFile(dest + "/config.pickle.h", 1);\r
+\r
+               while (!outfile.AtEndOfStream) {\r
+                       var found = false;\r
+                       var ln = outfile.ReadLine();\r
+\r
+                       for (var i in keys) {\r
+                               var reg = new RegExp("#define[\s ]+" + keys[i] + "[\s ]*.*", "g");\r
+\r
+                               if (ln.match(reg)) {\r
+                                       found = true;\r
+                                       break;\r
+                               }\r
+                       }\r
+\r
+                       if (!found) {\r
+                               lines.push(ln);\r
+                       }\r
+               }\r
+       }\r
+\r
+       for (var i in keys) {\r
+               var item = configure_hdr.Item(keys[i]);\r
+\r
+               if (ignore_key(keys[i])) {\r
+                       continue;\r
+               }\r
+\r
+               /* XXX fix comment handling */\r
+               /*if (!lines[j].match(/^#define.+/g)) {\r
+                       continue;\r
+               }*/\r
+\r
+               lines.push("#define " + keys[i] + " " + item[0]);\r
+       }\r
+\r
+       if (outfile) {\r
+               outfile.Close();\r
+               outfile = null;\r
+       }\r
+\r
+       outfile = FSO.CreateTextFile(dest + "/config.pickle.h", true);\r
+\r
+       for (var k in lines) {\r
+               outfile.WriteLine(lines[k]);\r
+       }\r
+\r
+       outfile.Close();\r
+}\r
+\r
 function generate_config_h()\r
 {\r
        var infile, outfile;\r