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);
+               }
        }
 }