Ari Jolma <[EMAIL PROTECTED]> writes: > EU::Depends::find_extra_libs assumes now that when OS is MSWin32, the > (import) library extension is ".lib". When MinGW is used, the > extension is usually .dll.a (MinGW could also happily use the actual > .dll, but EU::LibList::Kid does not allow that currently). Thus a > (partial) solution would be to change find_extra_libs to search for > files with .dll.a extension too. I don't have a very elegant solution > how to allow both extensions. > > ActiveState seems to support MinGW and automatically detect MinGW > (this is old news > http://www.issociate.de/board/post/274396/ActivePerl_5.8.7.815_released.html). > Somehow this detection should be propagated to EU::LibList::Kid to > look for import libraries "lib<library>.dll.a" -- or the Makefile.PL's > may also alter the liblist by adding ".dll.a" before calling > set_libs().
I also follow your approach on Windows with perl 5.10 built with MinGW. To find .dll.a libraries I trimmed EU::Liblist::Kid with the patch below. Changes are only in _win32_ext procedure. Am not sure if cygwin builts are then ok. Still, I have to add one line to the $(INST_DYNAMIC) Makefile section (an example for Glib, similar for Cairo and Gtk2). $(NOECHO) $(LD) -o Glib.dll $(LDDLFLAGS) $(LDFROM) -Wl,-out-implib,blib/arch/auto/Glib/Glib.lib $(EXPORT_LIST) $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) dll.exp Probably some changes in EU::MM_Win32 are needed to produce correct Makefile without the necessity to add an additional line. --- Kidorig.pm 2008-08-26 19:41:38.669502800 +0000 +++ Kid.pm 2008-08-26 19:54:56.446856800 +0000 @@ -308,12 +308,27 @@ if (s/^-l// and $GC and !/^lib/i) { $_ = "lib$_"; } - $_ .= $libext if !/\Q$libext\E$/i; + my ($libext2,$lib1,$lib2); + $libext2 = '.dll'.$libext; + $lib1 = $_.$libext if !/\Q$libext\E$/i; # .a + $lib2 = $_.$libext2 if !/\Q$libext2\E$/i; # .dll.a my $secondpass = 0; LOOKAGAIN: # look for the file itself + if (-f $lib1) { + warn "'$thislib' found as '$lib1'\n" if $verbose; + $found++; + push(@extralibs, $lib1); + next; + } + if (-f $lib2) { + warn "'$thislib' found as '$lib2'\n" if $verbose; + $found++; + push(@extralibs, $lib2); + next; + } if (-f) { warn "'$thislib' found as '$_'\n" if $verbose; $found++; @@ -323,7 +338,7 @@ my $found_lib = 0; foreach my $thispth (@searchpath, @libpath){ - unless (-f ($fullname="$thispth\\$_")) { + unless (-f ($fullname="$thispth\\$lib1") or (-f ($fullname="$thispth\\$lib2"))) { warn "'$thislib' not found as '$fullname'\n" if $verbose; next; } @@ -341,7 +356,8 @@ goto LOOKAGAIN if s/^lib//i; } elsif (!/^lib/i) { - $_ = "lib$_"; + $lib1 = "lib$lib1"; + $lib2 = "lib$lib2"; goto LOOKAGAIN; } } -- Radek _______________________________________________ gtk-perl-list mailing list gtk-perl-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-perl-list