Hello Steph, Tuesday, March 18, 2008, 6:10:20 PM, you wrote:
> sfox Tue Mar 18 17:10:20 2008 UTC > Modified files: (Branch: PHP_5_3) > /php-src/win32/build config.w32 > Log: > Generic function for binary probes, kill the other two. And get rid of the > annoying double check for CL. > > http://cvs.php.net/viewvc.cgi/php-src/win32/build/config.w32?r1=1.40.2.8.2.10.2.10&r2=1.40.2.8.2.10.2.11&diff_format=u > Index: php-src/win32/build/config.w32 > diff -u php-src/win32/build/config.w32:1.40.2.8.2.10.2.10 > php-src/win32/build/config.w32:1.40.2.8.2.10.2.11 > --- php-src/win32/build/config.w32:1.40.2.8.2.10.2.10 Tue Mar 18 03:12:42 > 2008 > +++ php-src/win32/build/config.w32 Tue Mar 18 17:10:20 2008 > @@ -1,44 +1,44 @@ > // vim:ft=javascript > -// $Id: config.w32,v 1.40.2.8.2.10.2.10 2008/03/18 03:12:42 sfox Exp $ > +// $Id: config.w32,v 1.40.2.8.2.10.2.11 2008/03/18 17:10:20 sfox Exp $ > // "Master" config file; think of it as a configure.in > // equivalent. > > ARG_WITH('cygwin', 'Path to cygwin utilities on your system', '\\cygwin'); > -PATH_PROG('cl'); > CL = PATH_PROG('cl'); > if (!CL) { > ERROR("MS C++ compiler is required"); > } > -// Which version of the compiler do we have ? > -function probe_msvc_compiler_version(CL) > + > +function probe_binary(EXE, what) > { > // tricky escapes to get stderr redirection to work > - var banner = execute('cmd /c ""' + CL + '" 2>&1"'); > - if (banner.match(/(\d+)\.(\d+)\.(\d+)(\.(\d+))?/)) { > - return RegExp.$1; > + var command = 'cmd /c ""' + EXE; > + if (what == "version") { > + command = command + '" -v"'; > + } > + var version = execute(command + '" 2>&1"'); > + > + if (what == "64") { > + if (version.match(/x64/)) { > + return 1; > + } > + } else { > + if (version.match(/(\d+\.\d+\.\d+(\.\d+)?)/)) { This does not sound right. Some distributions add stuff ad the end, typically the distribution name. I dunnot if that is an issue on windows as well. What I do know is that for instance development versions of re2c add '.dev' here. Also note that re2c is one of the tools that provide a way easier way to check the version number. That is you call it using either '-V' or '--vernum' which gives you back an integer number which can be checked easier. marcus > + return RegExp.$1; > + } > } > return 0; > } > > -VCVERS = probe_msvc_compiler_version(CL); > +// Which version of the compiler do we have? > +VCVERS = probe_binary(CL).substr(0, 2); > STDOUT.WriteLine("Detected MS compiler version " + VCVERS); > - > // 12 is VC6 > // 13 is vs.net 2003 > // 14 is vs.net 2005 > > // do we use x64 or 80x86 version of compiler? > -function probe_msvc_compiler_x64(CL) > -{ > - // tricky escapes to get stderr redirection to work > - var banner = execute('cmd /c ""' + CL + '" 2>&1"'); > - if (banner.match(/x64/)) { > - return 1; > - } > - return 0; > -} > - > -X64 = probe_msvc_compiler_x64(CL); > +X64 = probe_binary(CL, 64); > if (X64) { > STDOUT.WriteLine("Detected 64-bit compiler"); > } else { > @@ -48,7 +48,6 @@ > // cygwin now ships with link.exe. Avoid searching the cygwin path > // for this, as we want the MS linker, not the fileutil > PATH_PROG('link', WshShell.Environment("Process").Item("PATH")); > - > PATH_PROG('nmake'); > > // we don't want to define LIB, as that will override the default library > path > @@ -61,23 +60,12 @@ > // 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); > + RE2CVERS = probe_binary(RE2C, "version"); > intvers = RE2CVERS.replace(pattern, '') - 0; > intmin = MINRE2C.replace(pattern, '') - 0; > Best regards, Marcus -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php