home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / motasm / motasmdoc / cpp / README < prev   
Encoding:
Text File  |  1993-02-21  |  4.7 KB  |  126 lines

  1. This public domain C preprocessor is provided for platforms with naive cpp's
  2. that cannot handle the abusively large macros in the server and the number of
  3. defines in the toolkit.  It is currently needed under the following systems:
  4.  
  5.     Apple A/UX 1.0
  6.     Apollo Domain/IX 9.6 and earlier
  7.  
  8. It might be nice to integrate with makedepend someday (or at least steal the
  9. #if processing)....
  10.  
  11.                                   *  *  *  *  
  12.  
  13.  
  14.  
  15. Decus cpp is a public-domain implementation of the C preprocessor.
  16. It runs on VMS native (Vax C), VMS compatibilty mode (Decus C),
  17. RSX-11M, RSTS/E, P/OS, and RT11, as well as on several varieties
  18. of Unix, including Ultrix.  Decus cpp attempts to implement features
  19. in the Draft ANSI Standard for the C language.  It should be noted,
  20. however, that this standard is under active development:  the current
  21. draft of the standard explicitly states that "readers are requested
  22. not to specify or claim conformance to this draft."  Thus readers
  23. and users of Decus cpp should not assume that it conforms to the
  24. draft standard, or that it will conform to the actual C language
  25. standard.
  26.  
  27. These notes describe how to extract the cpp source files, configure it
  28. for your needs, and mention a few design decisions that may be of interest
  29. to maintainers.
  30.  
  31.             Installation
  32.  
  33. Because the primary development of cpp was not on Unix, it
  34. is distributed using the Decus C archive program (quite similar
  35. to the archiver published in Kernighan and Plauger's Software
  36. Tools).  To extract the files from the net.sources distribution,
  37. save this message as cpp1.arc and the other two distribution
  38. files as cpp2.arc and cpp3.arc.  Then, using your favorite editor,
  39. locate the archx.c program, just following the line beginning with
  40. "-h- archx.c" -- the format of the distribution is just:
  41.  
  42.     -h- readme.txt
  43.       ... this file
  44.     -h- cpp.mem
  45.       ... description of cpp
  46.     -h- archx.c
  47.       ... archx.c program -- extracts archives
  48.     -h- archc.c
  49.       ... archc.c program -- creates archives
  50.  
  51. Compile archx.c -- it shouldn't require any special editing.
  52. Then run it as follows:
  53.  
  54.     archx *.arc
  55.  
  56. You do not need to remove mail headers from the saved messages.
  57.  
  58. You should then read through cppdef.h to make sure the HOST and
  59. TARGET (and other implementation-specific) definitions are set
  60. correctly for your machine, editing them as needed.
  61.  
  62. You may then copy makefile.txt to Makefile, editing it as needed
  63. for your particular system.  On Unix, cpp should be compiled
  64. by make without further difficulty.  On other operating systems,
  65. you should compile the six source modules, linking them together.
  66. Note that, on Decus C based systems, you must extend the default
  67. stack allocation.  The Decus C build utility will create the
  68. appropriate command file.
  69.  
  70.             Support Notes
  71.  
  72. The USENET distribution kit was designed to keep all submissions around
  73. 50,000 bytes:
  74.  
  75. cpp1.arc:
  76.     readme.txt    This file
  77.     cpp.mem        Documentation page (see below)
  78.     archx.c        Archive extraction program
  79.     archc.c        Archive construction program
  80.     cpp.rno        Source for cpp.mem (see below)
  81.     makefile.txt    Unix makefile -- copy to Makefile
  82.     cpp.h        Main header file (structure def's and globals)
  83.     cppdef.h    Configuration file (host and target definitions)
  84.  
  85. cpp2.arc:
  86.     cpp1.c        Mainline code, documentation master sources
  87.     cpp2.c        most #control processing
  88.     cpp3.c        filename stuff and command line parsing
  89. cpp3.arc:
  90.     cpp4.c        #define processor
  91.     cpp5.c        #if <expr> processor
  92.     cpp6.c        Support code (symbol table and I/O routines)
  93.     
  94. Cpp intentionally does not rely on the presence of a full-scale
  95. macro preprocessor, it does require the simple parameter substitution
  96. preprocessor capabilities of Unix V6 and Decus C.  If your C
  97. language lacks full preprocessing, you should make sure "nomacargs"
  98. is #define'd in cpp.h.  (This is done automatically by the Decus C
  99. compiler.)
  100.  
  101. The documentation (manual page) for cpp is included as cpp.mem
  102. and cpp.rno.  Cpp.rno is in Dec Runoff format, built by a Decus C
  103. utility (getrno) from original source which is embedded in cpp1.c.
  104. To my knowledge, there is no equivalent program that creates
  105. the nroff source appropriate for Unix.
  106.  
  107. I would be happy to receive fixes to any problems you encounter.
  108. As I do not maintain distribution kit base-levels, bare-bones
  109. diff listings without sufficient context are not very useful.
  110. It is unlikely that I can find time to help you with other
  111. difficulties.
  112.  
  113.             Acknowledgements
  114.  
  115. I received a great deal of help from many people in debugging cpp.
  116. Alan Feuer and Sam Kendall used "state of the art" run-time code
  117. checkers to locate several errors.  Ed Keiser found problems when
  118. cpp was used on machines with different int and pointer sizes.
  119. Dave Conroy helped with the initial debugging, while Arthur Olsen
  120. and George Rosenberg found (and solved) several problems in the
  121. first USENET release.
  122.  
  123. Martin Minow
  124. decvax!minow
  125.  
  126.