Commit 4a896f17984c6776fd6e5b3fd7bad12822d3afc2
Committed by
Jay Berkenbilt
1 parent
dad8a3e6
Change copy-dlls to be mingw-only and work with cmake
Showing
1 changed file
with
12 additions
and
30 deletions
copy_dlls
| 1 | 1 | #!/usr/bin/env perl |
| 2 | - | |
| 3 | 2 | require 5.008; |
| 4 | -BEGIN { $^W = 1; } | |
| 3 | +use warnings; | |
| 5 | 4 | use strict; |
| 6 | 5 | use File::Basename; |
| 6 | +use File::Path qw(make_path); | |
| 7 | 7 | |
| 8 | 8 | my $whoami = basename($0); |
| 9 | 9 | |
| 10 | -usage() unless @ARGV == 4; | |
| 11 | -my ($file, $destdir, $objdump, $windows_wordsize) = @ARGV; | |
| 10 | +usage() unless @ARGV == 3; | |
| 11 | +my ($file, $libqpdf, $destdir) = @ARGV; | |
| 12 | 12 | my $filedir = dirname($file); |
| 13 | 13 | |
| 14 | 14 | my $sep = ($^O eq 'MSWin32' ? ';' : ':'); |
| ... | ... | @@ -20,28 +20,6 @@ foreach my $var (qw(LIB)) |
| 20 | 20 | push(@path, split($sep, $ENV{$var})); |
| 21 | 21 | } |
| 22 | 22 | } |
| 23 | -my $redist_suffix = (($windows_wordsize eq '64') ? "x64" : "x86"); | |
| 24 | -if (exists $ENV{'VCINSTALLDIR'}) | |
| 25 | -{ | |
| 26 | - my $redist = $ENV{'VCINSTALLDIR'} . "/Redist/$redist_suffix"; | |
| 27 | - if (opendir(D, $redist)) | |
| 28 | - { | |
| 29 | - my @entries = readdir(D); | |
| 30 | - closedir(D); | |
| 31 | - foreach my $e (@entries) | |
| 32 | - { | |
| 33 | - if ($e =~ m/\.CRT$/i) | |
| 34 | - { | |
| 35 | - unshift(@path, "$redist/$e"); | |
| 36 | - } | |
| 37 | - } | |
| 38 | - } | |
| 39 | -} | |
| 40 | -if (exists $ENV{'UniversalCRTSdkDir'}) | |
| 41 | -{ | |
| 42 | - my $redist = $ENV{'UniversalCRTSdkDir'} . "/Redist/ucrt/DLLs/$redist_suffix"; | |
| 43 | - unshift(@path, $redist); | |
| 44 | -} | |
| 45 | 23 | |
| 46 | 24 | my $format = undef; |
| 47 | 25 | my @to_find = get_dlls($file); |
| ... | ... | @@ -53,13 +31,16 @@ while (@to_find) |
| 53 | 31 | { |
| 54 | 32 | my $dll = shift(@to_find); |
| 55 | 33 | my $found = 0; |
| 56 | - foreach my $dir (@path) | |
| 34 | + foreach my $dir ($libqpdf, @path) | |
| 57 | 35 | { |
| 58 | 36 | if ((-f "$dir/$dll") && is_format("$dir/$dll", $format)) |
| 59 | 37 | { |
| 60 | 38 | if (! exists $final{$dll}) |
| 61 | 39 | { |
| 62 | - $final{$dll} = "$dir/$dll"; | |
| 40 | + if ($dir ne $libqpdf) | |
| 41 | + { | |
| 42 | + $final{$dll} = "$dir/$dll"; | |
| 43 | + } | |
| 63 | 44 | push(@to_find, get_dlls("$dir/$dll")); |
| 64 | 45 | } |
| 65 | 46 | $found = 1; |
| ... | ... | @@ -77,6 +58,7 @@ if (@notfound) |
| 77 | 58 | join(', ', @notfound), "\n"; |
| 78 | 59 | } |
| 79 | 60 | |
| 61 | +make_path($destdir); | |
| 80 | 62 | foreach my $dll (sort keys (%final)) |
| 81 | 63 | { |
| 82 | 64 | my $f = $final{$dll}; |
| ... | ... | @@ -90,7 +72,7 @@ sub get_dlls |
| 90 | 72 | { |
| 91 | 73 | my @result = (); |
| 92 | 74 | my $exe = shift; |
| 93 | - open(O, "$objdump -p \"$exe\"|") or die "$whoami: can't run objdump\n"; | |
| 75 | + open(O, "objdump -p \"$exe\"|") or die "$whoami: can't run objdump\n"; | |
| 94 | 76 | while (<O>) |
| 95 | 77 | { |
| 96 | 78 | if (m/^\s+DLL Name:\s+(.+\.dll)/i) |
| ... | ... | @@ -141,5 +123,5 @@ sub is_format |
| 141 | 123 | |
| 142 | 124 | sub usage |
| 143 | 125 | { |
| 144 | - die "Usage: $whoami {exe|dll} destdir\n"; | |
| 126 | + die "Usage: $whoami {exe|dll} libqpdf-dir destdir\n"; | |
| 145 | 127 | } | ... | ... |