octave-maintainers
[Top][All Lists]
Advanced

[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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]