summaryrefslogtreecommitdiff
path: root/win32/build
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2019-03-18 12:27:29 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2019-03-18 15:02:52 +0100
commitf21c0549030762f8403f57eef375af9f946133e7 (patch)
tree4fa1537376fe21202d109ea932419be387acacb6 /win32/build
parente072537e7f7dfd1de0a10172b80dba79a525dc72 (diff)
downloadphp-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.js26
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')
}