diff options
| author | Steph Fox <sfox@php.net> | 2008-03-18 03:12:42 +0000 |
|---|---|---|
| committer | Steph Fox <sfox@php.net> | 2008-03-18 03:12:42 +0000 |
| commit | 766b6b606e1cff6c9c9c399ac37727c5206fded9 (patch) | |
| tree | 57b76146c23fe5b9d5e4c0b31ed54c3f27263a14 | |
| parent | 01dc595706ac4cc2e3abfb6c17f4789d5742a62c (diff) | |
| download | php-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/Makefile | 10 | ||||
| -rw-r--r-- | win32/build/config.w32 | 36 |
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'); |
