Fix build failure on header generation with repetitive builds of MSVC
authorMichael Paquier <michael@paquier.xyz>
Tue, 25 Feb 2020 04:57:40 +0000 (13:57 +0900)
committerMichael Paquier <michael@paquier.xyz>
Tue, 25 Feb 2020 04:57:40 +0000 (13:57 +0900)
GenerateConfigHeader() in Solution.pm was complaining about unused
define symbols even if a newer config header was not generated, causing
successive build attempts with MSVC to fail.

Oversight in commit 8f4fb4c.

Author: Kyotaro Horiguchi
Reviewed-by: Juan José Santamaría Flecha
Discussion: https://postgr.es/m/20200218.160500.44393633318853097.horikyota.ntt@gmail.com

src/tools/msvc/Solution.pm

index 75f916399c078a281835e3f01935b4fdbea6daaf..6b4a6eec2a467226758d14915cdaced06f4b5dd2 100644 (file)
@@ -826,13 +826,14 @@ EOF
 sub GenerateConfigHeader
 {
    my ($self, $config_header, $defines, $required) = @_;
-   my %defines_copy = %$defines;
 
    my $config_header_in = $config_header . '.in';
 
    if (IsNewer($config_header, $config_header_in) ||
        IsNewer($config_header, __FILE__))
    {
+       my %defines_copy = %$defines;
+
        open(my $i, '<', $config_header_in)
          || confess "Could not open $config_header_in\n";
        open(my $o, '>', $config_header)
@@ -871,10 +872,11 @@ sub GenerateConfigHeader
        }
        close($o);
        close($i);
-   }
-   if ($required && scalar(keys %defines_copy) > 0)
-   {
-       croak "unused defines: " . join(' ', keys %defines_copy);
+
+       if ($required && scalar(keys %defines_copy) > 0)
+       {
+           croak "unused defines: " . join(' ', keys %defines_copy);
+       }
    }
 }