octave and heimdal conflict around fnmatch.h (was Re: issues compiling octave-2.1.69 on FreeBSD 5.4)

Joan Picanyol i Puig lists-octave at biaix.org
Sat Apr 23 07:11:31 PDT 2005

[added heimdal's FreeBSD port mantainer to catch his attention]

* John W. Eaton <jwe at bevo.che.wisc.edu> [20050422 16:24]:
> On 22-Apr-2005, Joan Picanyol i Puig <lists-octave at 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?


More information about the freebsd-ports mailing list