Dec 232017
New shware ver. of unix-like prog util.
File NDMAKE45.ZIP from The Programmer’s Corner in
Category Miscellaneous Language Source Code
New shware ver. of unix-like prog util.
File Name File Size Zip Size Zip Type
MAKE.DOC 53458 15546 deflated
MAKE.INI 2243 994 deflated
MAKE43.EXE 33881 19724 deflated
MAKE45.EXE 35979 20860 deflated
MAKE45L.EXE 47451 24487 deflated
README 3703 1588 deflated
TOUCH.DOC 1727 706 deflated
TOUCH.EXE 6561 4038 deflated

Download File NDMAKE45.ZIP Here

Contents of the README file

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

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

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

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:

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:

#The next shell line has been commented out
#chmod +w target.exe
echo This is a command.

This is a command.

5) a longstanding bug in how command line macros are handled has been
fixed so something like:


$(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.


 December 23, 2017  Add comments

Leave a Reply