Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Apr 2005 16:10:22 +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:   octave and heimdal conflict around fnmatch.h (was Re: issues compiling octave-2.1.69 on FreeBSD 5.4)
Message-ID:  <20050423141022.GA28184@grummit.biaix.org>
In-Reply-To: <17001.2258.64534.72369@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> <20050422130841.GB40624@grummit.biaix.org> <17001.2258.64534.72369@devzero.bogus.domain>

next in thread | previous in thread | raw e-mail | index | archive | help
[added heimdal's FreeBSD port mantainer to catch his attention]

* John W. Eaton <jwe@bevo.che.wisc.edu> [20050422 16:24]:
> On 22-Apr-2005, Joan Picanyol i Puig <lists-octave@biaix.org> wrote:
> 
> | > Also, can you determine precisely which fnmatch.h file is being
> | > included?
> | 
> | I don't know how to.
> 
> If you are using GCC and add -save-temps to CXXFLAGS, then you will
> get .ii files for each .cc file that is compiled.  Those files
> contain the output from the preprocessor, which should include the
> full file names of all the files included.

Octave was using /usr/local/include/fnmatch.h, installed by heimdal (an
alternative Kerberos implementation required by GNOME). The version of
fnmatch.h provided by Heimdal does _NOT_ have it's declarations wrapped
for C++ usage as the system's one does. 

> | My liboctave/glob-match.h does not #include <fnmatch.h> (this is after
> | applying your patch to configure.in and running autogen.sh).
> 
> Oops, I meant liboctave/glob-match.cc.  It also includes glob.h, so
> maybe the lines will need to be changed from
> 
>    #include <fnmatch.h>
>    #include <glob.h>
> 
> to
> 
>    extern "C" {
>    #include <fnmatch.h>
>    #include <glob.h>
>    }

Making this change allowed Octave to link cleanly. I'm not sure what the
proper fix is, I see several options:

1.- fix heimdal to either use the system's fnmatch.h or provide an extern
    "C" wrapper using the __BEGIN_DECLS macro
2.- make octave use the system's fnmatch.h

How should I handle this? What should be fixed in each package? What
should be fixed in the ports system?

tks
-- 
pica



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