John Marshall just put out the notice on the emulator forum about a major update to the Palm OS Emulator source code to fix issues with building it with recent compilers and libraries. It doesn't update POSE to handle Palm OS 5 or ARM code, it's just a fix for "bitrot", as John puts it. Here's the text of his announcement:
To: "Palm OS Emulator Forum"
Subject: Patches for building with recent GCC and FLTK on LinuxThere have been several threads over the last few months noting that the current Emulator source code does not compile on modern Linux (or other Unix variants). That's because the last Emulator release was three years ago :-(, we're all using tools (GCC, FLTK) that are much more recent than that, and the Emulator code has bitrotted somewhat.
At http://sourceforge.net/projects/pose/ you'll find a patch that fixes all this bitrot. With this patch, the Emulator should be compilable with any GCC (2.95.x or later) and any 1.0.x or 1.1.x FLTK. I've tested it successfully with GCC 3.4.2 and 4.0.0 and with FLTK 1.0.7, 1.0.11, 1.1.0, the current 1.1.6 release, and current 1.1.x CVS. I haven't tested it with earlier versions of GCC, but I would not expect the patch's changes to introduce any new problems with older GCCs.
When compiled with GCC 3.4.x or 4.0.x, this results in a working poser. In particular, the miscompilation with GCC 3.3.x described in http://news.palmos.com/read/messages?id=153083 has gone away. This may mean that this in fact was a bug in 3.3.x's optimisation and I was wrong to point fingers at aliasing violations in EmPoint.cpp :-), but it warrants further study. If you are using GCC 3.3.x, you will likely want to arrange for EmPoint.cpp to be compiled with -fno-strict-aliasing in order to get a working poser. Or use a more recent GCC. See that thread for details.
The patch addresses the following main issues:
- Renaming of filename_ext() to fl_filename_ext() etc, in line with the renaming in FLTK 1.1.x (trivial);
- Removal of spurious braces in struct initialisations, about which the compiler is more strict than it used to be (trivial);
- Various C++ obscurities about which the compiler is more strict than it used to be (decidedly non-trivial :-));
For obscure reasons involving the FLTK changes to configure.in and subverting automake, I've included a couple of build-related patches that I've had lying around for a few years. The only interesting effect of this is that building in a separate directory (even more separate than BuildUnix) now works.
The patch is recent-gcc-fltk.diff in the patches area at http://sourceforge.net/projects/pose/.
John
