Interesting Things about POSER for UNIX Requirements ------------ POSER for UNIX is being developed and (very lightly) tested on x86-Linux, running RedHat Linux 5.2, kernel 2.0.36, glibc 2.0.7-29 (i.e. stock RedHat 5.2, with the updates from their web page), using XFree86 3.3.3.1 running a 16 bit display. At the very minimum, you will need the following to build it: We use pthreads, so you need GNU glibc2 (aka Linux libc6) C library and a 2.x kernel on a Linux system. Other operating systems need to support true threads. IMPORTANT!!! The source makes heavy use of C++ templates, and some exceptions. On Linux, you must have egcs-1.1.1 or better to compile it. egcs-1.1 or any gcc WILL NOT WORK. Download the compiler from -- it's pretty easy to install. For other OS'es, either use egcs, or be sure your compiler supports these C++ features. (Note that egcs needs to be built with the HANDLE_SYSV_PRAGMA option turned on in order to have the support to pack structures correctly). STOP NOW AND RE-READ THE LAST TWO PARAGRAPHS. We use the FLTK X toolkit. I'm not going to get into an X GUI Toolkit religious war, so don't ask why not some other toolkit. You are encouraged to add support for other toolkits, like Qt or GTK+ or even Xt. I have tried to keep all of the FLTK code in the fltk_*.cpp files. If you add support for another toolkit, please follow that pattern. Don't pollute the UNIX-generic code with toolkit specific code. FLTK is available from , is a quick download, and is easy to build on a variety of OS'es. Porting ------- In theory, POSER should be quite portable to other OS'es and OS versions -- we just haven't done it yet. There are a few things to look out for: o OmniThreads (the C++ thread abstraction layer we use) needs several defines set properly for your host OS. See Makefile.am for these switches. Eventually, this stuff should be migrated into the GNU autoconf system o Various UNIXisms: for example, POSER uses the stat() system call, which can vary slightly from OS to OS. Again, this should eventually migrate to autoconf control. For now, just try building it. o Most other stuff should be fine -- in particular, I don't anticipate any byte ordering problems -- certainly not from the SrcShared part of the code, as that is absolutely stock code from the Mac and Windows ports. o If you want to port POSER to other flavors of UNIX, please please try hard to limit your tweaking to the SrcUnix and BuildUnix directories. You shouldn't have to change anything in SrcShared. Status ------ What works: o Core emulation of all current Palm devices & ROMs (in theory -- we've spot checked about 5 or so combinations ) o Gremlins o Loading PRC's / PDB's, etc o Preferences o Loading / Saving RAM images o Skins (!) To be added: o Serial support o Debugging interface o Easy screenshots o Actual use of the autoconf system o ROM Transfer o Progress indicator window (when loading PRCs, etc.) o Gremlin control window o Auto startup sequence (restarting or reloading from where you last left off) o Support for Autoload, et al., directories To be fixed: o Screen drawing is too slow o Some crashes on save/load RAM o Profiling should work, but hasn't been tested o There are lots of embedded English strings which should be moved to some sort of resource file (like the ResStrings.cpp) o NetLib redirection has only been very lightly tested. o Power button doesn't work (backlight is OK, but on/off is broken) o Not all menu items are enabled/disabled correctly. How You Can Help ---------------- We're most interested in getting help in these areas: o Testing, of course. If you can fix a bug and submit a patch, that's great. Otherwise, please characterize the bug as best you can and let us know. o Porting and GNU autoconf usage. Autoconf is not really used right now. If someone is already familiar with this system, support would be great. If you want to port POSER to another UNIX flavor, please try to use the autoconf system. See o Serial support - perhaps back-ported from XCopilot o Better screen drawing code -- if you're an X-expert, please feel free to improve the code that puts the bits on the screen. o Skins - draw skins for other devices... See SrcUnix/skins/* for examples. External Credits ---------------- The OmniThread C++ thread library is from the OmniOrb2 program. It is Copyright (C) 1994,1995,1996,1997 Olivetti & Oracle Research Laboratory, and is published under the GNU Library GPL (LGPL). See for information on the OmniThreads library and its license. Also, see the "About" box. If others need to be credited, please let us know.