home *** CD-ROM | disk | FTP | other *** search
/ Phoenix CD 2.0 / Phoenix_CD.cdr / 15a / ndmake45.zip / README < prev    next >
Text File  |  1987-10-30  |  4KB  |  113 lines

  1.                               NDMAKE version 4.5
  2.                               ------------------
  3.                      Copyright (C) 1985, 1986 D. G. Kneller
  4.                               All rights reserved.
  5.  
  6.  
  7.  
  8. This README file describes the differences between NDMAKE 4.3 (which
  9. has been documented in MAKE.DOC) and NDMAKE 4.5, which is the newer
  10. version but has not been completely documented.
  11.  
  12. Here are several NDMAKE executables, each slightly different.  The release
  13. version of NDMAKE is version 4.5.  The executable is MAKE45.EXE. 
  14. A large model (1 Meg of data space) version of 4.5 has also been included
  15. and is called MAKE45L.EXE.  As the 4.5 version is relatively new and
  16. involved a complete rewrite of NDMAKE's internals, the older version 4.3
  17. is also included in case 4.5 turns out to be buggy.
  18.  
  19. In MAKE.DOC there are some references to a demo version of NDMAKE 4.3
  20. called MAKE43D. This version no longer exists and the documentation
  21. pretaining to it (marked with a | in the right column) can be ignored.
  22.  
  23.  
  24.  
  25. Changes from 4.3 to 4.5
  26. ------------------------
  27. 1) total rewrite of internals for 30 - 50 % more speed.
  28. 2) new features to macros:
  29.     - recursively defined macro *names*.  For example:
  30.         LOBJS = Lmain.obj Lsub.obj
  31.         SOBJS = Smain.obj Ssub.obj
  32.         MODEL = L
  33.         OBJS = ${$(MODEL)OBJS}
  34.  
  35.         and $(OBJS) will evaluate to $(LOBJS). 
  36.  
  37.     - string replacement in macros
  38.       For string replacement, the syntax for the macro is
  39.       "${name:s1=s2)".  The macro "name" is evaluated and
  40.       occurrences of string "s1" are replaced with string
  41.       "s2".  As an example:
  42.  
  43.         XXOBJS = XXmain.obj XXsub.obj
  44.         MODEL = S
  45.         OBJS = $(XXOBJS:XX=${MODEL})
  46.  
  47.         When $(OBJS) are referenced, the XX string will be
  48.         replaced with the ${MODEL} string.  In this case
  49.         $(OBJS) will be "Smain.obj Ssub.obj".
  50.         
  51.     Or you could have:
  52.  
  53.         OBJS = main.obj sub.obj
  54.         SRCS = $(OBJS:.obj=.c)
  55.  
  56.         In which case SRCS are "main.c sub.c".
  57.  
  58.  
  59.     Currently, the string replacement only works properly on
  60.     "simple" macro names, not on recursively defined names.
  61.  
  62. 3) additional names are supported for automatic response files.  Previously
  63.    NDMAKE would generate response files automatically only for commands
  64.    that were named "link" and "lib".  Now it is possible to add other names
  65.    to the list of acceptable names.  The special targets .RESPONSE_LINK and
  66.    .RESPONSE_LIB are a list of acceptable names for link and lib response
  67.    files, respectively.  For example:
  68.  
  69.     .RESPONSE_LINK:    tlink link4
  70.     .RESPONSE_LIB:    tlib
  71.  
  72.    will cause NDMAKE to generate link response files for "link", "tlink"
  73.    and "link4", and lib response files for "lib" and "tlib".  The response
  74.    files are formated for Microsoft "link" and "lib".
  75.  
  76. 4) the comment character `#' is treated as does UNIX make -- in a
  77.    shell line, the comment character is passed.  So:
  78.  
  79.     target:
  80.         echo ### This will be echoed
  81.  
  82.     Will produce:
  83.     ### This will be echoed
  84.  
  85.     To comment out a shell line, the comment character has to be the first
  86.     character in the line:
  87.  
  88.     target:
  89.     #    The next shell line has been commented out
  90.     #    chmod +w target.exe
  91.         echo This is a command.
  92.  
  93.     produces:
  94.     This is a command.
  95.  
  96. 5) a longstanding bug in how command line macros are handled has been
  97.    fixed so something like:
  98.  
  99.     MODEL = S
  100.  
  101.     $(MODEL)main.obj: main.c
  102.         cl -A$(MODEL) -c main.c -Fo$(MODEL)main.obj
  103.  
  104.     will compile main.c into Lmain.obj if make is invoked with:
  105.     C> make45 MODEL=L
  106.  
  107.  
  108. PS. Please excuse my not having merged this readme into the general
  109. MAKE.DOC. I have been working on MAKE50 which will have all the current
  110. features and more as well as having new documentation.
  111.  
  112.     Don
  113.