This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: libtool bug
Charles Wilson schrieb:
The attached patch (against libtool cvs branch 2.0) ain't pretty, but it
works on cygwin and shouldn't break other platforms.
------------------------------------------------------------------------
2004-10-09 Charles Wilson <spam.protected>
* config/ltmain.m4sh (func_mode_link): don't relink
on cygwin/mingw; no need. But do ensure that wrappers
are created unless doing a purely static build.
Which will leed to this backported patch (attached) for our folks using
libtool-devel-1.5.10-1. (patch uses absolute paths)
libtool-2cvs is a bit advanced, but this is essentially what charles
patch did.
It did help on re-building gdal, esp. in the make install step.
I will also check on my other failing packages. (libming, php)
But it didn't help on another (related?) new cygwin libtool problem:
Sometimes it switches to .exe instead of .dll. Will investigate this
further. My current theory is that -o <soname> just missed the .dll
extension and .exe is then taken as default.
/bin/sh.exe ./libtool --mode=link g++ $LIBS
-Wl,--enable-runtime-pseudo-reloc -o libgdal.la ./gcore/*.lo ./port/*.lo
./alg/*.lo ... \
-rpath /usr/lib \
-no-undefined \
-version-info 5:1:4
rm -fr .libs/libgdal.a .libs/libgdal.dll.a .libs/libgdal.la
.libs/libgdal.lai
creating reloadable object files...
creating a temporary reloadable object file: .libs/libgdal.la-2.o
/usr/i686-pc-cygwin/bin/ld.exe -r -o .libs/libgdal.la-1.o $OBJS...
/usr/i686-pc-cygwin/bin/ld.exe -r -o .libs/libgdal.la-2.o $OBJS...
g++ -shared -nostdlib .libs/libgdal.la-2.o -L/usr/lib
/usr/lib/libgeos.dll.a /usr/lib/libjasper.dll.a /usr/lib/libpng.dll.a
/usr/lib/libz.dll.a /usr/lib/libsqlite3.dll.a -L/lib
/usr/lib/libpq.dll.a -L/usr/lib/gcc/i686-pc-cygwin/3.4.1
-L/usr/lib/gcc/i686-pc-cygwin/3.4.1/../../.. -lstdc++ -lgcc -lcygwin
-luser32 -lkernel32 -ladvapi32 -lshell32 -lgcc
-Wl,--enable-runtime-pseudo-reloc -Wl,--enable-runtime-pseudo-reloc
-o .libs/cyggdal-1 -Wl,--image-base=0x10000000
^^^ .dll missing!
-Wl,--out-implib,.libs/libgdal.dll.a
does this ring a bell somewhere? $output missing the extension.
I see in one code section that for case $linkmode prog) the .exe
extension and then any extension is stripped.
case $linkmode in
...
prog)
case $host in
*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
esac
but we are in linkmode=lib.
and this is the failing place, exactly after your patch:
if test "$wrappers_required" = no; then
# Replace the output file specification.
compile_command=`$echo "X$compile_command" | $Xsed -e
's%@OUTPUT@%'"$output"'%g'`
$output misses the ".dll"
I would rather use something like this:
compile_command=`$echo "X$compile_command" | $Xsed -e
's%@OUTPUT@%'"$output_objdir/${outputname}${shrext}"'%g'`
correct?
--
Reini Urban
http://xarch.tu-graz.ac.at/home/rurban/
--- /usr/autotool/devel/share/libtool/ltmain.sh-1.5.10 2004-09-22 08:50:51.001000000 +0200
+++ /usr/autotool/devel/share/libtool/ltmain.sh 2004-10-10 15:19:24.098794800 +0200
@@ -2414,10 +2414,19 @@
link_static=no # Whether the deplib will be linked statically
if test -n "$library_names" &&
{ test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ case $host in
+ *cygwin* | *mingw*)
+ # No point in relinking DLLs because paths are not encoded
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=no
+ ;;
+ *)
if test "$installed" = no; then
notinst_deplibs="$notinst_deplibs $lib"
need_relink=yes
fi
+ ;;
+ esac
# This is a shared library
# Warn about portability, can't link against -module's on
@@ -4499,7 +4508,20 @@
finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
fi
+ wrappers_required=yes
+ case $host in
+ *cygwin* | *mingw* )
+ if test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ *)
if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ wrappers_required=no
+ fi
+ ;;
+ esac
+ if test "$wrappers_required" = no; then
# Replace the output file specification.
compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
link_command="$compile_command$compile_rpath"
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/