summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteph Fox <sfox@php.net>2008-03-18 03:12:42 +0000
committerSteph Fox <sfox@php.net>2008-03-18 03:12:42 +0000
commit766b6b606e1cff6c9c9c399ac37727c5206fded9 (patch)
tree57b76146c23fe5b9d5e4c0b31ed54c3f27263a14
parent01dc595706ac4cc2e3abfb6c17f4789d5742a62c (diff)
downloadphp-git-766b6b606e1cff6c9c9c399ac37727c5206fded9.tar.gz
re2c checking.
If it's not installed, the least scary of messages goes out. If it's installed but older than the required version, the download link is given.
-rw-r--r--win32/build/Makefile10
-rw-r--r--win32/build/config.w3236
2 files changed, 42 insertions, 4 deletions
diff --git a/win32/build/Makefile b/win32/build/Makefile
index a249781dfd..5bb7c3321c 100644
--- a/win32/build/Makefile
+++ b/win32/build/Makefile
@@ -21,7 +21,7 @@ CC="$(CL)"
LD="$(LINK)"
MC="$(MC)"
MT="$(MT)"
-
+RE2C="$(RE2C)"
MCFILE=$(BUILD_DIR)\wsyslog.rc
@@ -29,10 +29,16 @@ all: generated_files $(EXT_TARGETS) $(PECL_TARGETS) $(SAPI_TARGETS)
build_dirs: $(BUILD_DIR) $(BUILD_DIRS_SUB)
+!if $(RE2C) == ""
+generated_files: build_dirs Zend\zend_ini_parser.c \
+ Zend\zend_language_parser.c \
+ $(PHPDEF) $(MCFILE)
+!else
generated_files: build_dirs Zend\zend_ini_parser.c \
Zend\zend_language_parser.c Zend\zend_ini_scanner.c \
Zend\zend_language_scanner.c \
$(PHPDEF) $(MCFILE)
+!endif
$(BUILD_DIR)\$(PHPDLL).def: $(PHP_DLL_DEF_SOURCES)
type $(PHP_DLL_DEF_SOURCES) > $(BUILD_DIR)\$(PHPDLL).def
@@ -43,11 +49,13 @@ Zend\zend_ini_parser.c Zend\zend_ini_parser.h: Zend\zend_ini_parser.y
Zend\zend_language_parser.c Zend\zend_language_parser.h: Zend\zend_language_parser.y
$(BISON) --output=Zend/zend_language_parser.c -v -d -p zend Zend/zend_language_parser.y
+!if $(RE2C) != ""
Zend\zend_ini_scanner.c: Zend\zend_ini_scanner.l
$(RE2C) $(RE2C_FLAGS) --case-inverted -cbdFt Zend/zend_ini_scanner_defs.h -oZend/zend_ini_scanner.c Zend/zend_ini_scanner.l
Zend\zend_language_scanner.c: Zend\zend_language_scanner.l
$(RE2C) $(RE2C_FLAGS) --case-inverted -cbdFt Zend/zend_language_scanner_defs.h -oZend/zend_language_scanner.c Zend/zend_language_scanner.l
+!endif
PHPDLL_RES=$(BUILD_DIR)\$(PHPDLL).res
diff --git a/win32/build/config.w32 b/win32/build/config.w32
index c270de4b2b..15347e493f 100644
--- a/win32/build/config.w32
+++ b/win32/build/config.w32
@@ -57,10 +57,40 @@ PATH_PROG('lib', null, 'MAKE_LIB');
if (!PATH_PROG('bison')) {
ERROR('bison is required')
}
-if (!PATH_PROG('re2c')) {
- ERROR('re2c is required')
+
+// There's a minimum requirement for re2c..
+MINRE2C = "0.13.3";
+
+function probe_re2c_version(RE2C)
+{
+ var command = "cmd /c " + RE2C + " -v";
+ var version = execute(command + '" 2>&1"');
+
+ if (version.match(/((\d+)\.(\d+)\.(\d+))/)) {
+ return RegExp.$1;
+ }
+ return 0;
+}
+
+RE2C = PATH_PROG('re2c');
+if (RE2C) {
+ var intvers, intmin;
+ var pattern = /\./g;
+
+ RE2CVERS = probe_re2c_version(RE2C);
+ intvers = RE2CVERS.replace(pattern, '') - 0;
+ intmin = MINRE2C.replace(pattern, '') - 0;
+
+ if (intvers < intmin) {
+ STDOUT.WriteLine('WARNING: The minimum RE2C version requirement is ' + MINRE2C + ', ' + RE2CVERS + ' detected');
+ STDOUT.WriteLine('Parsers will not be generated. Upgrade your copy at http://sf.net/projects/re2c');
+ DEFINE('RE2C', '');
+ } else {
+ DEFINE('RE2C_FLAGS', '');
+ }
+} else {
+ STDOUT.WriteLine('Parsers will not be regenerated');
}
-DEFINE('RE2C_FLAGS', '');
PATH_PROG('zip');
PATH_PROG('lemon');