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

The Modula-3 graphical user interface package for the X window system

   lib/m3/pkg/X11R4            Modula-3 interface to the X library
   lib/m3/pkg/ui               Trestle window-system toolkit
   lib/m3/pkg/vbtkita          collection of useful window widgets
   lib/m3/pkg/formsvbtpixmaps  misc. bitmaps, cursors and stuff used by formsvbt
   lib/m3/pkg/formsvbt         high-level language based on S-expressions that 
                               makes it easy to assemble VBTs (windows) using 
                               the TeX metaphors of boxes and glue
   lib/m3/pkg/videovbt         window widget that displays live video images
   lib/m3/pkg/images           support for displaying bitmap images
   lib/m3/pkg/jvideo           interface to the J-video hardware
   lib/m3/pkg/bicycle          library of playing card images
   bin/showheap                display in real-time the state of each heap page
   bin/shownew                 display in real-time per-type allocations
   bin/showthread              display in real-time the state of each thread
   bin/recordheap              capture a "showheap" trace
   bin/replayheap              display the log captured by "recordheap"

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)
