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. */ and manifest. */
var WINVER = "0x0601"; /* 7/2008r2 */ var WINVER = "0x0601"; /* 7/2008r2 */
// There's a minimum requirement for bison.
var MINBISON = "3.0.0";
// There's a minimum requirement for re2c.. // There's a minimum requirement for re2c..
var MINRE2C = "0.13.4"; var MINRE2C = "0.13.4";
@ -176,6 +179,8 @@ function probe_binary(EXE, what)
var command = 'cmd /c ""' + EXE; var command = 'cmd /c ""' + EXE;
if (what == "version") { if (what == "version") {
command = command + '" -v"'; command = command + '" -v"';
} else if (what == "longversion") {
command = command + '" --version"';
} }
var version = execute(command + '" 2>&1"'); 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 // we don't want to define LIB, as that will override the default library path
// that is set in that env var // that is set in that env var
PATH_PROG('lib', null, 'MAKE_LIB'); 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') ERROR('bison is required')
} }