home *** CD-ROM | disk | FTP | other *** search
- NDMAKE version 4.5
- ------------------
- Copyright (C) 1985, 1986 D. G. Kneller
- All rights reserved.
-
-
-
- This README file describes the differences between NDMAKE 4.3 (which
- has been documented in MAKE.DOC) and NDMAKE 4.5, which is the newer
- version but has not been completely documented.
-
- Here are several NDMAKE executables, each slightly different. The release
- version of NDMAKE is version 4.5. The executable is MAKE45.EXE.
- A large model (1 Meg of data space) version of 4.5 has also been included
- and is called MAKE45L.EXE. As the 4.5 version is relatively new and
- involved a complete rewrite of NDMAKE's internals, the older version 4.3
- is also included in case 4.5 turns out to be buggy.
-
- In MAKE.DOC there are some references to a demo version of NDMAKE 4.3
- called MAKE43D. This version no longer exists and the documentation
- pretaining to it (marked with a | in the right column) can be ignored.
-
-
-
- Changes from 4.3 to 4.5
- ------------------------
- 1) total rewrite of internals for 30 - 50 % more speed.
- 2) new features to macros:
- - recursively defined macro *names*. For example:
- LOBJS = Lmain.obj Lsub.obj
- SOBJS = Smain.obj Ssub.obj
- MODEL = L
- OBJS = ${$(MODEL)OBJS}
-
- and $(OBJS) will evaluate to $(LOBJS).
-
- - string replacement in macros
- For string replacement, the syntax for the macro is
- "${name:s1=s2)". The macro "name" is evaluated and
- occurrences of string "s1" are replaced with string
- "s2". As an example:
-
- XXOBJS = XXmain.obj XXsub.obj
- MODEL = S
- OBJS = $(XXOBJS:XX=${MODEL})
-
- When $(OBJS) are referenced, the XX string will be
- replaced with the ${MODEL} string. In this case
- $(OBJS) will be "Smain.obj Ssub.obj".
-
- Or you could have:
-
- OBJS = main.obj sub.obj
- SRCS = $(OBJS:.obj=.c)
-
- In which case SRCS are "main.c sub.c".
-
-
- Currently, the string replacement only works properly on
- "simple" macro names, not on recursively defined names.
-
- 3) additional names are supported for automatic response files. Previously
- NDMAKE would generate response files automatically only for commands
- that were named "link" and "lib". Now it is possible to add other names
- to the list of acceptable names. The special targets .RESPONSE_LINK and
- .RESPONSE_LIB are a list of acceptable names for link and lib response
- files, respectively. For example:
-
- .RESPONSE_LINK: tlink link4
- .RESPONSE_LIB: tlib
-
- will cause NDMAKE to generate link response files for "link", "tlink"
- and "link4", and lib response files for "lib" and "tlib". The response
- files are formated for Microsoft "link" and "lib".
-
- 4) the comment character `#' is treated as does UNIX make -- in a
- shell line, the comment character is passed. So:
-
- target:
- echo ### This will be echoed
-
- Will produce:
- ### This will be echoed
-
- To comment out a shell line, the comment character has to be the first
- character in the line:
-
- target:
- # The next shell line has been commented out
- # chmod +w target.exe
- echo This is a command.
-
- produces:
- This is a command.
-
- 5) a longstanding bug in how command line macros are handled has been
- fixed so something like:
-
- MODEL = S
-
- $(MODEL)main.obj: main.c
- cl -A$(MODEL) -c main.c -Fo$(MODEL)main.obj
-
- will compile main.c into Lmain.obj if make is invoked with:
- C> make45 MODEL=L
-
-
- PS. Please excuse my not having merged this readme into the general
- MAKE.DOC. I have been working on MAKE50 which will have all the current
- features and more as well as having new documentation.
-
- Don
-