iv-3.1l.2: InterViews 3.1 for Linux with shared libraries (update)

iv-3.1l.2: InterViews 3.1 for Linux with shared libraries (update)

Post by Michael N. Li » Wed, 20 Apr 1994 01:34:20



[Uploaded to sunsite.unc.edu:pub/Linux/Incoming, should move to
 pub/Linux/X11/devel]

                README for iv-3.1l.2-bin.tar.gz

The binary distribution of InterViews with shared libraries must be
extracted in /

cd /
gzip -dc iv-3.1l.2-bin.tar.gz | tar xpf -

Then, either add /usr/local/interviews/lib to /etc/ld.so.conf or make
links for the sharable images

$ ln -s /usr/local/interviews/lib/libIV.so.3.1.2 /lib
$ ln -s /usr/local/interviews/lib/libUnidraw.so.3.1.2 /lib

then run ldconfig

$ ldconfig -v

If you don't make links, be sure that you have ldconfig 1.4.3 or
newer, 1.3 did not work properly when I tried.

=======================================================================
YOU NEED libgr.so.1 TO RUN INTERVIEWS. IF YOU DONT HAVE IT YET, GET IT.
=======================================================================

(See below for instruction to build a library with tiff support included)

_______________________________________________________________________________

                README for InterViews 3.1 for Linux

The file "iv-3.1l.2.diffs" contains patches for the standard 3.1.tar.Z
distribution of InterViews. To apply the patches, cd to the directory
that contains iv/ (NOT into iv/) and execute "patch -p [-s] <
iv-3.1l.2.diffs". The patches combine four groups of patches




   These patches introduce "#pragma interface"/"#pragma implementation"
   statements for g++ as "space savers". The script for rudimentary
   shared library support supplied with these patches has not been used.

3) Patches for iv-linux.cf, some Imakefiles, etc. and jump.* files
   for Linux shared library support. jump.* files have been made
   as described in "Using DLL Tools With Linux" and should be
   "update save" (extra space allocated etc.).

   The rules for building shared Linux libraries have been modelled as
   the "builtin" rules for SunOS. Thus, you can say `make World' to get
   everything built with shared libraries or `make World.noshared' for
   static libraries and executables.

4) Patches to improve iv-3.1l and Interviews (see below).
   Contributions have been made by

Other changes:
--------------

I have omitted the TIFF objects from libIV.a and added -ltiff to
Ld_libIV (see iv-linux.cf). This allows you to update to new versions
of the TIFF library without having to take care of proper link order
etc.

A sharable libtiff.a is available as part of the libgr package on the
usual servers. libgr is included in the Slackware distribution (I
didn't check other distributions).

If, for some reason, you do not want to install libgr.so, you can
build your own version of libIV that includes tiff support (patches

HasLibTIFF YES" in iv-linux.cf to "NO". The iv-3.1l.2-diffs include
jump files for both versions. Jump files are compatible, i.e., you can
still run the distribution binaries with your libIV+tiff library
(others, however can't run your binaries unless you install libgr
after all and link with "-ltiff -lIV").

Interviews fixes
----------------

Interviews 3.1 has never been officially updated (as far as I know).
So what to do with inofficial fixes? I can't ignore fixes sent to me,
as this makes the libraries less usable and yet I can't simply include
them as this makes the libraries incompatible. I have chosen to make
all patches depend on a global variable
iv_3_1l_inofficial_iv_fixes_enabled. The library includes a definition
for thaticial_iv_fixes_enabled. The library includes a definition
for that variable (initialized to 0) that you can replace by your own
definition (thanks to dynamic linking). I.e., in your main.c you
include

int iv_3_1l_inofficial_iv_fixes_enabled = 1;

if you want the inofficial changes to take effect (this has been done
for all the distributed binaries). Changing the value by replacing the
variable instead of assigning a new value in "main" allows me to make
fixes for global constructors depend on the value. Defining "int
iv_3_1l_inofficial_iv_fixes_enabled = 0;" in the library asures that
the libraries are compatible to InterViews on other systems by
default. I.e., InterViews bugs will appear on your Linux box as on
your Sun, etc. with unpatched IV 3.1 libraries.

There is no fix for script-building with GCC cpp. I.e., if you use
the GCC preprocessor as /lib/cpp (as I do), building the scripts in
src/bin/scripts fails and you have to do it by hand.

Adresses
--------

libIV.so.3.1.1 and libUnidraw.so.3.1.1 occupy the address space
allocated to them according the document "Using DLL Tools With Linux".
I tried to contact Peter MacDonald who has registered this address
space, but he does not respond to my mails.


earlier, that Peter MacDonald does not intend to release shared InterViews
libraries. So there should be no problem.

Michael Lipp


Michael Lipp


----------------------------------------------------------------------------
Changes in iv-3.1l.2

 * Support compilation with TIFF.

 * Library names aren't absolute any more.

 * iv_3_1l_inofficial_iv_fixes_enabled mechanism (see above).

 * Default kit restored to SMFKit (default in 3.1 distribution)

 * A fix for a src/lib/InterViews/tiff.c colormap bug

--
-----------------,------------------------------,------------------------------
Michael N. Lipp  !  Institut fuer Datentechnik  !  
                 !  Merckstr. 25     ,----------'  
                 !  D-6100 Darmstadt ! E-Mail:

-----------------'-------------------'-----------------------------------------

--

Be sure to include Keywords: and a short description of your software.
--
Linux: Generous programmers from around the world all join forces to help
       you shoot yourself in the foot for free.