DEC-SRC-Modula-3-3.5.1-binary-doc-distribution

HTML-documentation for the DEC-Modula-3 system
Postscript documents for Obliq, Network Objects, the graphical
interfaces, and others

This is one of several Modula-3 packages for FreeBSD:
   dec-m3-3.5.1-base.tgz     The basic tools needed to compile m3 packages
   dec-m3-3.5.1-doc.tgz      Complete documentation in HTML and some
                             postscript files
   dec-m3-3.5.1-x.tgz        Compiled X and GUI libraries
   dec-m3-3.5.1-netobj.tgz   The Network Objects tools and libraries
   dec-m3-3.5.1-srcs.tgz     The complete source packages from DEC SRC, with
                             minor modifications for FreeBSD

If you get the dec-m3-3.5.1-src.tgz package, you won't need the 
dec-m3-3.5.1-x.tgz and dec-m3-3.5.1-netobj.tgz, since you can compile 
everything yourself. I would strongly recommend to install the 
dec-m3-3.5.1-doc.tgz package, since almost all your questions about the
system and its usage will be answered there. It's very easy to browse
with a viewer like Mosaic.


"PRECONDITIONS"
   You will need at least FreeBSD 2.0 to run these binaries. 
   Everything has been compiled on a FreeBSD 2.1.0-development
   snapshot release (22.03.1995), but I don't expect problems
   2.1 users. 

INSTALLATION
   Due to changes in administratition policy on the machines I use,
   everything has been installed under /usr/contrib/{bin,lib/m3}.
   If you don't want to edit the configuration files, you should
   install everything in this very place. You might consider a
   symbolic link to /usr/local, of course.

      ln -s /usr/local /usr/contrib

   If you want the runtime-linker to find your dynamic libraries,
   you have to set the environment variable LD_LIBRARY_PATH
   to contain /usr/contrib/lib/m3/FreeBSD2,

      export LD_LIBRARY_PATH=/usr/contrib/lib/m3/FreeBSD2

   if you are using sh or ksh or bash.

PROBLEMS
   * Everything (excluding the compiler itself) has been compiled and
     linked for and with dynamic libraries. You will experience a
     (great) number of warnings about ``expected relocations for
     internal symbols''. As far as I see all relocations are performed
     correctly, everything runs quite fine in spite of them. I have 
     spent one day trying to figure out the real problem, but I fear
     that my understanding of dynamic loading and runtime relocations
     isn't deep enough to get to a definite conclusion. Perhaps some
     discussion with Garret Wollman and Bill Kalsow will help to
     elucidate the matter... If you are a FreeBSD hacker and have
     time to spent, all your advice and explanation is welcome.

     If you are timid, you may edit the template file 
     (lib/m3/m3build/templates/FreeBSD2) not to use dynamic libraries.
     You should expect really HUGE binaries then...

   * The problem with multiple definitions of _strtod is solved at
     last. libm3core.a now defines ___dtoa as well as _dtoa, and the linker
     will no more complain about multiply defined symbols when it's
     trying to link everything statically.

   * The debuggers (m3gdb and m23gdb) don't really work; they are
     just useful to step through your Modula-3 source and see what
     happens. Evaluation of expressions and type will probably not
     work.

   * The new compiler is faster, but it needs considerably more ressources.
     Be sure to raise your limits (memory, data, stack) before you compile
     big packages. Also be sure to have at least 16MB of real memory, or
     you won't be happy with it. (I only was able to compile the m3tk
     package by shutting down X, because the working set grew too big...)

If you have any problems with this distribution, feel free to send email
about it to wagner@luthien.in-berlin.de or olaf@logware.de. I will try
to help as far as I can, though it might take some days.

If you have any hint about the mentioned problems or succeed in getting the
debugger up before me, I would like to hear from you, too.

Olaf Wagner (wagner@luthien.in-berlin.de, olaf@logware.de)
