delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/11/04/16:48:38

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=BAYES_00
X-Spam-Check-By: sourceware.org
Message-ID: <971187.38393.qm@web25508.mail.ukl.yahoo.com>
Date: Wed, 4 Nov 2009 21:48:22 +0000 (GMT)
From: Marco Atzeri <marco_atzeri AT yahoo DOT it>
Subject: question on libtool usage/limitation
To: cygwin AT cygwin DOT com
MIME-Version: 1.0
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

Hi All,
the development of octave is moving to automake + libtool
but we have some problem to convince libtool to correctly link
all the libs on cygwin.

Octave is built in C++, C and Fortran and during=20
the link phase we are specifing
both C++, C and Fortran installed libs, in same case static.
Suitesparse for example it is only static, also on other=20
platforms.

/usr/lib/libamd.a
/usr/lib/libbtf.a
/usr/lib/libcamd.a
/usr/lib/libccolamd.a
/usr/lib/libcholmod.a
/usr/lib/libcolamd.a
/usr/lib/libcsparse.a
/usr/lib/libcxsparse.a
/usr/lib/libklu.a
/usr/lib/libspqr.a
/usr/lib/libumfpack.a


In the past the link command was:

g++-4 -shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enabl=
e-auto-image-base -Wl,--out-implib=3Dliboctave.dll.a -o cygoctave.dll [huge=
 list of x.o] -L../libcruft -L.  -lcruft -lcholmod -lumfpack  -lamd -lcamd =
-lcolamd -lccolamd -lcxsparse -larpack -lqrupdate -llapack -lblas -lfftw3 -=
lfftw3f -lreadline  -L/usr/lib -lpcre -lreadline  -lncurses -ldl -lwsock32 =
-lhdf5 -lz -lm  -lwsock32 -L/bin/../lib/gcc/i686-pc-cygwin/4.3.2 -L/bin/../=
lib/gcc -L/usr/lib/gcc/i686-pc-cygwin/4.3.2 -L/bin/../lib/gcc/i686-pc-cygwi=
n/4.3.2/../../.. -lhdf5 -lz -lm -lgfortranbegin -lgfortran -lcygwin -luser3=
2 -lkernel32 -ladvapi32 -lshell32

and the outcome was fine:
Creating library file: liboctave.dll.a

The current link command is
/bin/sh ../libtool --tag=3DCXX   --mode=3Dlink g++-4 -g -O2   -DHAVE_CONFIG=
_H -mieee-fp   -Wall -W -Wshadow -Wold-style-cast -Wformat -g -O2  -g -O2 -=
release 3.3.50+ -no-undefined -o liboctave.la -rpath /usr/local/lib/octave-=
3.3.50+  [huge list of x.lo]  ../libcruft/libcruft.la  -lcholmod -lumfpack =
-lamd -lcamd -lcolamd -lccolamd -lcxsparse -larpack -lqrupdate  -lfftw3 -lf=
ftw3f -llapack -lblas -lreadline -lncurses  -L/usr/lib -lpcre -ldl -L/bin/.=
./lib/gcc/i686-pc-cygwin/4.3.4 -L/bin/../lib/gcc -L/usr/lib/gcc/i686-pc-cyg=
win/4.3.4 -L/bin/../lib/gcc/i686-pc-cygwin/4.3.4/../../.. -lm -lgfortranbeg=
in -lgfortran -lcygwin -luser32 -lkernel32 -ladvapi32 -lshell32  -lwsock32 =
-lm  -lwsock32 -lwsock32 -lm  -lwsock32

but the disappointing outcome is
-------------------------------------------------------
*** Warning: This system can not link to static lib archive /bin/../lib/gcc=
/i686-pc-cygwin/4.3.4/libgfortranbegin.la.
*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have.
libtool: link: rm -fr  .libs/liboctave.la.lnkscript

*** Warning: linker path does not have real file for library -lcholmod.
*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because I did check the linker path looking for a file starting
*** with libcholmod and none of the candidates passed a file format test
*** using a file magic. Last file checked: /usr/lib/libcholmod.a

[repeated for all the static libs]
-------------------------------------------------------

Does libtool on cygwin require special setting to overcome such=20
problem ? On linux platform the build seems to be fine.

Moreover for Fortran libgfortranbegin.la=20
is currently a static lib so I not easily overcome
the issue changing it to a dll.

Thanks in advance for any hint on where to look for

Marco





--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019