Re: cvs: php-src(PHP_5_3) /win32/build config.w32
| From: | Marcus Boerger | Date: | Thu, 20 Mar 2008 10:48:50 +0000 |
| Subject: | Re: cvs: php-src(PHP_5_3) /win32/build config.w32 | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-49257@lists.php.net to get a copy of this message | ||
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