README for iv-3.1-g++2.7.2-diffs (diffs against 3.1.tar.gz) iv-3.1-g++2.7.2.tar.gz (full source, readily patched) These are patches to compile InterViews 3.1 with gcc 2.7.2 on Digital Unix 3.2c (formerly DEC Alpha OSF/1) and on ix86 Linux with ELF (Debian distribution in my case). It should be possible to adapt it with minor effort to other architectures too. To install the patches, you need the InterViews 3.1 sources. I used 3.1.tar.gz (2067715 Bytes) - sorry, I don't remember the ftp source. I think .../comp/X11/contrib/toolkits/InterViews/3.1.tar.Z (3771112 Bytes, 1992/12/15) is the same. For your convenience, I've uploaded the full source tree too, with all patches applied (iv-3.1-g++2.7.2.tar.gz). You may use this if you don't have 3.1.tar.gz yet; to build InterViews, start with step 4 below. This patchfile includes various patches I found on different sites and in the newsgroup comp.windows.interviews (see below) as well as some patches by myself. To install, perform the following steps: 1. make a subdirectory to build InterViews: mkdir iv-src cd iv-src 2. unpack 3.1.tar.{gz,Z}: gtar xvzf 3.1.tar.gz 3. install the patches: patch -E -p0 < some_path/iv-3.1-g++2.7.2-diffs 3.a Search for rejected patches, but there shouldn't be any find . -name \*.rej -print If there are any, try to fix it manually. 3.b Remove original files find . -name \*.orig -print | xargs rm -f 4. build it: cd iv export CPU=`make CPU` nohup make World & Warning: you should use GNU make here. If you don't want to use GNU make, you have to change iv/src/config/InterViews/local.def (search for DependTarget). 5. log out, go home, drink coffee or so. The build process takes some time, about half an hour or so dependend on your machine. 6. Inspect nohup.out for errors. Yes, I know, there are lots of warnings. If you've the time to correct them, I'd appreciate it. 7. Warning: you have build InterViews with shared libraries. To test some program in iv/src/bin/..., you have to set LD_LIBRARY_PATH to .../iv/lib/IV/ and .../iv/lib/Unidraw/, or you have to install it first. 8. Install it: make install If you havent' modified anything, it will be installed in /usr/local/interviews. You have to make two symbolic links manually: Alpha: cd /usr/local/lib ln -s ../interviews/lib/libIV.so . ln -s ../interviews/lib/libUnidraw.so . Linux: cd /lib # as root rm -f libIV* # remove old symlinks rm -f libUnidraw* # if there are any cd /usr/local/lib ln -s ../interviews/lib/libIV.so.3.1 . ln -s ../interviews/lib/libUnidraw.so.3.1 . ln -s libIV.so.3.1 libIV.so ln -s libUnidraw.so.3.1 libUnidraw.so ldconfig # as root On Linux, if you have Slackware 2.1, your old InterViews installation is in /usr/interviews, and there are symlinks from /usr/X11/bin/... to /usr/interviews. You can simply cd /usr rm -rf interviews ln -s local/interviews . to use your new installation, and then you don't have to set your PATH (step 9). Don't know how or if InterViews is installed in Slackware anymore. 9. Set your PATH and MANPATH: PATH=$PATH:/usr/local/interviews/bin MANPATH=$MANPATH:/usr/local/interviews/man 10. Test it (ibuild, idraw). 11. If you need static libraries (e.g. for debugging purposes), you can can do a ``make World.noshared'' instead of ``make World'' in step 4 above. You could install it with ``make install.noshared'', but then you will get statically linked binaries (huge!) installed. Instead, install the libraries only: cd iv/src/lib make install.noshared The libs and binaries are build in .../ALPHA.noshared or .../LINUX.noshared. Note that the non-shared libs are not used in the linking stage if you have installed the shared libs except you link with option -static. 12. If you find some bugs in InterViews and want to debug them, you can do ``make World.debug'' to build InterViews with debugging info. The lib's and binaries are then build in .../ALPHA.debug (or .../LINUX.debug); the binaries will be linked statically. If something goes wrong, you are on your own. The lib's work for me now, and I don't have the time to do any support. Good luck. I used the following patches before doing my own work: iv-3.1-DEC-Alpha.diff: Patches to compile InterViews with DEC cxx. This was the base for my changes in iv/src/config/InterViews/iv-alpha.cf iv-3.1-g++-3.1.tar: Patches for g++ 2.5.8 (Don't remember if I used it.) comp.windows.interviews: A posting by for DEC/cxx regarding a problem with idraw. iv-3.1l.2-diffs: Patches for Linux with gcc 2.5.x. See the README.linux for details. This README tells you that some scripts aren't build correctly; this is fixed now. The aout DLL (dynamic link library) configuration was deleted for gcc 2.7.2(ELF) now; but there are some parts in Imakefiles left. comp.windows.interviews: A posting by Ned Danieley regarding a compilation problem with struct XDisplay. Patches by sgi: I've included the diffs between 3.1.tar.Z and ftp.sgi.com:~ftp/graphics/interviews/3.2.a.tar.Z (3893050 Bytes, Jun 27 1994). I don't know if this is _really_ version 3.2 - there was no README included. My own changes: o Fiddling with "#pragma interface" / "#pragma implementation", because there was a change in the interpretation of this commands (see gcc 2.6.x - Manual Page 163: > In versions of GNU C++ prior to 2.6.0 `allclass.h' was treated as an > implementation file whenever you would include it from `allclass.cc' > even if you never specified `#pragma implementation'. This was deemed > to be more trouble than it was worth, however, and disabled' This lead to ``unresolved symbols'' or ``multiply defined symbols'' at the linking stage. o Modifications in iv-alpha.cf, gcc.def, local.def, TIFF.def and some other places: There were some bugs when some modules where compiled with optimization on Alpha. I've turned off optimization for these files (see iv/src/lib/IV/Imakefile). o For the step from gcc 2.6.3 to gcc 2.7.2: - small changes at the config files - some changes because of the changed ``for'' semantic (many warnings left) - changes in iv-linux.cf for ELF shared libraries Bugs and TODO: o Check iv/src/config/InterViews/{iv-alpha.cf,iv-linux.cf,gcc.def,local.def} if you want to change something. o There are some warnings about wrong function call parameters at compilation time. o Many warnings about the local variable scope in for loops left over. Someone should fix this. o There are problems on alpha if optimization is turned on (see gcc.def): e.g. file selector boxes don't show files, but only a grey pattern. Perhaps a compiler error? Or some bug that shows only with optimization? I didn't analyse it. Just found the module (xcanvas.o in libIV) that made the broken file selector box - so I turned off optimization for it (.../IV/Imakefile) and on for the rest (.../config/InterViews/gcc.def). Would be fine if someone could analyse these faults. Good luck to build InterViews. If you are new to InterViews, you should perhaps try to use Fresco, the follow-up project to InterViews, I think by the X consortium. For me, it's too late. Herbert Thielen , Wed Apr 5 11:39:56 MET DST 1995 (for 2.6.3) Tue Apr 2 22:55:33 MET DST 1996 (for 2.7.2)