[Top][All Lists]
[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