Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Apr 2005 15:08:41 +0200
From:      Joan Picanyol i Puig <lists-octave@biaix.org>
To:        "John W. Eaton" <jwe@bevo.che.wisc.edu>
Cc:        freebsd-ports@freebsd.org
Subject:   Re: issues compiling octave-2.1.69 on FreeBSD 5.4
Message-ID:  <20050422130841.GB40624@grummit.biaix.org>
In-Reply-To: <16999.65302.366221.91861@devzero.bogus.domain>
References:  <20050420175047.GB29990@grummit.biaix.org> <42674D94.7070108@gmail.com> <20050421155406.GB86490@grummit.biaix.org> <16999.53351.603626.223836@devzero.bogus.domain> <20050421191441.GB9754@grummit.biaix.org> <16999.65302.366221.91861@devzero.bogus.domain>

next in thread | previous in thread | raw e-mail | index | archive | help
[added freebsd-ports@ to the discussion; for those interested, the
original thread can be found at
http://www.octave.org/mailing-lists/help-octave/2005/]

* John W. Eaton <jwe@bevo.che.wisc.edu> [20050421 21:29]:
> On 21-Apr-2005, Joan Picanyol i Puig <lists-octave@biaix.org> wrote:
> 
> | * John W. Eaton <jwe@bevo.che.wisc.edu> [20050421 18:10]:
> | > Octave should only need standard and relatively basic functionality.
> | > I think the real problem was an oops in configure.in (see below for a
> | > patch).  I'm not sure how that ended up in the sources that were
> | > distributed.
> | 
> | No luck, I still get the following:
> | 
> | g++ -I/usr/include -I/usr/local/include -I. -I.. -I../liboctave -I../src -I../libcruft/misc  -I../glob -I../glob -DHAVE_CONFIG_H -mieee-fp -Wall -W -Wshadow -g -O2  \
> | -L..  -fPIC -L/usr/lib -L/usr/local/lib -o octave \
> | main.o  balance.o  besselj.o  betainc.o  chol.o  colloc.o  daspk.o  dasrt.o  dassl.o  det.o  eig.o  expm.o  fft.o  fft2.o  fftn.o  fftw_wisdom.o  filter.o  find.o  fsolve.o  gammainc.o  gcd.o  getgrent.o  getpwent.o  getrusage.o  givens.o  hess.o  inv.o  kron.o  lpsolve.o  lsode.o  lu.o  minmax.o  pinv.o  qr.o  quad.o  qz.o  rand.o  schur.o  sort.o  sqrtm.o  svd.o  syl.o  time.o \
> | -L../liboctave -L../libcruft -L../src  \
> | ../src/liboctinterp.a ../liboctave/liboctave.a  ../libcruft/libcruft.a  ../glob/glob.o ../glob/fnmatch.o  \
> |  -lcblas -lf77blas -latlas -lfftw3 -lreadline  -lncurses -lm  -L/usr/lib -L/usr/local/lib -lg2c -lm
> | ../liboctave/liboctave.a(file-ops.o)(.text+0x23b): In function `file_ops::tempnam(std::string const&, std::string const&, std::string&)':
> | /fs/scratch/mount/scratch/build/octave-2.1.69/liboctave/file-ops.cc:419: warning: warning: tempnam() possibly used unsafely; consider using mkstemp()
> | ../liboctave/liboctave.a(glob-match.o)(.text+0x124): In function `glob_match::match(std::string const&)':
> | /usr/include/c++/3.4/bits/basic_string.h:368: undefined reference to `fnmatch(char const*, char const*, int)'
> | gmake[2]: *** [octave] Error 1
> | gmake[2]: Leaving directory `/fs/scratch/mount/scratch/build/octave-2.1.69/src'
> | gmake[1]: *** [src] Error 2
> | gmake[1]: Leaving directory `/fs/scratch/mount/scratch/build/octave-2.1.69'
> | gmake: *** [all] Error 2
> | 582,p3,2$                                      
> | 
> | The symbols is in the glob/ libraries:
> | 
> | 583,p3,1$ nm glob/fnmatch.o | grep fnmatch
> | 00000e68 T fnmatch
> | 00000000 t internal_fnmatch
> | 584,p3,0$ nm glob/glob.o | grep fnmatch
> |          U fnmatch
> | 
> | but the error shows the system include file. FWIW, adding -lc to the
> | command line does not solve the issue either.
> 
> Can you look in config.log and find why the tests fail to find the
> system versions of fnmatch and glob?


Apparently it _does_ find the system's version:

532,p2,0$ grep fnmatch config.log
configure:17009: checking fnmatch.h usability
configure:17054: checking fnmatch.h presence
configure:17125: checking for fnmatch.h
configure:17439: checking for fnmatch
ac_cv_func_fnmatch=yes
ac_cv_header_fnmatch_h=yes

533,p2,0$ grep glob config.log
configure:16857: checking glob.h usability
configure:16902: checking glob.h presence
configure:16973: checking for glob.h
configure:17354: checking for glob in -lglob
configure:17392: gcc -o conftest -g -O2 -I/usr/include -I/usr/local/include -L/usr/lib -L/usr/local/lib conftest.c -lglob  -lm  >&5
/usr/bin/ld: cannot find -lglob
| char glob ();
| glob ();
configure:17551: checking for glob
ac_cv_func_glob=yes
ac_cv_header_glob_h=yes
ac_cv_lib_glob_glob=no
534,p2,0$

I hope this is useful:

configure:17009: checking fnmatch.h usability
configure:17021: gcc -c -g -O2 -I/usr/include -I/usr/local/include conftest.c >&5
configure:17027: $? = 0
configure:17031: test -z
                         || test ! -s conftest.err
configure:17034: $? = 0
configure:17037: test -s conftest.o
configure:17040: $? = 0
configure:17050: result: yes
configure:17054: checking fnmatch.h presence
configure:17064: gcc -E -I/usr/include -I/usr/local/include conftest.c
configure:17070: $? = 0
configure:17090: result: yes
configure:17125: checking for fnmatch.h
configure:17132: result: yes

configure:17439: checking for fnmatch
configure:17504: gcc -o conftest -g -O2 -I/usr/include -I/usr/local/include -L/usr/lib -L/usr/local/lib conftest.c -lm  >&5
configure:17510: $? = 0
configure:17514: test -z
                         || test ! -s conftest.err
configure:17517: $? = 0
configure:17520: test -s conftest
configure:17523: $? = 0
configure:17535: result: yes
configure:17551: checking for glob
configure:17616: gcc -o conftest -g -O2 -I/usr/include -I/usr/local/include -L/usr/lib -L/usr/local/lib conftest.c -lm  >&5
configure:17622: $? = 0
configure:17626: test -z
                         || test ! -s conftest.err
configure:17629: $? = 0
configure:17632: test -s conftest
configure:17635: $? = 0
configure:17647: result: yes

About -lglob:

configure:17354: checking for glob in -lglob
configure:17392: gcc -o conftest -g -O2 -I/usr/include -I/usr/local/include -L/usr/lib -L/usr/local/lib conftest.c -lglob  -lm  >&5
/usr/bin/ld: cannot find -lglob

> 
> What is the output from
> 
>   nm liboctave/glob-match.o | grep fnmatch

530,p2,2$ nm liboctave/glob-match.o | grep fnmatch
         U _Z7fnmatchPKcS0_i
531,p2,0$

> Also, can you determine precisely which fnmatch.h file is being
> included?

I don't know how to. I've found two fnmatch.h files, one in /usr/include
and the other in /usr/local/include, installed by the heimdal port.

> Does it include lines like
> 
>   #ifdef	__cplusplus
>   extern "C" {
>   #endif
> 
>   #ifdef	__cplusplus
>   }
>   #endif
> 
> around the contents of the file?

None of them do.

> If not, does changing the line
> 
>   #include <fnmatch.h>
> 
> in liboctave/glob-match.h to be
> 
>   extern "C" {
>   #include <fnmatch.h>
>   }

My liboctave/glob-match.h does not #include <fnmatch.h> (this is after
applying your patch to configure.in and running autogen.sh).

tks
-- 
pica



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050422130841.GB40624>