README for iv-3.1-g++2.6.3-diffs These are patches to compile InterViews 3.1 with gcc 2.6.3 on DEC Alpha AXP OSF1/2.0 and on i486 Linux. 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. 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.6.3-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 50 minutes on a DEC AXP 3000/600 and about 45 minutes (it's faster, yes :-] ) on a i586/90 with SCSI disk and 32 MB RAM (both with no other load). 6. Inspect nohup.out for errors. 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* cd /usr/local/lib ln -s ../interviews/lib/libIV.so.3.1.2 . ln -s ../interviews/lib/libUnidraw.so.3.1.2 . ln -s libIV.so.3.1.2 libIV.so.3 ln -s libUnidraw.so.3.1.2 libUnidraw.so.3 ldconfig 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). 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. On Alpha, you will get an internal compiler error while making iv/src/lib/IV/ALPHA.debug/dispatcher.o. You can compile this file manually without -g and then continue: cd iv/src/lib/IV/ALPHA.debug make DEBUG_CCFLAGS="" dispatcher.o cd ../../../.. make all.debug 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. 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). 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 the compilation time. o I didn't adapt the tiff jumptable for Linux. If you have the libtiff installed, it's no problem for you. See README.linux for details. I've included the differences I implemented to the non-tiff jumptables; perhaps this helps you to change the tiff-tables too. o I didn't get the shared libs for Linux to be compatible to my old libs installed with slackware. I don't know why. If you have programs that use the shared libs, you have to relink them. 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