home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Mint / mntlib32.zoo / README < prev    next >
Text File  |  1993-06-17  |  8KB  |  161 lines

  1. This is the readme for the MiNT library.
  2.  
  3. To use the library you will nead the header files in mntincNN.zoo (where NN
  4. is the same patchlevel as the version of the library you're using).
  5.  
  6. As of patchlevel 26, Eric R. Smith has turned over maintenance of the library
  7. to me (entropy).  Like Eric, I only have GCC, so I've recruited a few people
  8. to act as sub-maintainers for the portions of the library I can't test.
  9.  
  10. Here are the maintainers' addresses:
  11. GNU C and common files:  entropy@terminator.rs.itd.umich.edu (Nick Castellano)
  12. Sozobon C/HSC:  dsb@cs.duke.edu (D. Scott Bigham)
  13. Pure C:  hohmuth@freia.inf.tu-dresden.de (Michael Hohmuth)
  14. Lattice C:  ???
  15.  
  16. Be sure to read the "changes" file so that you know what's new in this
  17. release of the library.
  18.  
  19. My priorities for the library (in approximately this order) are:
  20.  
  21. 1.  Bug fixes, of course!
  22. 2.  UNIX compatibility
  23. 3.  Synchronization with J. Bammi's GCC library
  24. 4.  Support for compilers other than GCC
  25. 5.  Frills (beautifying code, fixing ugly hacks, etc.)
  26. 6.  Documentation
  27.  
  28. If you notice a problem with the library but don't know how to fix it,
  29. please try to provide as much information as possible so that I can locate
  30. the problem (a short piece of code demonstrating the bug, for instance).
  31.  
  32. All top-level sources and all mntinc include files are now in UNIX carriage
  33. control format (LF line termination).  If your compiler/editor really wants
  34. carriage returns, you can convert files back to MS-DOS format (CR-LF line
  35. termination) using the program crlf.ttp supplied in the crlf/ subdirectory
  36. (source included).  I made this change because many of the programs I use
  37. get really confused with MS-DOS (TOS) style files.  Also, J. Bammi's GCC
  38. libs are maintained in the UNIX style, so converting everything will make
  39. synchronizing the two libraries easier.
  40.  
  41. If you're sending in patches for the library, please take into consideration
  42. the following words from Larry Wall, in the manual page for 'patch'.  It
  43. will make my life so much easier.
  44.  
  45.     NOTES FOR PATCH SENDERS
  46.         There are several things you should bear  in  mind  if  you  are
  47.         going to  be  sending out patches.  First, you can save people a
  48.         lot of grief by keeping a patchlevel.h file which is patched  to
  49.         increment  the  patch  level as the first diff in the patch file
  50.         you send out.  If you put a Prereq: line in with the  patch,  it
  51.         won't  let them apply patches out of order without some warning.
  52.         Second, make sure you've specified the filenames  right,  either
  53.         in a  context  diff  header, or with an Index: line.  If you are
  54.         patching something in a subdirectory, be sure to tell the  patch
  55.         user to specify a  -p switch as needed.  Third, you can create a
  56.         file by sending out a diff that compares a null file to the file
  57.         you want to create.  This will only work if the file you want to
  58.         create doesn't  exist  already in the target directory.  Fourth,
  59.         take care not to send  out  reversed  patches,  since  it  makes
  60.         people wonder  whether  they  already applied the patch.  Fifth,
  61.         while you may be able to get away with putting 582 diff listings
  62.         into one file, it is probably wiser  to  group  related  patches
  63.         into separate files in case something goes haywire.
  64.  
  65. Of course the notes about keeping a patchlevel.h file don't apply in this
  66. case, because I maintain the patchlev.h file for the library.  But please
  67. take note of the rest of it, especially the last sentence!
  68.  
  69. As of Patchlevel 31, the MiNT library no longer supports any version of 
  70. GCC before 2.0.
  71.  
  72. The MiNT library cannot be built on a TOS filesystem, due to name conflicts
  73. between several modules (for example, _udivmod.o and _udivmoddi4.o).  It
  74. should work on a cross-compiler or an ST with a filesystem such as minixfs.
  75.  
  76. My configuration, used to build the library on an extended filename
  77. V2 minixfs with gcc 2.3.1:
  78.   /mint/bin/mfsconf F: -s n -d n -x t -l n
  79.   UNIXMODE=cu/rUx
  80.  
  81. Special thanks go out to Jeff Weiner and the rest of the umich archive posse
  82. for letting me use terminator for the maintenance of the library.
  83.  
  84. May the source be with you.  Wish me luck...I'll need it!
  85.  
  86. Cheers,
  87. entropy
  88.  
  89. Eric's original readme file follows:
  90. ----------------------------------------------------------------------------
  91.  
  92. *NOTE*: to compile the library you will need the header files in mntinc25.zoo
  93.  
  94. ============================================================================
  95.  
  96. Here is mintlib, a library for gcc, Sozobon, Pure C, and Lattice C which
  97. produces programs usable under either MiNT or TOS (of course, some features,
  98. e.g. pipe(), are only available under MiNT). This version has been reasonably
  99. well tested under both TOS and MiNT, and with 16 and 32 bit integers, but no
  100. doubt bugs remain. Please report any that you find.
  101.  
  102. The main library has the GNU C version of the library, plus the common
  103. files. See the lattice, purec, and sozobon directories for compiler
  104. specific information.
  105.  
  106. The Lattice C support is definitely a bit rough around the edges (I may
  107. very well have messed up some of the patches, and I don't have Lattice to
  108. test it). Similarly, I can't test the Sozobon and Pure C support myself.
  109.  
  110. There are no docs ("Use the Source, Luke"), but most of the library should
  111. be pretty self-explanatory. If you know ANSI C and/or Posix, then most
  112. of the functions should be pretty clear to you.
  113.  
  114. MiNT specific features are active when the external variable __mint is
  115. non-zero; this variable is set automatically by the startup code in main.c.
  116.  
  117. Some things to watch out for:
  118.  
  119. (1) MiNT has a blocking fork(), i.e. the parent waits for the child to
  120.     relinquish its address space rather than continuing in parallel.
  121.     (Do NOT rely on this, though, since it will be corrected in a future
  122.     version of MiNT!)
  123. (2) Using the spawn functions instead of fork/exec means that your programs
  124.     will work under TOS as well as under MiNT. vfork() also works under
  125.     TOS now, so vfork/exec is another viable alternative.
  126. (3) The longjmp() code has a call to Psigreturn() embedded in it; this means
  127.     that most signal handlers will work without changes, but in some very
  128.     bizarre circumstances this could cause a problem (if the sig handler
  129.     longjmps *within* itself, and then returns, for example).
  130. (4) Under TOS, all terminal reads are assumed to come from the console
  131. (5) You'll note that there is only minimal support for UNIXMODE;
  132.     this is because MiNT 0.9 supports symlinks in the kernel.
  133. (6) A function call, tfork(), is provided to start a new thread of
  134.     execution in the same address space. The declaration is
  135.     int tfork( int (*func)(), long arg ).
  136.     A new process is started, which executes concurrently with the parent
  137.     process and in the same address space (but a different stack).
  138.     The child begins at the address in func, with the stack set up as though
  139.     the call (*func)(arg) was made (in fact, this call *is* made!).
  140.     The child will exit when func returns, with the exit status being the
  141.     return code of func. The parent continues to execute concurrently;
  142.     in the parent, the value returned from tfork() is the process id of the
  143.     child.
  144. (7) The library is not set up to handle multiple threads of execution in the
  145.     same address space, so you'll have to provide semaphores for critical
  146.     library calls (e.g. malloc) yourself if you have multiple threads.
  147.  
  148. The library is based on the gcc library that Jwahar Bammi and I put together.
  149. Lots of people have contributed to it, including (but not limited to):
  150.  
  151. Adrian Ashley, Jwahar Bammi, Scott Bigham, Kai-Uwe Bloem, Howard Chu,
  152. John R. Dunning, Doug Gwyn, Dave Gymer, Michael Hohmuth, Alan Hourihane,
  153. Alex Kiernan, Ulf Moeller, Allan Pratt, Arnold D. Robbins, Edgar Roeder,
  154. Rich Salz, Dale Schumacher, Andreas Schwab, Eric Smith, Henry Spencer,
  155. and Stephen Usher.
  156.  
  157. I've hacked on things quite a bit, so if they're broken don't blame the
  158. original authors, blame me.
  159.  
  160. Eric R. Smith
  161.