]> granicus.if.org Git - php/commitdiff
Add bison version check to configure
authorChristoph M. Becker <cmbecker69@gmx.de>
Mon, 18 Mar 2019 11:27:29 +0000 (12:27 +0100)
committerChristoph M. Becker <cmbecker69@gmx.de>
Mon, 18 Mar 2019 14:02:52 +0000 (15:02 +0100)
Since we're already checking for the minimum required re2c version,
also checking for the minimum required bison version is sensible.

win32/build/confutils.js

index d943453bf8e59e9dc4f2453f2dabf2f57e8e2b8c..11583034436199cc8b2ac7f565139f5e7cfbc971 100644 (file)
@@ -52,6 +52,9 @@ var PHP_MAKEFILE_FRAGMENTS = PHP_SRC_DIR + "\\Makefile.fragments.w32";
    and manifest. */
 var WINVER = "0x0601"; /* 7/2008r2 */
 
+// There's a minimum requirement for bison.
+var MINBISON = "3.0.0";
+
 // There's a minimum requirement for re2c..
 var MINRE2C = "0.13.4";
 
@@ -176,6 +179,8 @@ function probe_binary(EXE, what)
        var command = 'cmd /c ""' + EXE;
        if (what == "version") {
                command = command + '" -v"';
+       } else if (what == "longversion") {
+               command = command + '" --version"';
        }
        var version = execute(command + '" 2>&1"');
 
@@ -2903,7 +2908,26 @@ function toolset_setup_project_tools()
        // we don't want to define LIB, as that will override the default library path
        // that is set in that env var
        PATH_PROG('lib', null, 'MAKE_LIB');
-       if (!PATH_PROG('bison')) {
+
+       var BISON = PATH_PROG('bison');
+       if (BISON) {
+               var BISONVERS = probe_binary(BISON, "longversion");
+               STDOUT.WriteLine('  Detected bison version ' + BISONVERS);
+
+               if (BISONVERS.match(/^\d+.\d+$/)) {
+                       BISONVERS += ".0";
+               }
+
+               var hm = BISONVERS.match(/(\d+)\.(\d+)\.(\d+)/);
+               var nm = MINBISON.match(/(\d+)\.(\d+)\.(\d+)/);
+
+               var intvers =  (hm[1]-0)*10000 + (hm[2]-0)*100 + (hm[3]-0);
+               var intmin =  (nm[1]-0)*10000 + (nm[2]-0)*100 + (nm[3]-0);
+
+               if (intvers < intmin) {
+                       ERROR('The minimum bison version requirement is ' + MINBISON);
+               }
+       } else {
                ERROR('bison is required')
        }