home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / programm / language / gcc222.lha / README.2.2.2 < prev   
Encoding:
Text File  |  1992-08-11  |  12.5 KB  |  327 lines

  1. Here it is, a new distribution of gcc, version 2.2.2. 
  2.  
  3. ****************************************************************************
  4. What about sources ?
  5. ****************************************************************************
  6.  
  7. This archive should contain everything necessary to get you going, it doesn't
  8. include the sources for ixemul.library (should be available RSN as a different
  9. distribution), and it doesn't include full sources to gcc. If you're 
  10. interested in the sources required to rebuild gcc, get the original GNU
  11. sources (gcc-2.2.2.tar.Z), which should be stored on the same ftp site you
  12. got this binary distribution from (if they're not, tell the manager of that ftp
  13. site, as this is a requirement of the GNU Copyright LICENSE). Then apply
  14. the gcc patch-files in src-patches/, and configure for `amigados'. 
  15. Same thing goes for libg++-2.2. If you want (ie. you don't have to) get
  16. libg++-2.2.tar.Z (again, from the same ftp site you got this distribution
  17. from) and apply the libg++ diff from the src-patches directory, then
  18. configure for amigados and give it a try.
  19.  
  20. Sources for other tools only included as binaries are available separately
  21. in self-contained archives (such as for example gnuinfo-920712.lha for
  22. InfoView).
  23.  
  24. |
  25. | For the large majority of users, rebuilding gcc is not necessary, you can
  26. | just use it as is.
  27. |
  28.  
  29.  
  30. ****************************************************************************
  31. What's where
  32. ****************************************************************************
  33.  
  34. This release uses a slightly different disk layout than previous versions.
  35. I tried to make things a bit more logical, and reduce some weirdness that
  36. could only be explained by history ;-) (For example, the obscure gcc20: is
  37. gone..)
  38.  
  39.  
  40. This is the basic directory structure, and what's stored where:
  41.  
  42. COPYING            GNU LICENSE, read!!
  43. InfoView        this is a viewer for .info-* files as you find them
  44. InfoView.info        in info/. Please read thru this README before trying
  45.             to use it, you need to setup some things for it to
  46.             work!
  47. README.2.2.2        this file
  48. blib/            base relative libraries
  49. compilers/        home of compilers called by gcc
  50. envarc/            global environment variables you should have set when
  51.             using this programming environment
  52. g++-include/        C++ headers (for libg++)
  53. geninline/        Perl scripts to generate inline headers and -lamy glue
  54. include/        non-amiga specific C/C++ headers
  55. info/            manuals for the compiler and libg++
  56. ixpipe/            a pipe handler needed by the library
  57. lib/            normal (ie. not base relative) libraries
  58. libauto/        experimental lib to open shared libs at startup
  59. libs/            ixemul.library and ixemul.trace
  60. os-include/        amiga specific C/C++ headers. Add Commodore headers!!
  61. rexx/            ARexx wrappers for gcc and g++
  62. src-patches        source patches
  63. unix/            a pseudo root for a unix hierarchy
  64.  
  65.  
  66. The unix/ directory probably needs some more focus, so lets look at it a
  67. bit closer:
  68.  
  69. unix/etc:        this is /etc, and contains a config file for `man'
  70. man.conf
  71.  
  72. unix/dev:        not currently used, here to avoid requesters
  73.             asking you to insert `volume dev:' ;-)
  74.  
  75. unix/usr/bin:        this is /usr/bin, and contains all binaries of 
  76. README.TRACE        this distribution that are meant to be directly
  77. apropos*        invoked by the user (contrary to the executables
  78. dump*            in compilers/, that are meant to be invoked by a
  79. dump.c            driver program like gcc or gccv).
  80. gcc*            apropos,man,whatis build the man-package,
  81. gccv*            gcc, gccv are the compiler drivers (see below)
  82. genclass*        genclass is a /bin/sh script used with libg++
  83. ixconfig*        dump is a really primitive ps-like dumper, very
  84. ixconfig.c        internal, you'll probably never use it.
  85. less*
  86. man*
  87. sh*
  88. trace*
  89. trace.c
  90. whatis*
  91.  
  92. unix/usr/share/man:    this is the root for tons of man pages, in fact
  93.             everything I found from BSD is here, probably some
  94.             stuff as well, that's not (yet?;-)) available in
  95.             ixemul.library.
  96.  
  97. unix/usr/share/misc:    this hosts /usr/share/misc stuff, currently only
  98.             a termcap file needed by less and InfoView.
  99.  
  100.  
  101. ****************************************************************************
  102. Installation
  103. ****************************************************************************
  104.  
  105. Having unpacked this distribution, you already did most of the installation.
  106. What's missing are some assigns, and environment variables. 
  107. In the following section, I'm calling the directory where you unpacked your
  108. distribution, {UNPACKED}. Thus {UNPACKED}README.2.2.2 would refer to this
  109. file you're reading at the moment. Please replace {UNPACKED} with the actual
  110. name of that directory, ie. don't write {UNPACKED}!
  111.  
  112. 1. Load your S:User-Startup file into an editor (use S:Startup-Sequence if
  113.    you're still using kick 1.3)
  114.  
  115. 2. Somewhere at the end (but before the call to EndCLI when under 1.3!!)
  116.    add the following lines:
  117.    
  118.      ASSIGN gcc: {UNPACKED}
  119.      ASSIGN usr: gcc:unix/usr
  120.      ASSIGN lib: gcc:lib    ; skip if this collides with other assign
  121.      ASSIGN bin: usr:bin
  122.      ASSIGN etc: gcc:unix/etc
  123.      ASSIGN dev: gcc:unix/dev
  124.      ASSIGN tmp: t:
  125.      
  126.      PATH usr:bin add
  127.  
  128.    if you have enough memory, you might also add some of the following lines:
  129.  
  130.      RESIDENT gcc:compilers/amiga/2.2.2/cpp
  131.      RESIDENT gcc:compilers/amiga/2.2.2/cc1
  132.      RESIDENT gcc:compilers/amiga/2.2.2/cc1plus
  133.      RESIDENT gcc:compilers/amiga/2.2.2/as
  134.      RESIDENT gcc:compilers/amiga/2.2.2/ld
  135.      RESIDENT usr:bin/gcc
  136.  
  137.    especially cc1plus is a good choice for *not* including...
  138.  
  139. 3. when under 1.3, add the following lines:
  140.  
  141.      SETENV TERM amiga
  142.      SETENV LESSCHARSET latin1
  143.  
  144.    under 2.0 just copy the contents of envarc/ into envarc:, thus in the
  145.    shell do:
  146.    
  147.      COPY envarc/#? envarc:
  148.      
  149.    and if you want the settings to be done in the current session as well,
  150.    copy them to env: as well:
  151.    
  152.      COPY envarc/#? env:
  153.  
  154.    NOTE: if you're using the communication program `Term' by Olaf "Olsen"
  155.          Barthel, make sure you're using the term: assign to tell Term where
  156.          to find its configuration files, *not* the TERM or TERMPATH 
  157.          environment variables. These both very much confuse `less' and
  158.          `InfoView', and they won't work with those wrong settings! You've
  159.          been warned...
  160.  
  161. 4. make sure the system finds ixemul.library (which is distributed in the
  162.    libs/ directory).
  163.    Under 2.0, you might add the following line to S:User-Startup:
  164.    
  165.      ASSIGN libs: gcc:libs ADD
  166.      
  167.    or for 1.3 (and 2.0) you may just as well 
  168.    
  169.      COPY libs/ixemul.library LIBS:
  170.    
  171.    in the shell. In both cases, make sure the system actually finds the
  172.    library by issuing a 
  173.    
  174.      VERSION ixemul.library
  175.      
  176.    command in the shell. The output should show at least version 39.44 !!
  177.  
  178. 5. Copy the ixpipe-handler into your L: directory (or under 2.0, add 
  179.    ixpipe/ to your L: multiassign)
  180.    
  181.      COPY ixpipe/ixpipe-handler L:
  182.    
  183.    Then, depending on your OS version, do the following:
  184.    1.3: append the ixpipe/Mountlist entry to your DEVS:Mountlist, and add
  185.  
  186.       MOUNT IXPIPE:
  187.       
  188.     to your S:Startup-Sequence.
  189.  
  190.    2.0: append the ixpipe/Mountlist entry to your DEVS:Mountlist, and add
  191.    
  192.           MOUNT IXPIPE:
  193.           
  194.         to your S:User-Startup.
  195.    
  196.    2.1: add those entries to your DOS drivers:
  197.    
  198.          COPY ixpipe/IXPIPE(%|.info) DEVS:DOSDrivers
  199.  
  200.     NOTE: 2.1 is not yet officially released by Commodore!
  201.  
  202. 6. *VERY IMPORTANT* Make sure your STACK setting is at least 250000, or
  203.    the compilers *will* crash on larger source files!!
  204.  
  205. 7. the os-include/ directory is meant to contain the Amiga specific headers
  206.    distributed by Commodore. It already contains 2.0 inline headers for use
  207.    with gcc (instead of pragmas used by other compilers). You'll have to
  208.    add the other headers yourself, since I can't include them, they're
  209.    copyrighted (blech). In os-include/devices/ you find a small patch you
  210.    might apply to the system timer.h file, to make that compatible with the
  211.    rest of the library.
  212.  
  213.  
  214. ****************************************************************************
  215. Getting started
  216. ****************************************************************************
  217.  
  218. After installation (make sure your changes have been integrated into the
  219. system. Best thing to do is to reboot your machine) you're ready to read
  220. thru the provided documentation. 
  221.  
  222. On Workbench, double-click the InfoView icon, or just start InfoView from
  223. the Shell/CLI. You're then presented a hierarchical document browser, if
  224. you don't know it already, best thing to do is to go thru the short tutorial.
  225. If you'd like to read the tuturial, just enter `h' (ie. the h key, no quotes).
  226.  
  227. There's a second set of information available in this programming 
  228. environment, and that's man pages. There's no Workbench compatible program
  229. to access them, so you'll have to switch to a shell. 
  230.  
  231. The first man page you probably want to read, is a manual for man itself. For
  232. this, enter 
  233.  
  234.   man man
  235.  
  236. in your shell. To get a quick summary of command line options for gcc, do
  237.  
  238.   man gcc
  239.  
  240. etc, you get the point. The large bulk of provided man pages is for the 
  241. functions available in ixemul.library. If you want more information on how
  242. to call fopen() for example, you'd get it with
  243.  
  244.   man fopen
  245.  
  246.  
  247. ****************************************************************************
  248. ARexx
  249. ****************************************************************************
  250.  
  251. The provided ARexx scripts have been contributed by Loren J. Rittle.
  252. If you like ARexx, they're an alternate way of calling gcc. They 
  253. automatically make sure you're using a large enough stack setting, and 
  254. enable you to compile C++ programs with less obscure options. This 
  255. approach is furthermore useful if you're not able to use the g++ /bin/sh
  256. script.
  257.  
  258.  
  259. ****************************************************************************
  260. /bin/sh scripts
  261. ****************************************************************************
  262.  
  263. Currently, genclass and g++ are provided as the original /bin/sh scripts.
  264. Due to a bug in ixemul.library (affecting vfork()) they currently only
  265. work with kick 2.0 or better. If you feel adventurous and like to fix the
  266. 1.3/arp vfork(), tell me;-)
  267.  
  268.  
  269. ****************************************************************************
  270. gcc versus gccv
  271. ****************************************************************************
  272.  
  273. gccv stands for a gcc using vfork() to spawn a new process, and then calling
  274. the new execve() function in ixemul.library to call its subcompilers. Gcc
  275. continues to using the more system friendly RunCommand() function in
  276. dos.library to start subcompilers. Gccv has the advantage of being able to
  277. work with interprocess pipes, thus (provided you have the memory ;-)), you're
  278. able to do
  279.  
  280.     gccv -pipe your_program.c
  281.  
  282. causing the preprocessor (cpp), the C-compiler (cc1) and the assembler (as)
  283. to run at the same time, passing intermediate files thru internal pipes 
  284. instead of using temporary files.
  285.  
  286. As long as you don't want that feature (ok, playing with certain make tools
  287. also requires gccv) you're safe using gcc.
  288.  
  289.  
  290. ****************************************************************************
  291. Running gcc and ixemul.library with 1.3
  292. ****************************************************************************
  293.  
  294. Gcc should still work under 1.3, although I didn't test lately. Things that
  295. won't work currently are programs using vfork(), thus you won't currently be
  296. able to use gccv, nor any shell scripts using /bin/sh.
  297.  
  298. Due to popular demand, I revamped the startup code of ixemul.library to not
  299. fail if mathieeesingbas.library is not available. If that happens, ixemul
  300. functions that would require functions from mathieeesingbas.library are
  301. instead rerouted to a function that just displays a requester telling you 
  302. that you'd need mathieeesingbas.library to use that function, and then
  303. aborts the program. Mathieeesingbas.library implements single precision IEEE
  304. floating point arithmetics, used to implement the `float' data type in
  305. gcc. It comes in the ROMs of 2.x equipped machines, and is available as
  306. a disk-loadable library for 1.3 from Commodore.
  307.  
  308.  
  309.  
  310. ****************************************************************************
  311. And as always, have fun !
  312. ****************************************************************************
  313.  
  314. This release has been delayed due to other projects I had to really finish
  315. in time, mostly some final stuff for my studies ;-) I'm sorry for this! 
  316. However, chances are high that future gcc versions will include the major
  317. amigados changes in the official GNU sources, so you should get immediate
  318. amigados support, as soon as GNU releases a new copy of gcc. I'm currently
  319. negotiating with RMS about the details.
  320.  
  321.  
  322. Markus M. Wild
  323.  
  324. You can reach me:
  325. <wild@nessie.cs.id.ethz.ch> or
  326. <wild@amiga.physik.unizh.ch> (which will soon change to amiga.icu.unizh.ch)
  327.