[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gnulib and automake
From: |
Benjamin Lindner |
Subject: |
Re: gnulib and automake |
Date: |
Sat, 31 Oct 2009 12:08:06 +0100 |
User-agent: |
Thunderbird 2.0.0.22 (Windows/20090605) |
John W. Eaton wrote:
On 30-Oct-2009, Benjamin Lindner wrote:
| > | looks ok, doesn't it?
| >
| > Yes. Using this configuration, are shared libraries built?
| >
|
| No
|
| I begin to suspect this will not be going to work OOTB. It smells like
| the many bad experiences I have had with libtool when building octave's
| dependency libraries.
What were the problems? How did you solve them (did you)?
Libtool does not honor the -shared-libgcc flag, which can be tricked by
adding this flag to the name of CC, CXX and F77, that's not really a
problem, but it's symptomatic to the way libtool places hurdles before
the maintainer.
Libtool only scarcely builds shared libraries. And if it builds shared
libraries, it sometimes screws up completely.
In all those cases I patch the corresponding makekefile.in and add the
wanted dll as an explicit makefile target and add a a link command
similar to
foo.dll : $(foo_DLL_objects)
$(CXX) -shared -o $@ \
$(LDFLAGS) \
-Wl,--out-implib=libfoo.dll.a \
$^ $(LIBS) $(OTHERDEPLIBS)
or (if there is a static lib available) something along the lines of
foo.dll : libfoo.a
$(CXX) -shared -o $@ \
$(LDFLAGS) \
-Wl,--out-implib=libfoo.dll.a \
-Wl,--whole-archive $< \
-Wl,--no-whole-archive \
$(LIBS) $(OTHERDEPLIBS)
for example
https://octave.svn.sourceforge.net/svnroot/octave/trunk/octave-forge/admin/Windows/mingw32/glpk/glpk-4.39-4.patch
This problem of not creating shared libs in windows is also found on the
web, and the mantra-like solution is to specify "-no-undefined" as
libtool link options.
So I did.
---
.build_mingw32_octave-tip-automake-ref-4_gcc-4.4.0-dw2/libcruft/Makefile
2009-10-31 11:07:52 +0100
+++ .build_mingw32_octave-tip-automake-4_gcc-4.4.0-dw2/libcruft/Makefile
2009-10-31 11:43:35 +0100
@@ -807,7 +807,7 @@
libcruft_la_OBJECTS = $(am_libcruft_la_OBJECTS)
libcruft_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
- $(CXXFLAGS) $(libcruft_la_LDFLAGS) $(LDFLAGS) -o $@
+ $(CXXFLAGS) $(libcruft_la_LDFLAGS) -no-undefined $(LDFLAGS) -o $@
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
It did not work.
Then I tried to get some more information out of libtool
by replacing the --silent flag by --verbose as in
---
.build_mingw32_octave-tip-automake-ref-4_gcc-4.4.0-dw2/libcruft/Makefile
2009-10-31 11:07:52 +0100
+++ .build_mingw32_octave-tip-automake-4_gcc-4.4.0-dw2/libcruft/Makefile
2009-10-31 11:43:35 +0100
@@ -1256,17 +1256,17 @@
# What is the path separation character
sepchar = ;
sharedstatedir = ${prefix}/com
-srcdir = /octmgw32/octave/octave-tip-automake-ref/libcruft
+srcdir = /octmgw32/octave/octave-tip-automake/libcruft
sysconfdir = ${prefix}/etc
target_alias =
to_host_path_cmd = func_msys_to_mingw_path_convert
top_build_prefix = ../
top_builddir = ..
-top_srcdir = /octmgw32/octave/octave-tip-automake-ref
+top_srcdir = /octmgw32/octave/octave-tip-automake
TOPDIR = ..
version = 3.3.50+
api_version = api-v38+
-AM_LIBTOOLFLAGS = --silent
+AM_LIBTOOLFLAGS = --verbose
AM_LFLAGS = -I
AM_YFLAGS = -dv
LIBEXT = a
It did not work.
But I read:
libtool: link: warning: undefined symbols not allowed in i686-pc-mingw32
shared libraries
libtool: link: rm -fr .libs/libcruft.dll.a
*** Warning: linker path does not have real file for library -liberty.
*** 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 libiberty and none of the candidates passed a file format test
*** using a file magic. Last file checked: /mingw/lib/libiberty.a
*** The inter-library dependencies that have been dropped here will be
*** automatically added whenever a program is linked with this library
*** or is declared to -dlopen it.
Sigh, more libtool nonsense.
Again symptomatic. If libtool would just do what it is told to do and
not try to be more witted than the user!
Of course /mingw/lib/libiberty.a is a static library, so what?
ld.exe does not complain, so I don't see why libtool does.
If I then additionally patch libtool as
--- .build_mingw32_octave-tip-automake-ref-4_gcc-4.4.0-dw2/libtool
2009-10-31 11:08:08 +0100
+++
.build_mingw32_octave-tip-automake-4_gcc-4.4.0-dw2/libtool-mod1-works
2009-10-31 11:30:38 +0100
@@ -5943,7 +5943,7 @@
;;
-no-undefined)
- allow_undefined=no
+ allow_undefined=yes
continue
;;
@@ -7744,7 +7744,7 @@
if test "$allow_undefined" = yes; then
if test "$allow_undefined_flag" = unsupported; then
func_warning "undefined symbols not allowed in $host shared
libraries"
- build_libtool_libs=no
+ build_libtool_libs=yes
build_old_libs=yes
fi
else
then I get libtool to build a shared library, which then fails with
make[2]: Entering directory
`/octmgw32/octave/.build_mingw32_octave-tip-automake-4_gcc-4.4.0-dw2/libcruft'
/bin/sh ../libtool --tag=CXX --verbose --mode=link
mingw32-g++-4.4.0-dw2 -shared-libgcc -march=i686 -mtune=generic -O3
-Wall -DHAVE_CONFIG_H -mieee-fp -Wall -W -Wshadow -Wold-style-cast
-Wformat -march=i686 -mtune=generic -O3 -Wall -march=i686
-mtune=generic -O3 -Wall -release 3.3.50+ -no-undefined -shared-libgcc
-Wl,--allow-multiple-definition -o libcruft.la -rpath
/usr/local/octmgw32_gcc-4.4.0-dw2/octave/tip-automake-4/lib/octave-3.3.50+
amos/cacai.lo amos/cacon.lo amos/cbesh.lo amos/cbesi.lo amos/cbesj.lo
amos/cbesk.lo amos/cbesy.lo amos/cbinu.lo amos/cbuni.lo amos/cbunk.lo
amos/cunk1.lo amos/cunk2.lo amos/crati.lo amos/cshch.lo amos/cuni1.lo
amos/cuoik.lo amos/cairy.lo amos/cbiry.lo amos/ckscl.lo amos/cs1s2.lo
amos/cuchk.lo amos/cuni2.lo amos/cwrsk.lo amos/casyi.lo amos/cbknu.lo
amos/cmlri.lo amos/cseri.lo amos/cunhj.lo amos/cunik.lo amos/dgamln.lo
amos/gamln.lo amos/xzabs.lo amos/xzexp.lo amos/xzlog.lo amos/xzsqrt.lo
amos/zacai.lo amos/zacon.lo amos/zairy.lo amos/zasyi.lo amos/zbesh.lo
amos/zbesi.lo amos/zbesj.lo amos/zbesk.lo amos/zbesy.lo amos/zbinu.lo
amos/zbiry.lo amos/zbknu.lo amos/zbuni.lo amos/zbunk.lo amos/zdiv.lo
amos/zkscl.lo amos/zmlri.lo amos/zmlt.lo amos/zrati.lo amos/zs1s2.lo
amos/zseri.lo amos/zshch.lo amos/zuchk.lo amos/zunhj.lo amos/zuni1.lo
amos/zuni2.lo amos/zunik.lo amos/zunk1.lo amos/zunk2.lo amos/zuoik.lo
amos/zwrsk.lo blas-xtra/xddot.lo blas-xtra/xdnrm2.lo
blas-xtra/xdznrm2.lo blas-xtra/xzdotc.lo blas-xtra/xzdotu.lo
blas-xtra/xsdot.lo blas-xtra/xsnrm2.lo blas-xtra/xscnrm2.lo
blas-xtra/xcdotc.lo blas-xtra/xcdotu.lo blas-xtra/xerbla.lo
daspk/datv.lo daspk/dcnst0.lo daspk/dcnstr.lo daspk/ddasic.lo
daspk/ddasid.lo daspk/ddasik.lo daspk/ddaspk.lo daspk/ddstp.lo
daspk/ddwnrm.lo daspk/dfnrmd.lo daspk/dfnrmk.lo daspk/dhels.lo
daspk/dheqr.lo daspk/dinvwt.lo daspk/dlinsd.lo daspk/dlinsk.lo
daspk/dmatd.lo daspk/dnedd.lo daspk/dnedk.lo daspk/dnsd.lo
daspk/dnsid.lo daspk/dnsik.lo daspk/dnsk.lo daspk/dorth.lo
daspk/dslvd.lo daspk/dslvk.lo daspk/dspigm.lo daspk/dyypnw.lo
dasrt/ddasrt.lo dasrt/drchek.lo dasrt/droots.lo dassl/ddaini.lo
dassl/ddajac.lo dassl/ddanrm.lo dassl/ddaslv.lo dassl/ddassl.lo
dassl/ddastp.lo dassl/ddatrp.lo dassl/ddawts.lo lapack-xtra/xclange.lo
lapack-xtra/xdlamch.lo lapack-xtra/xdlange.lo lapack-xtra/xilaenv.lo
lapack-xtra/xslamch.lo lapack-xtra/xslange.lo lapack-xtra/xzlange.lo
misc/cquit.lo misc/d1mach.lo misc/f77-extern.lo misc/f77-fcn.lo
misc/i1mach.lo misc/lo-error.lo misc/quit.lo misc/r1mach.lo
odepack/cfode.lo odepack/dlsode.lo odepack/ewset.lo odepack/intdy.lo
odepack/prepj.lo odepack/solsy.lo odepack/stode.lo odepack/vnorm.lo
odepack/scfode.lo odepack/sewset.lo odepack/sintdy.lo odepack/slsode.lo
odepack/sprepj.lo odepack/ssolsy.lo odepack/sstode.lo odepack/svnorm.lo
ordered-qz/dsubsp.lo ordered-qz/exchqz.lo ordered-qz/ssubsp.lo
ordered-qz/sexchqz.lo quadpack/dqagi.lo quadpack/dqagie.lo
quadpack/dqagp.lo quadpack/dqagpe.lo quadpack/dqelg.lo
quadpack/dqk15i.lo quadpack/dqk21.lo quadpack/dqpsrt.lo
quadpack/qagie.lo quadpack/qagi.lo quadpack/qagpe.lo quadpack/qagp.lo
quadpack/qelg.lo quadpack/qk15i.lo quadpack/qk21.lo quadpack/qpsrt.lo
quadpack/xerror.lo ranlib/advnst.lo ranlib/genbet.lo ranlib/genchi.lo
ranlib/genexp.lo ranlib/genf.lo ranlib/gengam.lo ranlib/genmn.lo
ranlib/genmul.lo ranlib/gennch.lo ranlib/gennf.lo ranlib/gennor.lo
ranlib/genprm.lo ranlib/genunf.lo ranlib/getcgn.lo ranlib/getsd.lo
ranlib/ignbin.lo ranlib/ignlgi.lo ranlib/ignnbn.lo ranlib/ignpoi.lo
ranlib/ignuin.lo ranlib/initgn.lo ranlib/inrgcm.lo ranlib/lennob.lo
ranlib/mltmod.lo ranlib/phrtsd.lo ranlib/qrgnin.lo ranlib/ranf.lo
ranlib/setall.lo ranlib/setant.lo ranlib/setgmn.lo ranlib/setsd.lo
ranlib/sexpo.lo ranlib/sgamma.lo ranlib/snorm.lo ranlib/wrap.lo
slatec-err/fdump.lo slatec-err/ixsav.lo slatec-err/j4save.lo
slatec-err/xerclr.lo slatec-err/xercnt.lo slatec-err/xerhlt.lo
slatec-err/xermsg.lo slatec-err/xerprn.lo slatec-err/xerrwd.lo
slatec-err/xersve.lo slatec-err/xgetf.lo slatec-err/xgetua.lo
slatec-err/xsetf.lo slatec-err/xsetua.lo slatec-fn/albeta.lo
slatec-fn/alngam.lo slatec-fn/alnrel.lo slatec-fn/algams.lo
slatec-fn/acosh.lo slatec-fn/asinh.lo slatec-fn/atanh.lo
slatec-fn/betai.lo slatec-fn/csevl.lo slatec-fn/d9gmit.lo
slatec-fn/d9lgic.lo slatec-fn/d9lgit.lo slatec-fn/d9lgmc.lo
slatec-fn/dacosh.lo slatec-fn/dasinh.lo slatec-fn/datanh.lo
slatec-fn/dbetai.lo slatec-fn/dcsevl.lo slatec-fn/derf.lo
slatec-fn/derfc.lo slatec-fn/dgami.lo slatec-fn/dgamit.lo
slatec-fn/dgamlm.lo slatec-fn/dgamma.lo slatec-fn/dgamr.lo
slatec-fn/dlbeta.lo slatec-fn/dlgams.lo slatec-fn/dlngam.lo
slatec-fn/dlnrel.lo slatec-fn/dpchim.lo slatec-fn/dpchst.lo
slatec-fn/erf.lo slatec-fn/erfc.lo slatec-fn/gami.lo slatec-fn/gamit.lo
slatec-fn/gamlim.lo slatec-fn/gamma.lo slatec-fn/gamr.lo
slatec-fn/initds.lo slatec-fn/inits.lo slatec-fn/pchim.lo
slatec-fn/pchst.lo slatec-fn/r9lgmc.lo slatec-fn/r9lgit.lo
slatec-fn/r9gmit.lo slatec-fn/r9lgic.lo slatec-fn/xdacosh.lo
slatec-fn/xdasinh.lo slatec-fn/xdatanh.lo slatec-fn/xdbetai.lo
slatec-fn/xderf.lo slatec-fn/xderfc.lo slatec-fn/xdgami.lo
slatec-fn/xdgamit.lo slatec-fn/xdgamma.lo slatec-fn/xgmainc.lo
slatec-fn/xacosh.lo slatec-fn/xasinh.lo slatec-fn/xatanh.lo
slatec-fn/xerf.lo slatec-fn/xerfc.lo slatec-fn/xsgmainc.lo
slatec-fn/xgamma.lo slatec-fn/xbetai.lo villad/dfopr.lo villad/dif.lo
villad/intrp.lo villad/jcobi.lo villad/radau.lo villad/vilerr.lo
-liberty -lm -lgdi32 -lws2_32 -luser32 -lkernel32
libtool: link: warning: undefined symbols not allowed in i686-pc-mingw32
shared libraries
libtool: link: rm -fr .libs/libcruft.dll.a
*** Warning: linker path does not have real file for library -liberty.
*** 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 libiberty and none of the candidates passed a file format test
*** using a file magic. Last file checked: /mingw/lib/libiberty.a
*** The inter-library dependencies that have been dropped here will be
*** automatically added whenever a program is linked with this library
*** or is declared to -dlopen it.
libtool: link: mingw32-g++-4.4.0-dw2 -shared-libgcc -shared -nostdlib
d:/build/octave32/tip_gcc-4.4.0/gcc-mingw-4.4.0/bin/../lib/gcc/mingw32/4.4.0/../../../dllcrt2.o
d:/build/octave32/tip_gcc-4.4.0/gcc-mingw-4.4.0/bin/../lib/gcc/mingw32/4.4.0/crtbegin.o
amos/.libs/cacai.o amos/.libs/cacon.o amos/.libs/cbesh.o
amos/.libs/cbesi.o amos/.libs/cbesj.o amos/.libs/cbesk.o
amos/.libs/cbesy.o amos/.libs/cbinu.o amos/.libs/cbuni.o
amos/.libs/cbunk.o amos/.libs/cunk1.o amos/.libs/cunk2.o
amos/.libs/crati.o amos/.libs/cshch.o amos/.libs/cuni1.o
amos/.libs/cuoik.o amos/.libs/cairy.o amos/.libs/cbiry.o
amos/.libs/ckscl.o amos/.libs/cs1s2.o amos/.libs/cuchk.o
amos/.libs/cuni2.o amos/.libs/cwrsk.o amos/.libs/casyi.o
amos/.libs/cbknu.o amos/.libs/cmlri.o amos/.libs/cseri.o
amos/.libs/cunhj.o amos/.libs/cunik.o amos/.libs/dgamln.o
amos/.libs/gamln.o amos/.libs/xzabs.o amos/.libs/xzexp.o
amos/.libs/xzlog.o amos/.libs/xzsqrt.o amos/.libs/zacai.o
amos/.libs/zacon.o amos/.libs/zairy.o amos/.libs/zasyi.o
amos/.libs/zbesh.o amos/.libs/zbesi.o amos/.libs/zbesj.o
amos/.libs/zbesk.o amos/.libs/zbesy.o amos/.libs/zbinu.o
amos/.libs/zbiry.o amos/.libs/zbknu.o amos/.libs/zbuni.o
amos/.libs/zbunk.o amos/.libs/zdiv.o amos/.libs/zkscl.o
amos/.libs/zmlri.o amos/.libs/zmlt.o amos/.libs/zrati.o
amos/.libs/zs1s2.o amos/.libs/zseri.o amos/.libs/zshch.o
amos/.libs/zuchk.o amos/.libs/zunhj.o amos/.libs/zuni1.o
amos/.libs/zuni2.o amos/.libs/zunik.o amos/.libs/zunk1.o
amos/.libs/zunk2.o amos/.libs/zuoik.o amos/.libs/zwrsk.o
blas-xtra/.libs/xddot.o blas-xtra/.libs/xdnrm2.o
blas-xtra/.libs/xdznrm2.o blas-xtra/.libs/xzdotc.o
blas-xtra/.libs/xzdotu.o blas-xtra/.libs/xsdot.o
blas-xtra/.libs/xsnrm2.o blas-xtra/.libs/xscnrm2.o
blas-xtra/.libs/xcdotc.o blas-xtra/.libs/xcdotu.o
blas-xtra/.libs/xerbla.o daspk/.libs/datv.o daspk/.libs/dcnst0.o
daspk/.libs/dcnstr.o daspk/.libs/ddasic.o daspk/.libs/ddasid.o
daspk/.libs/ddasik.o daspk/.libs/ddaspk.o daspk/.libs/ddstp.o
daspk/.libs/ddwnrm.o daspk/.libs/dfnrmd.o daspk/.libs/dfnrmk.o
daspk/.libs/dhels.o daspk/.libs/dheqr.o daspk/.libs/dinvwt.o
daspk/.libs/dlinsd.o daspk/.libs/dlinsk.o daspk/.libs/dmatd.o
daspk/.libs/dnedd.o daspk/.libs/dnedk.o daspk/.libs/dnsd.o
daspk/.libs/dnsid.o daspk/.libs/dnsik.o daspk/.libs/dnsk.o
daspk/.libs/dorth.o daspk/.libs/dslvd.o daspk/.libs/dslvk.o
daspk/.libs/dspigm.o daspk/.libs/dyypnw.o dasrt/.libs/ddasrt.o
dasrt/.libs/drchek.o dasrt/.libs/droots.o dassl/.libs/ddaini.o
dassl/.libs/ddajac.o dassl/.libs/ddanrm.o dassl/.libs/ddaslv.o
dassl/.libs/ddassl.o dassl/.libs/ddastp.o dassl/.libs/ddatrp.o
dassl/.libs/ddawts.o lapack-xtra/.libs/xclange.o
lapack-xtra/.libs/xdlamch.o lapack-xtra/.libs/xdlange.o
lapack-xtra/.libs/xilaenv.o lapack-xtra/.libs/xslamch.o
lapack-xtra/.libs/xslange.o lapack-xtra/.libs/xzlange.o
misc/.libs/cquit.o misc/.libs/d1mach.o misc/.libs/f77-extern.o
misc/.libs/f77-fcn.o misc/.libs/i1mach.o misc/.libs/lo-error.o
misc/.libs/quit.o misc/.libs/r1mach.o odepack/.libs/cfode.o
odepack/.libs/dlsode.o odepack/.libs/ewset.o odepack/.libs/intdy.o
odepack/.libs/prepj.o odepack/.libs/solsy.o odepack/.libs/stode.o
odepack/.libs/vnorm.o odepack/.libs/scfode.o odepack/.libs/sewset.o
odepack/.libs/sintdy.o odepack/.libs/slsode.o odepack/.libs/sprepj.o
odepack/.libs/ssolsy.o odepack/.libs/sstode.o odepack/.libs/svnorm.o
ordered-qz/.libs/dsubsp.o ordered-qz/.libs/exchqz.o
ordered-qz/.libs/ssubsp.o ordered-qz/.libs/sexchqz.o
quadpack/.libs/dqagi.o quadpack/.libs/dqagie.o quadpack/.libs/dqagp.o
quadpack/.libs/dqagpe.o quadpack/.libs/dqelg.o quadpack/.libs/dqk15i.o
quadpack/.libs/dqk21.o quadpack/.libs/dqpsrt.o quadpack/.libs/qagie.o
quadpack/.libs/qagi.o quadpack/.libs/qagpe.o quadpack/.libs/qagp.o
quadpack/.libs/qelg.o quadpack/.libs/qk15i.o quadpack/.libs/qk21.o
quadpack/.libs/qpsrt.o quadpack/.libs/xerror.o ranlib/.libs/advnst.o
ranlib/.libs/genbet.o ranlib/.libs/genchi.o ranlib/.libs/genexp.o
ranlib/.libs/genf.o ranlib/.libs/gengam.o ranlib/.libs/genmn.o
ranlib/.libs/genmul.o ranlib/.libs/gennch.o ranlib/.libs/gennf.o
ranlib/.libs/gennor.o ranlib/.libs/genprm.o ranlib/.libs/genunf.o
ranlib/.libs/getcgn.o ranlib/.libs/getsd.o ranlib/.libs/ignbin.o
ranlib/.libs/ignlgi.o ranlib/.libs/ignnbn.o ranlib/.libs/ignpoi.o
ranlib/.libs/ignuin.o ranlib/.libs/initgn.o ranlib/.libs/inrgcm.o
ranlib/.libs/lennob.o ranlib/.libs/mltmod.o ranlib/.libs/phrtsd.o
ranlib/.libs/qrgnin.o ranlib/.libs/ranf.o ranlib/.libs/setall.o
ranlib/.libs/setant.o ranlib/.libs/setgmn.o ranlib/.libs/setsd.o
ranlib/.libs/sexpo.o ranlib/.libs/sgamma.o ranlib/.libs/snorm.o
ranlib/.libs/wrap.o slatec-err/.libs/fdump.o slatec-err/.libs/ixsav.o
slatec-err/.libs/j4save.o slatec-err/.libs/xerclr.o
slatec-err/.libs/xercnt.o slatec-err/.libs/xerhlt.o
slatec-err/.libs/xermsg.o slatec-err/.libs/xerprn.o
slatec-err/.libs/xerrwd.o slatec-err/.libs/xersve.o
slatec-err/.libs/xgetf.o slatec-err/.libs/xgetua.o
slatec-err/.libs/xsetf.o slatec-err/.libs/xsetua.o
slatec-fn/.libs/albeta.o slatec-fn/.libs/alngam.o
slatec-fn/.libs/alnrel.o slatec-fn/.libs/algams.o
slatec-fn/.libs/acosh.o slatec-fn/.libs/asinh.o slatec-fn/.libs/atanh.o
slatec-fn/.libs/betai.o slatec-fn/.libs/csevl.o slatec-fn/.libs/d9gmit.o
slatec-fn/.libs/d9lgic.o slatec-fn/.libs/d9lgit.o
slatec-fn/.libs/d9lgmc.o slatec-fn/.libs/dacosh.o
slatec-fn/.libs/dasinh.o slatec-fn/.libs/datanh.o
slatec-fn/.libs/dbetai.o slatec-fn/.libs/dcsevl.o slatec-fn/.libs/derf.o
slatec-fn/.libs/derfc.o slatec-fn/.libs/dgami.o slatec-fn/.libs/dgamit.o
slatec-fn/.libs/dgamlm.o slatec-fn/.libs/dgamma.o
slatec-fn/.libs/dgamr.o slatec-fn/.libs/dlbeta.o
slatec-fn/.libs/dlgams.o slatec-fn/.libs/dlngam.o
slatec-fn/.libs/dlnrel.o slatec-fn/.libs/dpchim.o
slatec-fn/.libs/dpchst.o slatec-fn/.libs/erf.o slatec-fn/.libs/erfc.o
slatec-fn/.libs/gami.o slatec-fn/.libs/gamit.o slatec-fn/.libs/gamlim.o
slatec-fn/.libs/gamma.o slatec-fn/.libs/gamr.o slatec-fn/.libs/initds.o
slatec-fn/.libs/inits.o slatec-fn/.libs/pchim.o slatec-fn/.libs/pchst.o
slatec-fn/.libs/r9lgmc.o slatec-fn/.libs/r9lgit.o
slatec-fn/.libs/r9gmit.o slatec-fn/.libs/r9lgic.o
slatec-fn/.libs/xdacosh.o slatec-fn/.libs/xdasinh.o
slatec-fn/.libs/xdatanh.o slatec-fn/.libs/xdbetai.o
slatec-fn/.libs/xderf.o slatec-fn/.libs/xderfc.o
slatec-fn/.libs/xdgami.o slatec-fn/.libs/xdgamit.o
slatec-fn/.libs/xdgamma.o slatec-fn/.libs/xgmainc.o
slatec-fn/.libs/xacosh.o slatec-fn/.libs/xasinh.o
slatec-fn/.libs/xatanh.o slatec-fn/.libs/xerf.o slatec-fn/.libs/xerfc.o
slatec-fn/.libs/xsgmainc.o slatec-fn/.libs/xgamma.o
slatec-fn/.libs/xbetai.o villad/.libs/dfopr.o villad/.libs/dif.o
villad/.libs/intrp.o villad/.libs/jcobi.o villad/.libs/radau.o
villad/.libs/vilerr.o -lgdi32 -lws2_32 -luser32 -lkernel32
-Ld:/build/octave32/tip_gcc-4.4.0/gcc-mingw-4.4.0/bin/../lib/gcc/mingw32/4.4.0
-Ld:/build/octave32/tip_gcc-4.4.0/gcc-mingw-4.4.0/bin/../lib/gcc
-LD:/build/octave32/tip_gcc-4.4.0/msys-1.0.11/local/octmgw32_gcc-4.4.0-dw2/lib
-Ld:/build/octave32/tip_gcc-4.4.0/gcc-mingw-4.4.0/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/lib
-Ld:/build/octave32/tip_gcc-4.4.0/gcc-mingw-4.4.0/bin/../lib/gcc/mingw32/4.4.0/../../..
-lstdc++ -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -luser32
-lkernel32 -ladvapi32 -lshell32 -lmingw32 -lgcc_s -lgcc -lmoldname
-lmingwex -lmsvcrt
d:/build/octave32/tip_gcc-4.4.0/gcc-mingw-4.4.0/bin/../lib/gcc/mingw32/4.4.0/crtend.o
-march=i686 -mtune=generic -mieee-fp -march=i686 -mtune=generic
-march=i686 -mtune=generic -Wl,--allow-multiple-definition -o
.libs/cruft.dll -Wl,--enable-auto-image-base -Xlinker --out-implib
-Xlinker .libs/libcruft.dll.a
Creating library file:
.libs/libcruft.dll.ablas-xtra/.libs/xddot.o:xddot.f:(.text+0x29):
undefined reference to `ddot_'
blas-xtra/.libs/xdnrm2.o:xdnrm2.f:(.text+0x1b): undefined reference to
`dnrm2_'
blas-xtra/.libs/xdznrm2.o:xdznrm2.f:(.text+0x1b): undefined reference to
`dznrm2_'
blas-xtra/.libs/xzdotc.o:xzdotc.f:(.text+0x34): undefined reference to
`zdotc_'
blas-xtra/.libs/xzdotu.o:xzdotu.f:(.text+0x34): undefined reference to
`zdotu_'
blas-xtra/.libs/xsdot.o:xsdot.f:(.text+0x29): undefined reference to `sdot_'
blas-xtra/.libs/xsnrm2.o:xsnrm2.f:(.text+0x1b): undefined reference to
`snrm2_'
blas-xtra/.libs/xscnrm2.o:xscnrm2.f:(.text+0x1b): undefined reference to
`scnrm2_'
blas-xtra/.libs/xcdotc.o:xcdotc.f:(.text+0x2d): undefined reference to
`cdotc_'
blas-xtra/.libs/xcdotu.o:xcdotu.f:(.text+0x2d): undefined reference to
`cdotu_'
blas-xtra/.libs/xerbla.o:xerbla.f:(.text+0x50): undefined reference to
`_gfortran_st_write'
blas-xtra/.libs/xerbla.o:xerbla.f:(.text+0x67): undefined reference to
`_gfortran_transfer_character'
blas-xtra/.libs/xerbla.o:xerbla.f:(.text+0x7e): undefined reference to
`_gfortran_transfer_integer'
blas-xtra/.libs/xerbla.o:xerbla.f:(.text+0x86): undefined reference to
`_gfortran_st_write_done'
daspk/.libs/ddasic.o:ddasic.f:(.text+0x87): undefined reference to `dcopy_'
( the undefined reference list the continues rather long )
I get the same result if I do *not* specify "-no-undefined" in libtool's
link command in libcruft/makefile, and patch libtool as follows
$ diff -u .build_mingw32_octave-tip-automake-ref-4_gcc-4.4.0-dw2/libtool
.build_mingw32_octave-tip-automake-4_gcc-4.4.0-dw2/libtool-mod2-works
--- .build_mingw32_octave-tip-automake-ref-4_gcc-4.4.0-dw2/libtool
2009-10-31 11:08:08 +0100
+++
.build_mingw32_octave-tip-automake-4_gcc-4.4.0-dw2/libtool-mod2-works
2009-10-31 11:39:24 +0100
@@ -7744,7 +7744,7 @@
if test "$allow_undefined" = yes; then
if test "$allow_undefined_flag" = unsupported; then
func_warning "undefined symbols not allowed in $host shared
libraries"
- build_libtool_libs=no
+ build_libtool_libs=yes
build_old_libs=yes
fi
else
Now this undefined refernece link error I can understand, since
libcruft's dependency libraries are all missing on the link command.
I need to add $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) as in
@@ -4325,7 +4325,7 @@
villad/vilerr.lo: villad/$(am__dirstamp) \
villad/$(DEPDIR)/$(am__dirstamp)
libcruft.la: $(libcruft_la_OBJECTS) $(libcruft_la_DEPENDENCIES)
- $(libcruft_la_LINK) -rpath $(octlibdir) $(libcruft_la_OBJECTS)
$(libcruft_la_LIBADD) $(LIBS)
+ $(libcruft_la_LINK) -rpath $(octlibdir) $(libcruft_la_OBJECTS)
$(libcruft_la_LIBADD) $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
Then I finally get cruft.dll.
There was already a mail session dealing with all the undefined
reference/dependency libraries issues, wasn't there?
In any case, I don't plan to reverse the decision to use libtool and
automake, because I want to be able to use functions from gnulib, and
as far as I can tell, that is just not practical without automake and
libtool.
Yes, I feared you'd say that. I see that I am on a lone post against
libtool.
Well, it's your decision. I'll respect it.
I can try to help you debug the problems, but you will have to send
more information about exactly what is happening. Or, I need to know
how to duplicate the build environment you have, then I can try to
find a Windows system that I can use to debug the configuration
problems.
From what I saw until now, if I patch libtool as above and we get the
dependency libraries for libcruft (possibly also for liboctave and
liboctinterp?) right, then it should work.
I'm curious how the .oct creation will behave.
benjamin
- Re: gnulib and automake, (continued)
Re: gnulib and automake, Benjamin Lindner, 2009/10/30
- Re: gnulib and automake, John W. Eaton, 2009/10/30
- Re: gnulib and automake, Benjamin Lindner, 2009/10/30
- Re: gnulib and automake, John W. Eaton, 2009/10/30
- Re: gnulib and automake, Benjamin Lindner, 2009/10/30
- Re: gnulib and automake, John W. Eaton, 2009/10/30
- Re: gnulib and automake,
Benjamin Lindner <=
- Re: gnulib and automake, Benjamin Lindner, 2009/10/31
- Re: gnulib and automake, John W. Eaton, 2009/10/31
- Re: gnulib and automake, Benjamin Lindner, 2009/10/31
Re: gnulib and automake, John W. Eaton, 2009/10/31
Re: gnulib and automake, Benjamin Lindner, 2009/10/31
Re: gnulib and automake, John W. Eaton, 2009/10/31
Re: gnulib and automake, Benjamin Lindner, 2009/10/31
Re: gnulib and automake, John W. Eaton, 2009/10/31
Re: gnulib and automake, Benjamin Lindner, 2009/10/31
Re: gnulib and automake, John W. Eaton, 2009/10/30