libtool bug

Reini Urban rurban@x-ray.at
Sun Oct 10 16:05:00 GMT 2004


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/
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: libtool-relink.patch
URL: <http://cygwin.com/pipermail/cygwin/attachments/20041010/8f8315de/attachment.ksh>
-------------- next part --------------
--
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/


More information about the Cygwin mailing list