]> granicus.if.org Git - php/commitdiff
- add new build type, optional. has been used for the last 2 RCs
authorPierre Joye <pajoye@php.net>
Wed, 11 Jan 2012 15:46:45 +0000 (15:46 +0000)
committerPierre Joye <pajoye@php.net>
Wed, 11 Jan 2012 15:46:45 +0000 (15:46 +0000)
win32/build/config.w32
win32/build/confutils.js

index 2351ee695b50bba54f7cc014bbf70755b77121e6..1a4b834be425d20805c895b7a5631d74c6a28cd7 100644 (file)
@@ -105,6 +105,19 @@ ARG_ENABLE('debug-pack', 'Release binaries with external debug symbols (--enable
 if (PHP_DEBUG == "yes" && PHP_DEBUG_PACK == "yes") {
        ERROR("Use of both --enable-debug and --enable-debug-pack not allowed.");
 }
+
+ARG_ENABLE('pgi', 'Generate PGO instrumented binaries', 'no');
+ARG_WITH('pgo', 'Compile optimized binaries using training data from folder', 'no');
+if (PHP_PGI == "yes" || PHP_PGO != "no") {
+       PGOMGR = PATH_PROG('pgomgr', WshShell.Environment("Process").Item("PATH"));
+       if (!PGOMGR) {
+               ERROR("--enable-pgi and --with-pgo options can only be used if PGO capable compiler is present.");
+       }
+       if (PHP_PGI == "yes" && PHP_PGO != "no") {
+               ERROR("Use of both --enable-pgi and --with-pgo not allowed.");
+       }
+}
+
 ARG_ENABLE('zts', 'Thread safety', 'yes');
 // Configures the hard-coded installation dir
 ARG_WITH('prefix', 'where PHP will be installed', '');
@@ -234,6 +247,19 @@ if (PHP_DEBUG == "yes" && PHP_ZTS == "yes") {
        DEFINE("PHPLIB", "php" + PHP_VERSION + ".lib");
 }
 
+// CFLAGS, LDFLAGS and BUILD_DIR are defined
+// Add compiler and link flags if PGO options are selected
+if (PHP_DEBUG != "yes" && PHP_PGI == "yes") {
+       ADD_FLAG('CFLAGS', "/GL /O2");
+       ADD_FLAG('LDFLAGS', "/LTCG:PGINSTRUMENT");
+       DEFINE("PGOPGD_DIR", "$(BUILD_DIR)");
+}
+else if (PHP_DEBUG != "yes" && PHP_PGO != "no") {
+       ADD_FLAG('CFLAGS', "/GL /O2");
+       ADD_FLAG('LDFLAGS', "/LTCG:PGUPDATE");
+       DEFINE("PGOPGD_DIR", ((PHP_PGO.length == 0 || PHP_PGO == "yes") ? "$(BUILD_DIR)" : PHP_PGO));
+}
+
 // Find the php_build dir - it contains headers and libraries
 // that we need
 ARG_WITH('php-build', 'Path to where you extracted the development libraries (http://wiki.php.net/internals/windows/libs). Assumes that it is a sibling of this source dir (..\\deps) if not specified', 'no');
index a4ea2bfa2634ba469535909147568eca9d619556..8c4054da0b303969f0aa68729060ed8723580875 100644 (file)
@@ -414,7 +414,8 @@ can be built that way. \
                 'php-build', 'snapshot-template', 'ereg',\r
                 'pcre-regex', 'fastcgi', 'force-cgi-redirect',\r
                 'path-info-check', 'zts', 'ipv6', 'memory-limit',\r
-                'zend-multibyte', 'fd-setsize', 'memory-manager', 't1lib'\r
+                'zend-multibyte', 'fd-setsize', 'memory-manager',\r
+                't1lib', 'pgi', 'pgo'\r
                );\r
        var force;\r
 \r
@@ -1060,6 +1061,10 @@ function SAPI(sapiname, file_list, makefiletarget, cflags, obj_dir)
                ldflags = "$(LDFLAGS)";\r
                manifest = "-@$(_VC_MANIFEST_EMBED_EXE)";\r
        }\r
+       \r
+       if(PHP_PGI == "yes" || PHP_PGO != "no") {\r
+               ldflags += " /PGD:$(PGOPGD_DIR)\\" + makefiletarget.substring(0, makefiletarget.indexOf(".")) + ".pgd";\r
+       }\r
 \r
        if (MODE_PHPIZE) {\r
                if (ld) {\r
@@ -1199,6 +1204,7 @@ function EXTENSION(extname, file_list, shared, cflags, dllname, obj_dir)
        var objs = null;\r
        var EXT = extname.toUpperCase();\r
        var extname_for_printing;\r
+       var ldflags;\r
 \r
        if (shared == null) {\r
                eval("shared = PHP_" + EXT + "_SHARED;");\r
@@ -1228,7 +1234,6 @@ function EXTENSION(extname, file_list, shared, cflags, dllname, obj_dir)
        MFO.WriteLine("# objects for EXT " + extname);\r
        MFO.WriteBlankLines(1);\r
 \r
-\r
        ADD_SOURCES(configure_module_dirname, file_list, extname, obj_dir);\r
        \r
        MFO.WriteBlankLines(1);\r
@@ -1242,6 +1247,11 @@ function EXTENSION(extname, file_list, shared, cflags, dllname, obj_dir)
                var resname = generate_version_info_resource(dllname, extname, configure_module_dirname, false);\r
                var ld = "@$(CC)";\r
 \r
+               ldflags = "";\r
+               if (PHP_PGI == "yes" || PHP_PGO != "no") {\r
+                       ldflags = " /PGD:$(PGOPGD_DIR)\\" + dllname.substring(0, dllname.indexOf(".")) + ".pgd";\r
+               }\r
+\r
                MFO.WriteLine("$(BUILD_DIR)\\" + libname + ": $(BUILD_DIR)\\" + dllname);\r
                MFO.WriteBlankLines(1);\r
                if (MODE_PHPIZE) {\r
@@ -1249,7 +1259,7 @@ function EXTENSION(extname, file_list, shared, cflags, dllname, obj_dir)
                        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
+                       MFO.WriteLine("\t" + ld + " $(" + EXT + "_GLOBAL_OBJS) $(BUILD_DIR)\\$(PHPLIB) $(LIBS_" + EXT + ") $(LIBS) $(BUILD_DIR)\\" + resname + " /link /out:$(BUILD_DIR)\\" + dllname + ldflags + " $(DLL_LDFLAGS) $(LDFLAGS) $(LDFLAGS_" + EXT + ")");\r
                }\r
                MFO.WriteLine("\t-@$(_VC_MANIFEST_EMBED_DLL)");\r
                MFO.WriteBlankLines(1);\r