home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 342a.lha / make / README.amiga < prev    next >
Text File  |  1990-02-10  |  4KB  |  106 lines

  1. This program is the public domain Make program which appeared on
  2. mod.sources, Volume 7, number 91.  I have ported it to the Amiga under
  3. Manx Aztec C version 3.40a.  This short document assumes you know
  4. Make, and simply points out the Amiga specific features of the
  5. program.  The supported switches are listed in the comment block at
  6. the beginning of module main.c.  I offer no apologies for the fact that
  7. I ran the code through "indent -i4 -nfc1" on the 4.3BSD system at work
  8. before I started working on it.
  9.    The program has been compiled under Manx Aztec C Version 3.40.
  10. It uses Manx's fexecv() function to execute commands and get
  11. their return value, and the Manx dos_packet() function to send an
  12. AmigaDOS packet to the file system for touch'ing purposes.  Lattice
  13. recompilers need to change these (at least).  Peculiar features
  14. of the Amiga version are:
  15.  
  16. (1) The Amiga-specific sections of the code are #ifdef'd on the symbol
  17.     amiga (note the lower case).  I endorse Fred Fish's effort to
  18.     have system and compiler-supplied #define's in lower case to
  19.     ensure no collisions with user-supplied ones.
  20. (2) The file rules.c, routine makerules(), contains the definitions of
  21.     the default built-in rules. For the Amiga, these are equivalent to
  22.     the Makefile:
  23.  
  24.     CC = cc
  25.     CFLAGS =
  26.     AS = as
  27.     AFLAGS =
  28.  
  29.     .c.o:
  30.         $(CC) $(CFLAGS) $<
  31.     .s.o:
  32.         $(AS) $(AFLAGS) -o $@ $<
  33.  
  34.     (indented for clarity only).  Thus, one could conceivably do:
  35.     make CC=lc CFLAGS= AS=asm
  36.     to run this make under Lattice C.
  37. (3) If the file S:builtins.make exists, its contents are read in
  38.     instead of the built-in rules defined in makerules().  Thus, you
  39.     can use different default rules on different disks and change
  40.     the default rules without recompiling make.
  41. (4) A Control-D typed during execution of a command by make will cause
  42.     an abort with exit status 1 AFTER the completion of that command.
  43.     Control-C is an immediate abort, as you might expect.
  44. (5) Not really Amiga specific, but worth mentioning, is that characters
  45.     special both to the local operating system (such as : in AmigaDOS) and
  46.     to make may be used in the makefile by preceding them with \
  47.     to temporarily override their special meaning.  For example, to tell
  48.     make that RAM:foo depends on AC:foo.c, write:
  49.  
  50.     RAM\:foo : AC\:foo.c
  51.  
  52. (6) The Aztec fexecv() function, which is used by make to execute its
  53.     commands, only works on programs in directories stored along the
  54.     AmigaDOS PATH, so make sure your PATH includes the appropriate
  55.     directories.
  56.  
  57.     Finally, I added one new feature in the non-machine-specific code:
  58. the name of the makefile can be a single dash "-", in which case a
  59. makefile is read from the standard input.
  60.     About the only feature of "real" make missing here is the
  61. semicolon construct which allows a pair of lines such as the .c.o:
  62. rule and command above to be written as one line, viz:
  63.     .c.o: ; $(CC) $(CFLAGS) $<
  64.  
  65. Enjoy!    Bug reports in the Amiga-specific stuff should be directed to
  66. me;  others should go to caret@fairlight.OZ, the author of the rest of it.
  67. By the way, this code is superior to the Manx-supplied make--more switches
  68. and a better parser;  in fact, this make will handle the Makefile for
  69. MicroGnuEmacs while Manx make chokes on the ln command.
  70.  
  71.                 Steve Walton
  72.                 ametek!walton@csvax.caltech.edu (ARPA)
  73.                 WALTON@CALTECH (BITNET)
  74.                 ...!ucbvax!sun!megatest!ametek!walton
  75.  
  76. Some notes by Olaf Seibert, KosmoSoft:
  77.  
  78. I adapted this version of make to PDC, and enhanced it a little. In
  79. particular, if a line end with a backslash, the following newline and
  80. leading white space of the next line are now ignored. Previously, the
  81. newline was merely turned into a space. Also, comparison of filenames now
  82. is case-insignificant. Makefiles need not be internally consistent in the
  83. case of filenames. Also, the builtin rules are slightly different, for use
  84. with PDC.
  85.  
  86.     CC = ccx -c
  87.     CFLAGS =
  88.     AS = ccx -c
  89.     AFLAGS =
  90.  
  91.     .c.o:
  92.         $(CC) $(CFLAGS) $<
  93.     .s.o:
  94.         $(AS) $(AFLAGS) $<
  95.  
  96.                 /*OIS*0.80*/
  97.  
  98. I took out the \: feature, which worked only in target names, and not in
  99. prerequisite files. Instead, I added a more rational interpretation of
  100. colons. There is now at most one colon possible in a target name, which may
  101. not contain any spaces.
  102.  
  103. I incorporared a few bug fixes relating to $< and $*, from the minix newsgroup.
  104. I added a new feature: the .PATH special target. See manual.
  105.  
  106.