Category : Miscellaneous Language Source Code
Archive   : XLISP21D.ZIP
Filename : README

 
Output of file : README contained in archive : XLISP21D.ZIP
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


  3 Responses to “Category : Miscellaneous Language Source Code
Archive   : XLISP21D.ZIP
Filename : README

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/