diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2019-03-18 12:27:29 +0100 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2019-03-18 15:02:52 +0100 |
commit | f21c0549030762f8403f57eef375af9f946133e7 (patch) | |
tree | 4fa1537376fe21202d109ea932419be387acacb6 /win32/build | |
parent | e072537e7f7dfd1de0a10172b80dba79a525dc72 (diff) | |
download | php-git-f21c0549030762f8403f57eef375af9f946133e7.tar.gz |
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.
Diffstat (limited to 'win32/build')
-rw-r--r-- | win32/build/confutils.js | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/win32/build/confutils.js b/win32/build/confutils.js index d943453bf8..1158303443 100644 --- a/win32/build/confutils.js +++ b/win32/build/confutils.js @@ -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') } |