summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorAndrew Gierth2018-07-31 18:58:39 +0000
committerAndrew Gierth2018-07-31 19:07:39 +0000
commitdf163230b92b79468c241e9480e7fb85b7614440 (patch)
tree4af57c0a4cc386242af606c39b3ee5a37e41a8da /src/tools
parentf3eb76b399efb88882b2984fccdefcea540b2749 (diff)
Provide for contrib and pgxs modules to install include files.
This allows out-of-tree PLs and similar code to get access to definitions needed to work with extension data types. The following existing modules now install headers: contrib/cube, contrib/hstore, contrib/isn, contrib/ltree, contrib/seg. Discussion: https://postgr.es/m/87y3euomjh.fsf%40news-spur.riddles.org.uk
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/msvc/Install.pm43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm
index 429608fde61..60b5639df85 100644
--- a/src/tools/msvc/Install.pm
+++ b/src/tools/msvc/Install.pm
@@ -554,6 +554,49 @@ sub CopySubdirFiles
}
}
+ {
+ $flist = '';
+ if ($mf =~ /^HEADERS\s*=\s*(.*)$/m) { $flist .= $1 }
+ my @modlist = ();
+ my %fmodlist = ();
+ while ($mf =~ /^HEADERS_([^\s=]+)\s*=\s*(.*)$/mg) { $fmodlist{$1} .= $2 }
+
+ if ($mf =~ /^MODULE_big\s*=\s*(.*)$/m)
+ {
+ push @modlist, $1;
+ if ($flist ne '')
+ {
+ $fmodlist{$1} = $flist;
+ $flist = '';
+ }
+ }
+ elsif ($mf =~ /^MODULES\s*=\s*(.*)$/m)
+ {
+ push @modlist, split /\s+/, $1;
+ }
+
+ croak "HEADERS requires MODULE_big in $subdir $module"
+ if $flist ne '';
+
+ foreach my $mod (keys %fmodlist)
+ {
+ croak "HEADERS_$mod for unknown module in $subdir $module"
+ unless grep { $_ eq $mod } @modlist;
+ $flist = ParseAndCleanRule($fmodlist{$mod}, $mf);
+ EnsureDirectories($target,
+ "include", "include/server",
+ "include/server/$moduledir",
+ "include/server/$moduledir/$mod");
+ foreach my $f (split /\s+/, $flist)
+ {
+ lcopy("$subdir/$module/$f",
+ "$target/include/server/$moduledir/$mod/" . basename($f))
+ || croak("Could not copy file $f in $subdir $module");
+ print '.';
+ }
+ }
+ }
+
$flist = '';
if ($mf =~ /^DOCS\s*=\s*(.*)$/mg) { $flist .= $1 }
if ($flist ne '')