]> granicus.if.org Git - php/commitdiff
- phpize support merge from 5.3
authorPierre Joye <pajoye@php.net>
Mon, 13 Dec 2010 20:55:13 +0000 (20:55 +0000)
committerPierre Joye <pajoye@php.net>
Mon, 13 Dec 2010 20:55:13 +0000 (20:55 +0000)
win32/build/Makefile
win32/build/buildconf.js
win32/build/config.w32
win32/build/configure.tail
win32/build/confutils.js

index b5545ad3de3b8db8fd80797f2b82b8afd2dd132d..203b03850db7a8359ae2af4eb170f47b0159b9cd 100644 (file)
@@ -152,12 +152,24 @@ msi-installer: dist
        $(BUILD_DIR)\php.exe ..\php-installer\build-installer.php "$(BUILD_DIR)" "$(PHPDLL)" "$(SAPI_TARGETS)" "$(EXT_TARGETS)" "$(PECL_TARGETS)"
 
 # need to redirect, since INSTALL is a file in the root...
-install: really-install install-headers install-lib
+install: really-install install-devel install-lib
 
 install-lib:
        @if not exist $(PHP_PREFIX)\lib mkdir $(PHP_PREFIX)\lib >nul
        @copy $(BUILD_DIR)\$(PHPLIB) $(PHP_PREFIX)\lib /y >nul
 
+install-devel: install-headers
+       @if not exist $(PHP_PREFIX)\script mkdir $(PHP_PREFIX)\script >nul
+       @if not exist $(PHP_PREFIX)\build mkdir $(PHP_PREFIX)\build >nul
+       @copy win32\build\confutils.js $(PHP_PREFIX)\script\ /y >nul
+       @copy win32\build\configure.tail $(PHP_PREFIX)\script\ /y >nul
+       @copy win32\build\config.w32.phpize.in $(PHP_PREFIX)\script\ /y >nul
+       @copy win32\build\Makefile.phpize $(PHP_PREFIX)\script\ /y >nul
+       @copy win32\build\phpize.bat $(PHP_PREFIX)\ /y >nul
+       @copy win32\build\template.rc $(PHP_PREFIX)\build\ /y >nul
+       @copy $(BUILD_DIR)\devel\config.phpize.js $(PHP_PREFIX)\script\ /y >nul
+       @copy $(BUILD_DIR)\devel\phpize.js $(PHP_PREFIX)\script\ /y >nul
+
 really-install:
        @if not exist $(PHP_PREFIX) mkdir $(PHP_PREFIX)
        @echo Installing files under $(PHP_PREFIX)
@@ -166,5 +178,3 @@ really-install:
        @echo Registering event source with syslog (requires admin rights)
        @echo It's okay for this step to fail:
        -$(PHP_PREFIX)\php.exe -n -dextension_dir=$(PHP_PREFIX) win32/build/registersyslog.php $(PHP_PREFIX)\$(PHPDLL)
-
-
index d26b4c74030bf4ddeae13dc0fdfe6380e1d471de..b4194ad203784390b02fcf02bfb965556b260661 100644 (file)
@@ -209,6 +209,7 @@ buildconf_process_args();
 \r
 // Write the head of the configure script\r
 C.WriteLine("/* This file automatically generated from win32/build/confutils.js */");\r
+C.WriteLine("MODE_PHPIZE=false;");\r
 C.Write(file_get_contents("win32/build/confutils.js"));\r
 \r
 // If project files were requested, pull in the code to generate them\r
index 2eaa8b3adb8d3516fcfc9c04c0f1e0a0b9b2a2a0..2525df747a3e3dfa23345c407b2923a13a55476b 100644 (file)
@@ -204,6 +204,9 @@ if (PHP_DEBUG == "yes") {
 
 if (PHP_ZTS == "yes") {
        ADD_FLAG("CFLAGS", "/D ZTS=1");
+       ADD_FLAG("ZTS", "1");
+} else {
+       ADD_FLAG("ZTS", "0");
 }
 
 DEFINE("PHP_ZTS_ARCHIVE_POSTFIX", PHP_ZTS == "yes" ? '' : "-nts");
@@ -356,7 +359,7 @@ ADD_SOURCES("main/streams", "streams.c cast.c memory.c filter.c plain_wrapper.c
 ADD_SOURCES("win32", "glob.c readdir.c \
        registry.c select.c sendmail.c time.c winutil.c wsyslog.c globals.c");
 
-PHP_INSTALL_HEADERS("", "Zend/ TSRM/ main/ main/streams/");
+PHP_INSTALL_HEADERS("", "Zend/ TSRM/ main/ main/streams/ win32/");
 
 STDOUT.WriteBlankLines(1);
 
index 1977abb80700f1803765308c99c6e03d57086092..70625a43d42188fd364456f4b090a7c85842d902 100644 (file)
@@ -2,7 +2,7 @@
 // $Id$
 // tail end of configure
 
-if (sapi_enabled.length < 1) {
+if (!MODE_PHPIZE && sapi_enabled.length < 1) {
        MESSAGE("");
        ERROR("No SAPI selected, please enable at least one SAPI.");
 }
index fc4b59cb319e679dc5f949a9d3c70af8600820b1..75c27b9b7705bcf14373b41500bbfe976d0c1649 100644 (file)
@@ -58,11 +58,18 @@ if (PROGRAM_FILES == null) {
        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
@@ -109,7 +116,9 @@ build_dirs = new Array();
 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
@@ -333,7 +342,13 @@ function conf_process_args()
                                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
@@ -975,13 +990,21 @@ function generate_version_info_resource(makefiletarget, basename, creditspath, s
                        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
@@ -1020,7 +1043,11 @@ function SAPI(sapiname, file_list, makefiletarget, cflags, obj_dir)
        \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
@@ -1033,11 +1060,20 @@ function SAPI(sapiname, file_list, makefiletarget, cflags, obj_dir)
                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
@@ -1202,8 +1238,13 @@ function EXTENSION(extname, file_list, shared, cflags, dllname, obj_dir)
 \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
@@ -1317,7 +1358,7 @@ function ADD_SOURCES(dir, file_list, target, obj_dir)
                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
@@ -1331,7 +1372,7 @@ function ADD_SOURCES(dir, file_list, target, obj_dir)
                }\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
@@ -1483,11 +1524,11 @@ function write_summary()
        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
@@ -1534,9 +1575,11 @@ function generate_files()
 \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
@@ -1610,13 +1653,54 @@ function generate_config_h()
        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
@@ -1633,8 +1717,12 @@ function generate_makefile()
        }\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
@@ -1903,11 +1991,12 @@ function PHP_INSTALL_HEADERS(dir, headers_list)
 // 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