From 34ff542a71f8e8e768b24d40548dec4be0c707c3 Mon Sep 17 00:00:00 2001 From: Noah Misch Date: Fri, 3 May 2019 21:56:47 -0700 Subject: [PATCH] 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 --- src/tools/msvc/gendef.pl | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/src/tools/msvc/gendef.pl b/src/tools/msvc/gendef.pl index 77c3a775b0..41d53eda46 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); -- 2.40.0