]> granicus.if.org Git - php/commitdiff
Generic function for binary probes, kill the other two. And get rid of the annoying...
authorSteph Fox <sfox@php.net>
Tue, 18 Mar 2008 17:10:20 +0000 (17:10 +0000)
committerSteph Fox <sfox@php.net>
Tue, 18 Mar 2008 17:10:20 +0000 (17:10 +0000)
win32/build/config.w32

index 15347e493f9965e2025ad75d8c62959f9e284ae6..6841f435e6f46a7c6c0b6de74b3fc3e2c29907d4 100644 (file)
@@ -4,41 +4,41 @@
 // 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+)?)/)) {
+                       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 @@ if (X64) {
 // 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 @@ if (!PATH_PROG('bison')) {
 // 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;