Add bison version check to configure

Since we're already checking for the minimum required re2c version,
also checking for the minimum required bison version is sensible.
This commit is contained in:
Christoph M. Becker 2019-03-18 12:27:29 +01:00
parent e072537e7f
commit f21c054903

View 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')
}