XForms Version 1.0 Release December 8, 2002 This is the Open Source distribution of the XForms Library, a graphical user interface toolkit for X Window Systems. It should work under X11 R4, R5 & R6. XForms is free. It is licensed under the LGPL (Lesser Gnu Public License) version 2.1. See the file COPYING for the gory details. spl - - - The demos and applications won't compile or link without the xpm library. You can get it from ftp://avahi.inria.fr/pub/xpm or ftp://ftp.x.org/contrib. It is no longer included in the distribution. You will need to add ... -lxpm ... to your link step in any applications which use XForms if you don't use shared libraries. - - - *IMPORTANT* If you already have a previous version of XForms installed, you probably should deinstall it or at least rename the libraries so that they doesn't conflict with the build process. Failing to do this may cause bizarre unresolved references or other annoyances. This is especially true of the shared libraries. One of the major goals for Version 1.1 will be to correct this. - - - To build, unpack the distribution in the standard manner into your favorite subdirectory. Take a look at the `Imakefile' in the top level directory. In theory, this is the only file you should have to mess with. If you have to diddle with anything else, I've done something wrong and you should tell me (please be gentle). At the very top, you should find a collection on "#define" statements. These should be the only items you should need to edit. Your choices are usually "YES" and "NO". - Fairly Important Stuff - Turns on -O4 level compiler optimization (or whatever optimization level you choose with the `OptimizationLevel' "#define"). #define DoOptimize YES - Optimization level -- set this as you wish. Note: On some Solaris systems with `gcc' you may need to reduce the level of optimization -- I've had problems with the compiler generating bogus symbols at this level. #define OptimizationLevel -O4 - Want lots of compilation messages? Turn this on. Only works with `gcc'. #define DoWall NO - This controls whether you get shared libraries. #define BuildShared YES You may wish to link `fdesign', `fd2ps', and the Demos statically. In the case of 64 bit Solaris, you may have to, though I think I've now fixed this. Setting this to "YES" will allow static linking. #define StaticLink YES - The GLCanvas is stuff is built as a separate library. If you don't need to build it, you can turn it off. #define BuildGL YES - - Less Important or System Specific - Most systems have the strerror() function nowadays, so this should probably be left as "YES". Consult your system documentation. #define HaveStrerror YES - Same goes for snprintf(). In my experience, only SunOS 4.x doesn't. Antiquated versions of DEC/Compaq/HP TrueUnix or whatever they're calling it this week apparently also doesn't. Probably should be left as "YES". Consult your system documentation. You may have to dink with snprintf() and strtod() in the `snp' directory to get them to build properly if you're not on SunOS 4.x and need them. If you do, please forward your changes to me. #define HaveSnprintf YES - And the same goes for `float.h', as well. Probably should be left as "YES". Consult your system documentation. This is only used in building the snprintf() replacement and will be cheerfully ignored otherwise. #define HaveFloatH YES - Under Solaris with `gcc' 3.1.1 the building shared libraries doesn't work with debug symbols so you'll want to turn this off. `gcc' 3.2 fixes most of this brokenness and actually works halfway decently with shared libraries, 64 bit compiles, and the whole load, so my suggestion is to upgrade if at all possible, should you need large file support, etc. #define DebugSymbols YES If you have a Solaris system and are running the 64 bit version of `gcc' you'll need to define this as "YES". Otherwise, don't touch. #define Solaris64Bit NO - - Out in the Tall Weeds - If you want to install XForms in some nonstandard place, that is, other than where X stuff would normally be parked, define this #define InstallNonstandard NO to "YES" AFTER you build the library and set this as appropriate: #define XFormsNonstandardInstallDir /usr/local If you have necessary libraries in different places than where `imake' _et_al_, expect, you'll need to set the following flags and point them at the library and include files. You may need to define "NonstandardJpeg" to "YES" these under FreeBSD, since by default its `cc' does not search `/usr/local/include' and `/usr/local/lib'. #define NonstandardXpm YES #define XpmIncLoc /put/the/include/path/here #define XpmLibLoc /put/the/library/path/here #define NonstandardTiff YES #define TiffIncLoc /put/the/include/path/here #define TiffLibLoc /put/the/library/path/here #define NonstandardJpeg YES #define JpegIncLoc /put/the/include/path/here #define JpegLibLoc /put/the/library/path/here - - - You will find the following subdirectories: lib - sources for the library image - sources for the image processing library demos - the demos fd2ps - Forms Designer to Postscript converter fdesign - the Forms Designer snp - sources for snprintf() and strtod(). NT - stuff apparently needed to build under NT[1] vms - stuff apparently needed to build under VMS[2] - - - To build, you should go to the top level directory. Edit the `Imakefile' there to your liking (other than InstallNonstandard, as discussed below) then type xmkmf -a or, if your `xmkmf' doesn't support the `-a' option or your just prefer to do things the long way, type xmkmf make Makefiles make includes make depend Then type make and the libraries, the Forms Designer, the Forms Designer to Postscript converter, and the Demos should be automagically built before your very eyes. To test, you can change directory to the `demos' directory and type demo You will most likely need to set or modify the environment variable LD_LIBRARY_PATH or, if you're running Mac OS X, DYLD_LIBRARY_PATH to point to the libraries if they're not installed. Something like setenv LD_LIBRARY_PATH ../lib:../flimage demo should do it. Same goes for testing `fdesign' and `fd2ps'. Since everyone seems to do dynamic shared libraries differently, your mileage may vary. - - - If you are installing in the standard places, type make install make install.man to install the package. You will most likely need to be `root' at this point. Note that if you are installing somewhere other than in `/usr/X11R6', `/usr/openwin', or any of the other standard places that your X distribution normally places things, you'll need to edit the top level `Imakefile' at this point to change `InstallNonstandard' from "NO" to "YES". Then recreate the `Makefile's with xmkmf make Makefiles If need be, become `root' and install with make install make install.man You must do this in two steps because the `imake' procedure makes no differentiation between the installation path and the paths necessary to find needed X libraries and include files. - - - If you have problems with this build procedure or you'd like some special gadgets installed for some standard operating system which I do not have access to, please post your comments, requests, brickbats, or flames to the mailing list, as below. Documentation on XForms is available from ncmir.ucsd.edu /pub/xforms via anonymous ftp. The entire XForms distribution plus the latest info is accessible via http://world.std.com/~xforms - - - This Open Source distribution is available at If you would like to act as a mirror for this distribution, please feel free to do so. The binary distributions of XForms will at some time in the future be deleted from the server. Effective immediately, they are considered unmaintained deprecated versions. - - - The snprintf() and strtod() function code is Copyright The Regents of the University of California and derived from software contributed to Berkeley by Chris Torek and is distributed as per the licensing therein. - - - There is a mailing list for XForms. Send a message to xforms-request@bob.usuhs.mil with one of the following commands subscribe xforms unsubscribe xforms to get on and off the list. To use the mailing list, send your message to xforms@bob.usuhs.mil Remember your message will be sent to many people. Please DO NOT send subscribe/unsubscribe messages to the list, send it to xforms-request@bob.usuhs.mil - - - Thanks to Sam Halliday , Jean-Marc Lasgouttes , and Angus Leeming , among others, for their patches, corrections, brickbats, and gentle prodding me to bring this project to some form of conclusion. Steve Lamont spl@ucsd.edu December 8, 2002 -- [1] I know zip about NT. I avoid Microsoft products whenever possible, so if you try to build this under NT and it breaks, you're on your own. Corrections, modifications, etc., are welcome, however. [2] The same goes here. I used to know a lot about VMS but in the 13 years or so since I left the San Diego Supercomputer Center I've mercifully forgotten almost all of it. Enjoy. [3] That is, a place other than where X and `imake' want to put things.