octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MinGW build error: 'liboctave_warning_handler' undeclared


From: Philip Nienhuis
Subject: Re: MinGW build error: 'liboctave_warning_handler' undeclared
Date: Sat, 25 Aug 2012 20:03:43 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.11) Gecko/20100701 SeaMonkey/2.0.6

John W. Eaton wrote:
On 25-Aug-2012, Philip Nienhuis wrote:

|
| Philip Nienhuis wrote
|>
|>
|>  Daniel Sebald wrote
|>>
|>>  On 08/24/2012 04:18 PM, Philip Nienhuis wrote:
|>>>  John W. Eaton wrote:
|>>
|>>>>  I can try to take a look at it if you add -save-temps to the command
|>>>>  that compiles lex.cc and send me the resulting lex.ii file.
|>>>
|>>>  I couldn't find lex.cc in the current sources. Only lex.h and lex.ll are
|>>>  present. I checked this on a recently checked out fresh hg clone.
|>>>
|>>>  Extremely intriguing as lex.cc is explicitly mentioned in the error
|>>>  mesaage itself ("In file included from parse-tree/lex.cc:").
|>>
|>>  Philip,
|>>
|>>  lex.cc is generated from lex.ll as part of the build process.  Search
|>>  for lex.cc the subdirectories associated with your object code.  I
|>>  assume that is where temporary files will be as well.
|>>
|>
|>  Thanks, that explains a thing or two.
|>
|>  Before trying John's suggestion I'll first try a few other options that
|>  worked in MinGW for earlier Octave versions.
|>
|
| Right, build continues but crashes later on with Qt4 errors. I'll start a
| new thread for that.
|
| My changes to get the MinGW build until this new error (BTW using Tatsuro's
| dependencies and build stuff) are simple:
|
| 1. in<SRCDIR>:
| libinterp/interpfcn/file-io.cc
| libinterp/interpfcn/oct-hist.cc
| libinterp/interpfcn/sysdep.cc
| liboctave/oct-env.cc
| =>    repeat the
| #include<unistd.h>
|   line so that it appears twice (seems and old MinGW/gnulib issue)

I thought that problem was fixed in gnulib at some point.  If the
problem has crept in again, then we need to get it fixed in gnulib
again.

AFAIK it has never been fixed.
I've always had to double this #include to get Octave built under MinGW, up til 3.6.2, and now, 3.7.0+

| 2. in<BUILDDIR>/libinterp/parse-tree/lex.cc (generated),
| a. add:
|   #include<io.h>
| b. comment out L.1300: #define isatty GNULIB_NAMESPACE::isatty"

We can't patch generated files.  The fix needs to be made in a source
file.

Sure, but my aim was to get some MinGW build to try JIT and GUI.
Polishing the sources so it compiles cleanly on all platforms was only second in this case, I'm sorry.

But anyway, I don't think including io.h is the right thing to do.
The unistd.h header is supposed to provide a declaration for isatty.
If it does not, then we need to fix that problem in gnulib.

I'd agree, but patching lex.cc this way used to work OK. AFAIK all MinGW builds since 3.3.90 have this patch.

Anyway, I can try to see if I can amend lexx.ll or so myself.
But only later, as my system on which I do MinGW builds is currently booted under Linux now.

Thanks,

Philip


reply via email to

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