libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Mingw-msys] Proposed libtool patch for MinGW


From: Bob Friesenhahn
Subject: Re: [Mingw-msys] Proposed libtool patch for MinGW
Date: Wed, 16 Oct 2002 09:44:56 -0500 (CDT)

On Tue, 15 Oct 2002, Earnie Boyd wrote:

> Is your patch against CVS head?  Or the release 1.4.2?

CVS head.

Bob

>
> Earnie.
>
> Bob Friesenhahn wrote:
> > The attached patch to FSF CVS libtool is intended to make libtool
> > (mostly) behave as it does for Cygwin when executed with MinGW.  It
> > consists of contributions from Elizabeth Barham, and my own efforts.
> >
> > The DLLs are installed to $(libdir)/../bin as they currently are under
> > Cygwin. Any change to this scheme should be common to both Cygwin &
> > MinGW unless there is a reason for behaving differently.
> >
> > This patch allows a shared library build of ImageMagick (using both C
> > & C++) to successfully build and install under MinGW using the MSYS
> > shell environment.  I have not tried to build libtool modules with it
> > yet (should be interesting).
> >
> > I am posting this patch with the expectation that concerned parties
> > will inspect it, test it, and send any fixes so that it can be
> > incorporated in libtool 1.5.
> >
> > Bob
> > ======================================
> > Bob Friesenhahn
> > address@hidden
> > http://www.simplesystems.org/users/bfriesen
> >
> >
> > ------------------------------------------------------------------------
> >
> > Index: libtool.m4
> > ===================================================================
> > RCS file: /cvsroot/libtool/libtool/libtool.m4,v
> > retrieving revision 1.266
> > diff -u -r1.266 libtool.m4
> > --- libtool.m4      11 Oct 2002 15:52:08 -0000      1.266
> > +++ libtool.m4      15 Oct 2002 18:47:45 -0000
> > @@ -620,7 +620,14 @@
> >      lt_cv_sys_max_cmd_len=-1;
> >      ;;
> >
> > -  *)
> > +
> > +  mingw*)
> > +    # On msys 1.0 and win98, the maximum length was something like
> > +    # 200,000 and took around 45 minutes to get there... ouch!
> > +    lt_cv_sys_max_cmd_len=8192;
> > +    ;;
> > +
> > + *)
> >      # If test is not a shell built-in, we'll probably end up computing a
> >      # maximum length that is only half of the actual maximum length, but
> >      # we can't tell.
> > @@ -1131,7 +1138,8 @@
> >      shlibpath_overrides_runpath=yes
> >      ;;
> >    yes,mingw*)
> > -    library_names_spec='${libname}`echo ${release} | sed -e 
> > 's/[[.]]/-/g'`${versuffix}.dll'
> > +    library_names_spec='$libname.dll.a'
> > +    soname_spec='${libname}`echo ${release} | sed -e 
> > 's/[[.]]/-/g'`${versuffix}.dll'
> >      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" 
> > | sed -e "s/^libraries://" -e "s,=/,/,g"`
> >      if echo "$sys_lib_search_path_spec" | [egrep ';[c-zC-Z]:/' 
> > >/dev/null]; then
> >        # It is most probably a Windows format PATH printed by
> > @@ -1144,6 +1152,14 @@
> >      else
> >        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | sed  -e 
> > "s/$PATH_SEPARATOR/ /g"`
> >      fi
> > +    postinstall_cmds='dlpath=`sh 2>&1 -c '\''. $dir/${file}i;echo 
> > \$dlname'\''`~
> > +      dldir=$destdir/`dirname \$dlpath`~
> > +      test -d \$dldir || mkdir -p \$dldir~
> > +      $install_prog .libs/$dlname \$dldir/$dlname'
> > +    postuninstall_cmds='dldll=`sh 2>&1 -c '\''. $file; echo \$dlname'\''`~
> > +      dlpath=$dir/\$dldll~
> > +       $rm \$dlpath'
> > +    shlibpath_overrides_runpath=yes
> >      ;;
> >    yes,pw32*)
> >      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo 
> > ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
> > @@ -2624,12 +2640,25 @@
> >      else
> >        _LT_AC_TAGVAR(ld_shlibs, $1)=no
> >      fi
> > -    ;;
> > +   ;;
> >
> > -  mingw* | pw32*)
> > -    # FIXME: insert proper C++ library support
> > -     _LT_AC_TAGVAR(ld_shlibs, $1)=no
> > -    ;;
> > +  mingw* )
> > +    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
> > +    _LT_AC_TAGVAR(always_export_symbols, $1)=no
> > +
> > +    if $LD --help 2>&1 | egrep 'auto-import' > /dev/null; then
> > +      _LT_AC_TAGVAR(archive_cmds, $1)='$CC '$lt_cv_cc_dll_switch' $libobjs 
> > $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--out-implib,${lib}'
> > +      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC '$lt_cv_cc_dll_switch' 
> > $libobjs $deplibs $compiler_flags -o $output_objdir/$soname 
> > ${wl}-retain-symbols-file $wl$export_symbols ${wl}--out-implib,${lib}'
> > +    else
> > +      _LT_AC_TAGVAR(ld_shlibs, $1)=no
> > +    fi
> > +   ;;
> > +
> > +
> > +  pw32* )
> > +     # FIXME: insert proper C++ library support
> > +    _LT_AC_TAGVAR(ld_shlibs, $1)=no
> > +   ;;
> >
> >    dgux*)
> >      case $cc_basename in
> > @@ -4517,7 +4546,7 @@
> >        _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs 
> > $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == 
> > "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > 
> > $export_symbols'
> >      fi
> >      ;;
> > -  mingw* | pw32*)
> > +  pw32*)
> >      _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
> >    ;;
> >    *)
> > @@ -4621,7 +4650,7 @@
> >        fi
> >        ;;
> >
> > -    cygwin*)
> > +    cygwin* | mingw*)
> >        # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually 
> > meaningless,
> >        # as there is no search path for DLLs.
> >        _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
> > @@ -4635,7 +4664,8 @@
> >        fi
> >        ;;
> >
> > -    mingw* | pw32*)
> > +    # This pw32 section is mostly antique stuff preserved from 
> > Cygwin/MinGW.
> > +    pw32*)
> >        # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually 
> > meaningless, as there is
> >        # no search path for DLLs.
> >        _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
> > Index: ltmain.in
> > ===================================================================
> > RCS file: /cvsroot/libtool/libtool/ltmain.in,v
> > retrieving revision 1.301
> > diff -u -r1.301 ltmain.in
> > --- ltmain.in       25 Sep 2002 04:26:20 -0000      1.301
> > +++ ltmain.in       15 Oct 2002 18:47:46 -0000
> > @@ -2120,7 +2120,7 @@
> >         elif test -n "$soname_spec"; then
> >           # bleh windows
> >           case $host in
> > -         *cygwin*)
> > +         *cygwin* | mingw*)
> >             major=`expr $current - $age`
> >             versuffix="-$major"
> >             ;;
> > @@ -4475,7 +4475,7 @@
> >       # place dlname in correct position for cygwin
> >       tdlname=$dlname
> >       case $host,$output,$installed,$module,$dlname in
> > -       *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
> > +       *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) 
> > tdlname=../bin/$dlname ;;
> >       esac
> >       $echo > $output "\
> >  # $outputname - a libtool library file
>

======================================
Bob Friesenhahn
address@hidden
http://www.simplesystems.org/users/bfriesen





reply via email to

[Prev in Thread] Current Thread [Next in Thread]