From 1fdbc2eaa4e69a377c033865693a67e634b3db30 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 11 Oct 2013 11:05:41 -0700 Subject: Fix the DLL search path order The correct order on Windows is: 1. Local directory (relative to the binary) 2. $PATH 3. System dirs We insert our -L flags between 1 and 2 above. Signed-off-by: Thiago Macieira Signed-off-by: Dirk Hohndel --- scripts/win-ldd.pl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/win-ldd.pl b/scripts/win-ldd.pl index 4144d792d..6907016bb 100644 --- a/scripts/win-ldd.pl +++ b/scripts/win-ldd.pl @@ -2,7 +2,7 @@ use strict; my %deploy; my $objdump = $ENV{objdump} ? $ENV{objdump} : "objdump"; -my @searchdirs = split(/:/, $ENV{PATH}); +my @searchdirs; sub addDependenciesFor($) { open OBJDUMP, "-|", $objdump, "-p", $_[0] or die; @@ -46,11 +46,19 @@ for (@ARGV) { if (-d $_) { push @searchdirs, $_; } elsif (-f $_) { + # Add $_'s path to the search list too + my $dirname = $_; + $dirname =~ s,/[^/]+$,,; + push @searchdirs, $dirname; + $deploy{$_} = $_; addDependenciesFor($_); } } +# Append PATH to @searchdirs +@searchdirs = (@searchdirs, split(/:/, $ENV{PATH})); + while (1) { findMissingDependencies(); -- cgit v1.2.3-70-g09d2