PROGRAM_FILES = "C:\\Program Files";\r
}\r
\r
-if (!FSO.FileExists("README.SVN-RULES")) {\r
- STDERR.WriteLine("Must be run from the root of the php source");\r
- WScript.Quit(10);\r
+if (MODE_PHPIZE) {\r
+ if (!FSO.FileExists("config.w32")) {\r
+ STDERR.WriteLine("Must be run from the root of the extension source");\r
+ WScript.Quit(10);\r
+ }\r
+} else {\r
+ if (!FSO.FileExists("README.SVN-RULES")) {\r
+ STDERR.WriteLine("Must be run from the root of the php source");\r
+ WScript.Quit(10);\r
+ }\r
}\r
- \r
+\r
var CWD = WshShell.CurrentDirectory;\r
\r
if (typeof(CWD) == "undefined") {\r
extension_include_code = "";\r
extension_module_ptrs = "";\r
\r
-get_version_numbers();\r
+if (!MODE_PHPIZE) {\r
+ get_version_numbers();\r
+}\r
\r
/* execute a command and return the output as a string */\r
function execute(command_line)\r
arg.seen = true;\r
\r
analyzed = analyze_arg(argval);\r
- shared = analyzed[0];\r
+\r
+ /* Force shared when called after phpize */\r
+ if (MODE_PHPIZE) {\r
+ shared = "shared";\r
+ } else {\r
+ shared = analyzed[0];\r
+ }\r
argval = analyzed[1];\r
\r
if (argname == arg.imparg) {\r
creditspath + '\\template.rc');\r
return resname;\r
}\r
-\r
- MFO.WriteLine("$(BUILD_DIR)\\" + resname + ": win32\\build\\template.rc");\r
- MFO.WriteLine("\t$(RC) /n /fo $(BUILD_DIR)\\" + resname + logo + debug +\r
- ' /d FILE_DESCRIPTION="\\"' + res_desc + '\\"" /d FILE_NAME="\\"'\r
- + makefiletarget + '\\"" /d URL="\\"' + project_url + \r
- '\\"" /d INTERNAL_NAME="\\"' + internal_name + versioning + \r
- '\\"" /d THANKS_GUYS="\\"' + thanks + '\\"" win32\\build\\template.rc');\r
+ if (MODE_PHPIZE) {\r
+ MFO.WriteLine("$(BUILD_DIR)\\" + resname + ": $(PHP_DIR)\\build\\template.rc");\r
+ MFO.WriteLine("\t$(RC) /I $(PHP_DIR)/include /n /fo $(BUILD_DIR)\\" + resname + logo + debug +\r
+ ' /d FILE_DESCRIPTION="\\"' + res_desc + '\\"" /d FILE_NAME="\\"'\r
+ + makefiletarget + '\\"" /d URL="\\"' + project_url + \r
+ '\\"" /d INTERNAL_NAME="\\"' + internal_name + versioning + \r
+ '\\"" /d THANKS_GUYS="\\"' + thanks + '\\"" $(PHP_DIR)\\build\\template.rc');\r
+ } else {\r
+ MFO.WriteLine("$(BUILD_DIR)\\" + resname + ": win32\\build\\template.rc");\r
+ MFO.WriteLine("\t$(RC) /n /fo $(BUILD_DIR)\\" + resname + logo + debug +\r
+ ' /d FILE_DESCRIPTION="\\"' + res_desc + '\\"" /d FILE_NAME="\\"'\r
+ + makefiletarget + '\\"" /d URL="\\"' + project_url + \r
+ '\\"" /d INTERNAL_NAME="\\"' + internal_name + versioning + \r
+ '\\"" /d THANKS_GUYS="\\"' + thanks + '\\"" win32\\build\\template.rc');\r
+ }\r
MFO.WriteBlankLines(1);\r
return resname;\r
}\r
\r
MFO.WriteLine(makefiletarget + ": $(BUILD_DIR)\\" + makefiletarget);\r
MFO.WriteLine("\t@echo SAPI " + sapiname_for_printing + " build complete");\r
- MFO.WriteLine("$(BUILD_DIR)\\" + makefiletarget + ": $(DEPS_" + SAPI + ") $(" + SAPI + "_GLOBAL_OBJS) $(BUILD_DIR)\\$(PHPLIB) $(BUILD_DIR)\\" + resname);\r
+ if (MODE_PHPIZE) {\r
+ MFO.WriteLine("$(BUILD_DIR)\\" + makefiletarget + ": $(DEPS_" + SAPI + ") $(" + SAPI + "_GLOBAL_OBJS) $(PHPLIB) $(BUILD_DIR)\\" + resname);\r
+ } else {\r
+ MFO.WriteLine("$(BUILD_DIR)\\" + makefiletarget + ": $(DEPS_" + SAPI + ") $(" + SAPI + "_GLOBAL_OBJS) $(BUILD_DIR)\\$(PHPLIB) $(BUILD_DIR)\\" + resname);\r
+ }\r
\r
if (makefiletarget.match(new RegExp("\\.dll$"))) {\r
ldflags = "/dll $(LDFLAGS)";\r
manifest = "-@$(_VC_MANIFEST_EMBED_EXE)";\r
}\r
\r
- if (ld) {\r
- MFO.WriteLine("\t" + ld + " /nologo /out:$(BUILD_DIR)\\" + makefiletarget + " " + ldflags + " $(" + SAPI + "_GLOBAL_OBJS) $(BUILD_DIR)\\$(PHPLIB) $(LDFLAGS_" + SAPI + ") $(LIBS_" + SAPI + ") $(BUILD_DIR)\\" + resname);\r
+ if (MODE_PHPIZE) {\r
+ if (ld) {\r
+ MFO.WriteLine("\t" + ld + " /nologo /out:$(BUILD_DIR)\\" + makefiletarget + " " + ldflags + " $(" + SAPI + "_GLOBAL_OBJS) $(PHPLIB) $(LDFLAGS_" + SAPI + ") $(LIBS_" + SAPI + ") $(BUILD_DIR)\\" + resname);\r
+ } else {\r
+ ld = "@$(CC)";\r
+ MFO.WriteLine("\t" + ld + " /nologo " + " $(" + SAPI + "_GLOBAL_OBJS) $(PHPLIB) $(LIBS_" + SAPI + ") $(BUILD_DIR)\\" + resname + " /link /out:$(BUILD_DIR)\\" + makefiletarget + " " + ldflags + " $(LDFLAGS_" + SAPI + ")");\r
+ }\r
} else {\r
- ld = "@$(CC)";\r
- MFO.WriteLine("\t" + ld + " /nologo " + " $(" + SAPI + "_GLOBAL_OBJS) $(BUILD_DIR)\\$(PHPLIB) $(LIBS_" + SAPI + ") $(BUILD_DIR)\\" + resname + " /link /out:$(BUILD_DIR)\\" + makefiletarget + " " + ldflags + " $(LDFLAGS_" + SAPI + ")");\r
+ if (ld) {\r
+ MFO.WriteLine("\t" + ld + " /nologo /out:$(BUILD_DIR)\\" + makefiletarget + " " + ldflags + " $(" + SAPI + "_GLOBAL_OBJS) $(BUILD_DIR)\\$(PHPLIB) $(LDFLAGS_" + SAPI + ") $(LIBS_" + SAPI + ") $(BUILD_DIR)\\" + resname);\r
+ } else {\r
+ ld = "@$(CC)";\r
+ MFO.WriteLine("\t" + ld + " /nologo " + " $(" + SAPI + "_GLOBAL_OBJS) $(BUILD_DIR)\\$(PHPLIB) $(LIBS_" + SAPI + ") $(BUILD_DIR)\\" + resname + " /link /out:$(BUILD_DIR)\\" + makefiletarget + " " + ldflags + " $(LDFLAGS_" + SAPI + ")");\r
+ }\r
}\r
\r
if (manifest) {\r
\r
MFO.WriteLine("$(BUILD_DIR)\\" + libname + ": $(BUILD_DIR)\\" + dllname);\r
MFO.WriteBlankLines(1);\r
- MFO.WriteLine("$(BUILD_DIR)\\" + dllname + ": $(DEPS_" + EXT + ") $(" + EXT + "_GLOBAL_OBJS) $(BUILD_DIR)\\$(PHPLIB) $(BUILD_DIR)\\" + resname);\r
- MFO.WriteLine("\t" + ld + " $(" + EXT + "_GLOBAL_OBJS) $(BUILD_DIR)\\$(PHPLIB) $(LIBS_" + EXT + ") $(LIBS) $(BUILD_DIR)\\" + resname + " /link /out:$(BUILD_DIR)\\" + dllname + " $(DLL_LDFLAGS) $(LDFLAGS) $(LDFLAGS_" + EXT + ")");\r
+ if (MODE_PHPIZE) {\r
+ MFO.WriteLine("$(BUILD_DIR)\\" + dllname + ": $(DEPS_" + EXT + ") $(" + EXT + "_GLOBAL_OBJS) $(PHPLIB) $(BUILD_DIR)\\" + resname);\r
+ MFO.WriteLine("\t" + ld + " $(" + EXT + "_GLOBAL_OBJS) $(PHPLIB) $(LIBS_" + EXT + ") $(LIBS) $(BUILD_DIR)\\" + resname + " /link /out:$(BUILD_DIR)\\" + dllname + " $(DLL_LDFLAGS) $(LDFLAGS) $(LDFLAGS_" + EXT + ")");\r
+ } else {\r
+ MFO.WriteLine("$(BUILD_DIR)\\" + dllname + ": $(DEPS_" + EXT + ") $(" + EXT + "_GLOBAL_OBJS) $(BUILD_DIR)\\$(PHPLIB) $(BUILD_DIR)\\" + resname);\r
+ MFO.WriteLine("\t" + ld + " $(" + EXT + "_GLOBAL_OBJS) $(BUILD_DIR)\\$(PHPLIB) $(LIBS_" + EXT + ") $(LIBS) $(BUILD_DIR)\\" + resname + " /link /out:$(BUILD_DIR)\\" + dllname + " $(DLL_LDFLAGS) $(LDFLAGS) $(LDFLAGS_" + EXT + ")");\r
+ }\r
MFO.WriteLine("\t-@$(_VC_MANIFEST_EMBED_DLL)");\r
MFO.WriteBlankLines(1);\r
\r
obj = src.replace(re, ".obj");\r
tv += " " + sub_build + obj;\r
\r
- if (PHP_ONE_SHOT == "yes") {\r
+ if (!MODE_PHPIZE && PHP_ONE_SHOT == "yes") {\r
if (i > 0) {\r
objs_line += " " + sub_build + obj; \r
srcs_line += " " + dir + "\\" + src;\r
}\r
}\r
\r
- if (PHP_ONE_SHOT == "yes") {\r
+ if (!MODE_PHPIZE && PHP_ONE_SHOT == "yes") {\r
MFO.WriteLine(objs_line + ": " + srcs_line);\r
MFO.WriteLine("\t$(CC) $(" + flags + ") $(CFLAGS) /Fo" + sub_build + " $(" + bd_flags_name + ") /c " + srcs_line);\r
}\r
STDOUT.WriteLine("Enabled extensions:");\r
output_as_table(["Extension", "Mode"], extensions_enabled.sort());\r
STDOUT.WriteBlankLines(2);\r
-\r
- STDOUT.WriteLine("Enabled SAPI:");\r
- output_as_table(["Sapi Name"], sapi_enabled);\r
- STDOUT.WriteBlankLines(2);\r
-\r
+ if (!MODE_PHPIZE) {\r
+ STDOUT.WriteLine("Enabled SAPI:");\r
+ output_as_table(["Sapi Name"], sapi_enabled);\r
+ STDOUT.WriteBlankLines(2);\r
+ }\r
ar[0] = ['Build type', PHP_DEBUG == "yes" ? "Debug" : "Release"];\r
ar[1] = ['Thread Safety', PHP_ZTS == "yes" ? "Yes" : "No"];\r
ar[2] = ['Compiler', VC_VERSIONS[VCVERS]];\r
\r
STDOUT.WriteLine("Generating files...");\r
generate_makefile();\r
- generate_internal_functions();\r
- generate_config_h();\r
-\r
+ if (!MODE_PHPIZE) {\r
+ generate_internal_functions();\r
+ generate_config_h();\r
+ generate_phpize();\r
+ }\r
STDOUT.WriteLine("Done.");\r
STDOUT.WriteBlankLines(1);\r
write_summary();\r
outfile.Close();\r
}\r
\r
+function generate_phpize()\r
+{\r
+ STDOUT.WriteLine("Generating phpize");\r
+ dest = get_define("BUILD_DIR") + '/devel';\r
+\r
+ if (!FSO.FolderExists(dest)) {\r
+ FSO.CreateFolder(dest);\r
+ }\r
+\r
+ var MF = FSO.CreateTextFile(dest + "/phpize.js", true);\r
+ prefix = get_define("PHP_PREFIX");\r
+ prefix = prefix.replace(new RegExp("/", "g"), "\\");\r
+ prefix = prefix.replace(new RegExp("\\\\", "g"), "\\\\");\r
+ MF.WriteLine("var PHP_PREFIX=" + '"' + prefix + '"');\r
+ MF.WriteLine("var PHP_ZTS=" + '"' + (PHP_ZTS.toLowerCase() == "yes" ? "Yes" : "No") + '"');\r
+ MF.WriteLine("var VC_VERSION=" + VCVERS);\r
+ MF.WriteLine("var PHP_VERSION=" + PHP_VERSION);\r
+ MF.WriteLine("var PHP_MINOR_VERSION=" + PHP_MINOR_VERSION);\r
+ MF.WriteLine("var PHP_RELEASE_VERSION=" + PHP_RELEASE_VERSION);\r
+ MF.WriteBlankLines(2);\r
+ MF.WriteLine("/* Genereted win32/build/phpize.js.in */");\r
+ MF.WriteBlankLines(1);\r
+ MF.Write(file_get_contents("win32/build/phpize.js.in"));\r
+ MF.Close();\r
+\r
+ /* Generate flags file */\r
+ /* spit out variable definitions */\r
+ CJ = FSO.CreateTextFile(dest + "/config.phpize.js");\r
+/*\r
+ function escape(in) {\r
+ val = t.replace(new RegExp('("\\\\)', "g"), '\\$1');\r
+ }\r
+*/\r
+ //if (typeof t == "string") {\r
+ \r
+ CJ.WriteLine("var PHP_ZTS =" + '"' + PHP_ZTS + '"');\r
+ CJ.WriteLine("var PHP_LIB =" + '"' + get_define('PHPLIB') + '"');\r
+\r
+ CJ.WriteBlankLines(1);\r
+ CJ.Close();\r
+}\r
+\r
function generate_makefile()\r
{\r
STDOUT.WriteLine("Generating Makefile");\r
var MF = FSO.CreateTextFile("Makefile", true);\r
\r
MF.WriteLine("# Generated by configure.js");\r
-\r
/* spit out variable definitions */\r
var keys = (new VBArray(configure_subst.Keys())).toArray();\r
var i;\r
}\r
\r
MF.WriteBlankLines(1);\r
+ if (MODE_PHPIZE) {\r
+ var TF = FSO.OpenTextFile(PHP_DIR + "/script/Makefile.phpize", 1);\r
+ } else {\r
+ var TF = FSO.OpenTextFile("win32/build/Makefile", 1);\r
+ }\r
\r
- var TF = FSO.OpenTextFile("win32/build/Makefile", 1);\r
MF.Write(TF.ReadAll());\r
\r
MF.WriteLine("install-headers:");\r
// and you can then build everything, ignoring fatal errors within a module\r
// by running "nmake snap"\r
PHP_SNAPSHOT_BUILD = "no";\r
-ARG_ENABLE('snapshot-build', 'Build a snapshot; turns on everything it can and ignores build errors', 'no');\r
-\r
-// one-shot build optimizes build by asking compiler to build\r
-// several objects at once, reducing overhead of starting new\r
-// compiler processes.\r
-ARG_ENABLE('one-shot', 'Optimize for fast build - best for release and snapshot builders, not so hot for edit-and-rebuild hacking', 'no');\r
+if (!MODE_PHPIZE) {\r
+ ARG_ENABLE('snapshot-build', 'Build a snapshot; turns on everything it can and ignores build errors', 'no');\r
\r
+ // one-shot build optimizes build by asking compiler to build\r
+ // several objects at once, reducing overhead of starting new\r
+ // compiler processes.\r
+ ARG_ENABLE('one-shot', 'Optimize for fast build - best for release and snapshot builders, not so hot for edit-and-rebuild hacking', 'no');\r
+}\r
\r