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

Reply via email to