Switch "cl /?" to "cl /help" in MSVC scripts for platform detection
authorMichael Paquier <[email protected]>
Thu, 21 Jan 2021 01:56:03 +0000 (10:56 +0900)
committerMichael Paquier <[email protected]>
Thu, 21 Jan 2021 01:56:03 +0000 (10:56 +0900)
"cl /?" produces a different output if run on a real or a virtual drive
(this can be set with a simple subst command), causing an error in the
MSVC scripts if building on a virtual drive because the platform to use
cannot be detected.

"cl /help", on the contrary, produces a consistent output if used on a
real or virtual drive.  Changing to "/help" allows the compilation to
work with a virtual drive as long as the top of the code repository is
part of the drive, without impacting the build on real drives.

Reported-by: Robert Grange
Author: Juan José Santamaría Flecha
Discussion: https://postgr.es/m/16825-c4f104bcebc67034@postgresql.org

src/tools/msvc/Solution.pm

index 59a42bea97a7f19939fb323bd5b3878397ac716a..2f28de0355ae91e3b4617abdd05ebff6cd2a2dbe 100644 (file)
@@ -62,7 +62,7 @@ sub DeterminePlatform
    if ($^O eq "MSWin32")
    {
        # Examine CL help output to determine if we are in 32 or 64-bit mode.
-       my $output = `cl /? 2>&1`;
+       my $output = `cl /help 2>&1`;
        $? >> 8 == 0 or die "cl command not found";
        $self->{platform} =
          ($output =~ /^\/favor:<.+AMD64/m) ? 'x64' : 'Win32';