]> granicus.if.org Git - php/commitdiff
Independent versioning for PECL extensions (and only PECL, for now)
authorSteph Fox <sfox@php.net>
Sat, 22 Mar 2008 09:07:59 +0000 (09:07 +0000)
committerSteph Fox <sfox@php.net>
Sat, 22 Mar 2008 09:07:59 +0000 (09:07 +0000)
This affects the RC template used to ship information with the DLL in Windows distributions - nothing else.
It will potentially affect 13 PECL modules at present (and yes I do know which ones!)

win32/build/confutils.js
win32/build/template.rc

index 9778235fc1efcd5ce281eadabb87ef9eec992e39..31c7a164145632e85431f9ed1d74e30a16b0f0dd 100644 (file)
@@ -17,7 +17,7 @@
   +----------------------------------------------------------------------+
 */
 
-// $Id: confutils.js,v 1.60.2.1.2.8.2.3 2008-02-17 01:26:15 pajoye Exp $
+// $Id: confutils.js,v 1.60.2.1.2.8.2.4 2008-03-22 09:07:59 sfox Exp $
 
 var STDOUT = WScript.StdOut;
 var STDERR = WScript.StdErr;
@@ -835,14 +835,23 @@ function CHECK_HEADER_ADD_INCLUDE(header_name, flag_name, path_to_check, use_env
 /* emits rule to generate version info for a SAPI
  * or extension.  Returns the name of the .res file
  * that will be generated */
-function generate_version_info_resource(makefiletarget, creditspath)
+function generate_version_info_resource(makefiletarget, basename, creditspath, sapi)
 {
        var resname = makefiletarget + ".res";
-       var res_desc = "PHP " + makefiletarget;
-       var res_prod_name = res_desc;
+       var res_desc = makefiletarget;
        var credits;
        var thanks = "";
        var logo = "";
+       var debug = "";
+       var project_url = "http://www.php.net";
+       var project_header = creditspath + "/php_" + basename + ".h";
+       var versioning = "";
+
+       if (sapi) {
+               var internal_name = basename.toUpperCase() + " SAPI";
+       } else {
+               var internal_name = basename.toUpperCase() + " extension";
+       }
 
        if (FSO.FileExists(creditspath + '/CREDITS')) {
                credits = FSO.OpenTextFile(creditspath + '/CREDITS', 1);
@@ -860,8 +869,30 @@ function generate_version_info_resource(makefiletarget, creditspath)
                credits.Close();
        }
 
+       if (creditspath.match(new RegExp("pecl"))) {
+               project_url = "http://pecl.php.net/" + basename;
+
+               /* keep independent versioning PECL-specific for now */
+               if (FSO.FileExists(project_header)) {
+                       if (header = FSO.OpenTextFile(project_header, 1)) {
+                               contents = header.ReadAll();
+                               /* allowed: x.x.x[-dev|-alpha|-beta][RCx] */
+                               if (contents.match(new RegExp('PHP_' + basename.toUpperCase() + '_VERSION(\\s+)"((\\d+\.\\d+(\.\\d+)?)(\-[a-z]{3,5})?(RC\\d+)?)'))) {
+                                       project_version = RegExp.$2;
+                                       file_version = RegExp.$3.split('.');
+                                       versioning = '\\"" /d EXT_FILE_VERSION=' + file_version[0] + ',' + file_version[1] + ',' + file_version[2] + ' /d EXT_VERSION="\\"' + project_version;
+                               }
+                               header.Close();
+                       }
+               }
+       }
+
        if (makefiletarget.match(new RegExp("\\.exe$"))) {
-               logo = " /D WANT_LOGO ";
+               logo = " /d WANT_LOGO ";
+       }
+
+       if (PHP_DEBUG != "no") {
+               debug = " /d _DEBUG";
        }
 
        /**
@@ -869,20 +900,22 @@ function generate_version_info_resource(makefiletarget, creditspath)
         */
        if (FSO.FileExists(creditspath + '\\template.rc')) {
                MFO.WriteLine("$(BUILD_DIR)\\" + resname + ": " + creditspath + "\\template.rc");
-               MFO.WriteLine("\t$(RC) /fo $(BUILD_DIR)\\" + resname + logo +
-                       ' /d FILE_DESCRIPTION="\\"' + res_desc + '\\"" /d FILE_NAME="\\"' + makefiletarget +
-                       '\\"" /d PRODUCT_NAME="\\"' + res_prod_name + '\\"" /d THANKS_GUYS="\\"' +
-                       thanks + '\\"" ' + creditspath + '\\template.rc');
+               MFO.WriteLine("\t$(RC) /n /fo $(BUILD_DIR)\\" + resname + logo + debug +
+                       ' /d FILE_DESCRIPTION="\\"' + res_desc + '\\"" /d FILE_NAME="\\"'
+                       + makefiletarget + '\\"" /d URL="\\"' + project_url
+                       + '\\"" /d INTERNAL_NAME="\\"' + internal_name + versioning + 
+                       '\\"" /d THANKS_GUYS="\\"' + thanks + '\\"" ' + creditspath + 
+                       '\\template.rc');
                return resname;
        }
 
        MFO.WriteLine("$(BUILD_DIR)\\" + resname + ": win32\\build\\template.rc");
-       MFO.WriteLine("\t$(RC) /fo $(BUILD_DIR)\\" + resname + logo +
-               ' /d FILE_DESCRIPTION="\\"' + res_desc + '\\"" /d FILE_NAME="\\"' + makefiletarget +
-               '\\"" /d PRODUCT_NAME="\\"' + res_prod_name + '\\"" /d THANKS_GUYS="\\"' +
-               thanks + '\\"" win32\\build\\template.rc');
+       MFO.WriteLine("\t$(RC) /n /fo $(BUILD_DIR)\\" + resname + logo + debug +
+               ' /d FILE_DESCRIPTION="\\"' + res_desc + '\\"" /d FILE_NAME="\\"'
+               + makefiletarget + '\\"" /d URL="\\"' + project_url + 
+               '\\"" /d INTERNAL_NAME="\\"' + internal_name + versioning + 
+               '\\"" /d THANKS_GUYS="\\"' + thanks + '\\"" win32\\build\\template.rc');
        MFO.WriteBlankLines(1);
-       
        return resname;
 }
 
@@ -916,7 +949,7 @@ function SAPI(sapiname, file_list, makefiletarget, cflags, obj_dir)
        MFO.WriteBlankLines(1);
 
        /* generate a .res file containing version information */
-       resname = generate_version_info_resource(makefiletarget, configure_module_dirname);
+       resname = generate_version_info_resource(makefiletarget, sapiname, configure_module_dirname, true);
        
        MFO.WriteLine(makefiletarget + ": $(BUILD_DIR)\\" + makefiletarget);
        MFO.WriteLine("\t@echo SAPI " + sapiname_for_printing + " build complete");
@@ -1065,7 +1098,7 @@ function EXTENSION(extname, file_list, shared, cflags, dllname, obj_dir)
                }
                var libname = dllname.substring(0, dllname.length-4) + ".lib";
 
-               var resname = generate_version_info_resource(dllname, configure_module_dirname);
+               var resname = generate_version_info_resource(dllname, extname, configure_module_dirname, false);
                var ld = "@$(CC)";
 
                MFO.WriteLine("$(BUILD_DIR)\\" + libname + ": $(BUILD_DIR)\\" + dllname);
index 7f9d9a6e30627bdad5036b6576fa56254095e1d3..fbeae42b6a2f21e53b1b0f8e4f1122312f7f76f5 100644 (file)
@@ -19,18 +19,32 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
 0 ICON win32\build\php.ico
 #endif
 
-#define XSTRVER4(maj, min, rel, build) #maj "." #min "." #rel "." #build
-#define XSTRVER3(maj, min, rel) #maj "." #min "." #rel
-#define STRVER4(maj, min, rel, build) XSTRVER4(maj, min, rel, build)
-#define STRVER3(maj, min, rel) XSTRVER3(maj, min, rel)
+#ifndef INTERNAL_NAME /* e.g. 'PHAR extension', 'CGI SAPI' */
+# ifdef FILE_DESCRIPTION
+#define INTERNAL_NAME FILE_DESCRIPTION /* e.g. 'PHP Script Interpreter', 'GD imaging' */
+# else
+#define INTERNAL_NAME FILE_NAME /* e.g. 'php5ts.dll', 'php_bz2.dll' */
+# endif
+#endif
+
+#ifndef URL
+#define URL "http://www.php.net"
+#endif
+
+#ifndef EXT_VERSION
+#define EXT_VERSION PHP_VERSION
+#endif
+
+#ifndef EXT_FILE_VERSION
+#define EXT_FILE_VERSION PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION
+#endif
 
-//Version
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,PHP_RELEASE_VERSION
- PRODUCTVERSION PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,0
+ FILEVERSION EXT_FILE_VERSION
+ PRODUCTVERSION PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
+ FILEFLAGS (VS_FF_DEBUG|VS_FF_SPECIALBUILD)
 #else
  FILEFLAGS 0x0L
 #endif
@@ -42,19 +56,24 @@ BEGIN
     BEGIN
         BLOCK "040904b0"
         BEGIN
-            VALUE "Comments", THANKS_GUYS "\0"
-            VALUE "CompanyName", "The PHP Group\0"
-            VALUE "FileDescription", FILE_DESCRIPTION "\0"
-            VALUE "FileVersion", STRVER4(PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION, PHP_RELEASE_VERSION)
-            VALUE "InternalName", FILE_NAME "\0"
-            VALUE "LegalCopyright", "Copyright © 1997-2007 The PHP Group\0"
-            VALUE "LegalTrademarks", "PHP\0"
-            VALUE "OriginalFilename", FILE_NAME "\0"
-            VALUE "PrivateBuild", "\0"
-            VALUE "ProductName", PRODUCT_NAME "\0"
-            VALUE "ProductVersion", STRVER3(PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION)
-            VALUE "SpecialBuild", PHP_EXTRA_VERSION "\0"
-                       VALUE "URL", "http://www.php.net"
+            VALUE "Comments", THANKS_GUYS
+            VALUE "CompanyName", "The PHP Group"
+#ifdef _DEBUG
+            VALUE "FileDescription", FILE_DESCRIPTION " (DEBUG)"
+#else
+            VALUE "FileDescription", FILE_DESCRIPTION
+#endif
+            VALUE "FileVersion", EXT_VERSION
+            VALUE "InternalName", INTERNAL_NAME
+            VALUE "LegalCopyright", "Copyright © 1997-2008 The PHP Group"
+            VALUE "LegalTrademarks", "PHP"
+            VALUE "OriginalFilename", FILE_NAME
+            VALUE "ProductName", "PHP"
+            VALUE "ProductVersion", PHP_VERSION
+#ifdef _DEBUG
+            VALUE "SpecialBuild", "Debug build"
+#endif
+            VALUE "URL", URL
         END
     END
     BLOCK "VarFileInfo"
@@ -66,4 +85,3 @@ END
 #ifdef MC_INCLUDE
 #include MC_INCLUDE
 #endif
-