aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2019-05-03 21:56:47 -0700
committerNoah Misch <noah@leadboat.com>2019-05-03 21:56:47 -0700
commit34ff542a71f8e8e768b24d40548dec4be0c707c3 (patch)
treed072a719dd05d9810a719900c35b9ec76a97c9a2 /src
parent726cc4242a2f766c8280a72ef7c8418965d139c8 (diff)
downloadpostgresql-34ff542a71f8e8e768b24d40548dec4be0c707c3.tar.gz
postgresql-34ff542a71f8e8e768b24d40548dec4be0c707c3.zip
MSVC: Build ~35% faster by calling dumpbin just once per directory.
Peifeng Qiu Discussion: https://postgr.es/m/CABmtVJiKXQjast0dQD-8KAtfm8XmyYxo-4Dc7+M+fBr8JRTqkw@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r--src/tools/msvc/gendef.pl27
1 files changed, 6 insertions, 21 deletions
diff --git a/src/tools/msvc/gendef.pl b/src/tools/msvc/gendef.pl
index 77c3a775b05..41d53eda468 100644
--- a/src/tools/msvc/gendef.pl
+++ b/src/tools/msvc/gendef.pl
@@ -1,7 +1,6 @@
use strict;
use warnings;
use 5.8.0;
-use File::Spec::Functions qw(splitpath catpath);
use List::Util qw(max);
my @def;
@@ -12,17 +11,6 @@ my @def;
# src/tools/msvc/gendef.pl
#
-sub dumpsyms
-{
- my ($objfile, $symfile) = @_;
- my ($symvol, $symdirs, $symbase) = splitpath($symfile);
- my $tmpfile = catpath($symvol, $symdirs, "symbols.out");
- system("dumpbin /symbols /out:$tmpfile $_ >NUL")
- && die "Could not call dumpbin";
- rename($tmpfile, $symfile);
- return;
-}
-
# Given a symbol file path, loops over its contents
# and returns a list of symbols of interest as a dictionary
# of 'symbolname' -> symtype, where symtype is:
@@ -177,15 +165,12 @@ print "Generating $defname.DEF from directory $ARGV[0], platform $platform\n";
my %def = ();
-while (<$ARGV[0]/*.obj>) ## no critic (RequireGlobFunction);
-{
- my $objfile = $_;
- my $symfile = $objfile;
- $symfile =~ s/\.obj$/.sym/i;
- dumpsyms($objfile, $symfile);
- print ".";
- extract_syms($symfile, \%def);
-}
+my $symfile = "$ARGV[0]/all.sym";
+my $tmpfile = "$ARGV[0]/tmp.sym";
+system("dumpbin /symbols /out:$tmpfile $ARGV[0]/*.obj >NUL")
+ && die "Could not call dumpbin";
+rename($tmpfile, $symfile);
+extract_syms($symfile, \%def);
print "\n";
writedef($deffile, $platform, \%def);