summaryrefslogtreecommitdiff
path: root/dmake/readme
diff options
context:
space:
mode:
Diffstat (limited to 'dmake/readme')
-rw-r--r--dmake/readme/intro.txt40
-rw-r--r--dmake/readme/license.txt248
-rw-r--r--dmake/readme/public/install.txt203
-rw-r--r--dmake/readme/public/mac.txt43
-rw-r--r--dmake/readme/public/msdos.txt124
-rw-r--r--dmake/readme/public/os2.txt76
-rw-r--r--dmake/readme/public/qssl-qnx.txt5
-rw-r--r--dmake/readme/public/srcorg.txt74
-rw-r--r--dmake/readme/public/tos.txt31
-rw-r--r--dmake/readme/public/unix.txt171
-rw-r--r--dmake/readme/read1st.txt58
-rw-r--r--dmake/readme/release.txt196
12 files changed, 1269 insertions, 0 deletions
diff --git a/dmake/readme/intro.txt b/dmake/readme/intro.txt
new file mode 100644
index 000000000000..8e25f9523b5b
--- /dev/null
+++ b/dmake/readme/intro.txt
@@ -0,0 +1,40 @@
+DMAKE
+-----
+
+The original sources of dmake were available on http://dmake.wticorp.com.
+This site has not been reachable for some time and the source is hosted
+in the OpenOffice.org http://www.openoffice.org/ cvs now. You can view
+the source at: http://tools.openoffice.org/source/browse/tools/dmake.
+
+dmake is different from other versions of Make in that it supports significant
+enhancements. A short summary of the more important features follows:
+
+ . support for portable makefiles
+ . portable accross many platforms
+ . significantly enhanced macro facilities
+ . sophisticated inference algorithm supporting transitive closure
+ over the inference graph
+ . support for traversing the file sytem both during making of targets
+ and during inference
+ . %-meta rules for specifying rules to be used for inferring
+ prerequisites
+ . conditional macros
+ . local rule macro variables
+ . proper support for libraries
+ . parallel making of targets on architectures that support it
+ . attributed targets
+ . text diversions
+ . group recipes
+ . swapping itself to DISK under MSDOS
+ . supports MKS extended argument passing convention
+ . directory caching
+ . highly configurable
+
+Current release notes can be found in the file:
+
+ NEWS
+
+Release notes for older dmake versions (4.1 and before) can be found in
+the file:
+
+ readme/release.txt
diff --git a/dmake/readme/license.txt b/dmake/readme/license.txt
new file mode 100644
index 000000000000..3c68f02bb420
--- /dev/null
+++ b/dmake/readme/license.txt
@@ -0,0 +1,248 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The license agreements of most software companies try to keep users
+at the mercy of those companies. By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must tell them their rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License. The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications. Each
+licensee is addressed as "you".
+
+ 1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program. You may charge a fee for the physical act of
+transferring a copy.
+
+ 2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+ a) cause the modified files to carry prominent notices stating that
+ you changed the files and the date of any change; and
+
+ b) cause the whole of any work that you distribute or publish, that
+ in whole or in part contains the Program or any part thereof, either
+ with or without modifications, to be licensed at no charge to all
+ third parties under the terms of this General Public License (except
+ that you may choose to grant warranty protection to some or all
+ third parties, at your option).
+
+ c) If the modified program normally reads commands interactively when
+ run, you must cause it, when started running for such interactive use
+ in the simplest and most usual way, to print or display an
+ announcement including an appropriate copyright notice and a notice
+ that there is no warranty (or else, saying that you provide a
+ warranty) and that users may redistribute the program under these
+ conditions, and telling the user how to view a copy of this General
+ Public License.
+
+ d) You may charge a fee for the physical act of transferring a
+ copy, and you may at your option offer warranty protection in
+ exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+ 3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+ a) accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ b) accompany it with a written offer, valid for at least three
+ years, to give any third party free (except for a nominal charge
+ for the cost of distribution) a complete machine-readable copy of the
+ corresponding source code, to be distributed under the terms of
+ Paragraphs 1 and 2 above; or,
+
+ c) accompany it with the information you received as to where the
+ corresponding source code may be obtained. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it. For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+ 4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License. However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+ 5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions. You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
+ 7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+ 8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+ To do so, attach the following notices to the program. It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19xx name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License. Of course, the
+commands you use may be called something other than `show w' and `show
+c'; they could even be mouse-clicks or menu items--whatever suits your
+program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ program `Gnomovision' (a program to direct compilers to make passes
+ at assemblers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/dmake/readme/public/install.txt b/dmake/readme/public/install.txt
new file mode 100644
index 000000000000..a5ee339d2730
--- /dev/null
+++ b/dmake/readme/public/install.txt
@@ -0,0 +1,203 @@
+ DMAKE UNPACKING AND INSTALLATION INSTRUCTIONS
+
+
+We attempt to keep the information presented here accurate. However, the
+defacto location of the most up to date information is the dmake WWW site
+found at:
+
+ http://dmake.wticorp.com/
+
+DMAKE is available in several formats: a compressed tar src archive,
+a pkzip src archive, a variety of executable archives. Refer to the
+appropriate section below for unpacking instructions.
+
+
+1. UNPACKING THE DISTRIBUTION FILES
+
+ OPTION 'A' (compressed tar src archive):
+ --------------------------------------
+ Assumption: The current directory contains the latest version of dmake in
+ the file 'dm41src.tgz'.
+
+ This file is a standard GNU zip compressed tar archive. To unpack the file
+ issue the following command. gunzip is available for most UNIX platforms
+ as well as DOS.
+
+ gunzip -c dm41src.tgz | tar xf -
+
+
+ OPTION 'B' (src zip archive):
+ -----------------------------
+ Assumption: The current directory contains the latest version of DMAKE in
+ the file dm41src.zip.
+
+ To unpack the full zip distribution simply use pkunzip with the
+ following command:
+
+ pkunzip dm41src.zip
+ or
+ unzip dm41src.zip
+
+
+ Instructions for unpacking executable only versions are given on the
+ dmake WWW site.
+
+
+2. BUILDING THE EXECUTABLE
+
+ Skip this step if you have purchased a prebuilt binary distribution.
+
+ The only supported method for building a new executable from a fresh or
+ patched distribution is to use the self building scripts rather than DMAKE
+ itself. This is necessary in order to allow for the use of new DMAKE
+ features and functionality in the DMAKE 'makefile' itself. Once built
+ the DMAKE executable can be used to rebuild DMAKE.
+
+ To determine the set of supported environments issue the following
+ commands:
+
+ cd src
+ make
+
+ The output of this command will be a set of arguments representing the
+ supported environments that DMAKE can be compiled in. Choose the one
+ that most closely represents your environment and issue the command:
+
+ make environ_tag
+
+ where 'environ_tag' is from the previous list, for example on a Solaris
+ System the option is Solaris, so you would issue the command 'make Solaris'.
+
+ The script runs the appropriate set of commands; upon completion the file
+ 'dmake' or 'dmake.exe' is found in the current directory.
+ This is the binary executable.
+
+ Note: before issuing the build command please read Section 3 and decide
+ if you need or want to modify the pre-compiled value of MAKESTARTUP.
+
+ During the build it is safe to ignore any warnings that may
+ be generated by your build. If you get errors from the build then
+ it is probably the case that you have chosen a build target that is
+ not compatible with your environment.
+
+
+3. INSTALLING AND CONFIGURING THE EXECUTABLE
+
+ To install the dmake executable place the executable into the
+ location where your system normally finds executables. That is
+ place dmake into a subdirectory that is or will be in your
+ executable search PATH.
+
+ You can now issue the command 'dmake -V'; the output will be
+ similar to:
+
+ dmake - Copyright (c) 1990,...,1996 by Dennis Vadura, Version 4.10, PL 0
+
+ Default Configuration:
+ MAXPROCESSLIMIT := 10
+ MAXLINELENGTH := 8190
+ .IMPORT .IGNORE: ROOTDIR
+ .MAKEFILES : makefile.mk Makefile makefile
+ .SOURCE : .NULL
+ MAKESTARTUP := $(ROOTDIR)/usr/local/lib/dmake/startup/startup.mk
+
+ Please read the file readme/release for the latest release notes.
+
+
+ Take note of the line defining the value of MAKESTARTUP; to configure
+ the executable you must perform two steps:
+
+ 1. Copy the <dmake-distdir>/startup subtree to a suitable location,
+ 2. Tell dmake where you put it,
+
+
+ Step 1:
+ -------
+ The above example build of dmake assumes that the directory path (assuming
+ ROOTDIR is NULL)
+
+ /usr/local/lib/dmake/
+
+ is a directory which contains a copy of the "<dmake-distdir>/startup"
+ subtree. Thus to properly configure dmake so that the precompiled
+ defaults would be used you would have to perform the following:
+
+ cd <dmake-distdir>
+ mkdir /usr/local/lib/dmake
+ cp -r startup /usr/local/lib/dmake
+
+ or if you are in the MSDOS or Windows-95/NT world:
+
+ cd <dmake-distdir>
+ md \usr\local\lib\dmake
+ xcopy startup \usr\local\lib\dmake
+
+ and you are done Step 1.
+
+
+ Step 2:
+ -------
+ You must tell dmake where it is that you placed the "startup" subtree. If
+ the location is the directory that is pre-compiled into dmake then you
+ are done. If the directory where you copied the dmake subtree is not the
+ precompiled value you must either set the global environment variable
+ MAKESTARTUP to point at the new location of "startup/startup.mk" or you
+ must rebuild dmake with a new precompiled value of MAKESTARTUP. To do the
+ latter create the file:
+
+ src/startup.h
+
+ and make sure that it contains an entry similar to the following:
+
+ /* This file contains the default value of the MAKESTARTUP variable.
+ * You must set the quoted string below to the default path to the startup
+ * variable, so that it gets compiled in. LEAVE ROOTDIR at the front of
+ * the path. This allows the user to customize his environment for dmake
+ * by setting up a new ROOTDIR environment variable. */
+
+ "MAKESTARTUP := $(ROOTDIR)/usr/local/lib/dmake/startup/startup.mk",
+
+ (See src/msdos/startup.h for an example). Once set properly rerun your
+ previous build. In the rare instance that your compiler has broken
+ #include search rules, the shipped "startup.h" files are located in
+ architecture specific subdirectories as described in the file
+ "readme/srcorg".
+
+
+4. DMAKE SPECIFIC ENVIRONMENT VARIABLES
+
+ Once you have built dmake, the dmake startup directory contains the file
+ "config.mk". This file contains definitions corresponding to your installed
+ target environment for the variables:
+
+ OS - Specifies the flavour of operating system.
+ OSRELEASE - Specifies the particular version of the operating
+ system.
+ OSENVIRONMENT - An optional configuration parameter for the operating
+ system release.
+
+ Appropriate values for these variables are found in the
+
+ <install-dir>/startup/templates/<OS>/<OSRELEASE>/<OSENVIRONMENT>/template.mk
+
+ file. Select the OS, OSRELEASE, and OSENVIRONMENT that best suits your
+ setup (check readme.1st) for hints on selecting the most appropriate
+ settings.
+
+ These three variables are used to determine the correct dmake configuration
+ when dmake starts up, and loads its builtin definitions from the startup
+ subtree hierarchy. The only time you should have a need to change these
+ values or the contents of the startup subtree is when you wish to supply
+ your own customized default environment or you are building dmake for a
+ new as yet unsupported target environment.
+
+
+5. LOCALE SPECIFIC CONFIGURATION
+
+ Locale specific macro definitions that are not part of the predefined macro
+ set should be placed into the file "startup/local.mk". This ensures that
+ future dmake releases will not overwrite your prior definitions. We
+ guarantee that the file "startup/local.mk" will never be part of any future
+ dmake distribution.
+
+
diff --git a/dmake/readme/public/mac.txt b/dmake/readme/public/mac.txt
new file mode 100644
index 000000000000..34a2dca5f820
--- /dev/null
+++ b/dmake/readme/public/mac.txt
@@ -0,0 +1,43 @@
+MAC specific information for dmake. This information is provided in the
+hope that it makes it easier to install and recompile dmake in a MAC
+environment.
+
+
+1. ENVIRONMENT VARIABLE SETTINGS
+
+Only a single set of settings is available for the macintosh. There are no
+sub-selections for specific OS release and/or environment.
+
+ OS - mac
+ OSRELEASE - NULL
+ OSENVIRONMENT - NULL
+
+
+2. IMPLEMENTATION NOTES
+
+This port for the Macintosh is specifically designed to be run
+under MPW.
+
+I had to make a couple of changes to dmake in order to get it to work
+on the Mac. First, MPW provides no documented way to run a
+subprocess, so when you use dmake, you MUST use the -n option and
+execute the output. Typically, you will probably want to write a
+simple script file to do these operations for you.
+
+I added some code so that the Macintosh version of dmake can
+use UNIX-style directories to specify include paths and target
+and dependency file names. I.e., if you specify a file "/dir/file",
+dmake will look at the file "dir:file". However, Mac dmake does not
+do any translation from files specified by UNIX-style directories
+in the recipe line that gets executed. If you need to translate,
+you can use substitution commands. (For example,
+":$(RELATIVEUNIXFILE:s,/,:,)".) This code was added so one could
+execute dmake's makefile, and also so one would have an easier time
+porting other UNIX makefiles. I would suggest you stick with
+Macintosh-style directories for all other makefiles.
+
+In order to run dmake, you must set (and export) the environmental
+variable "OS" to "mac".
+
+Micah Doyle
+micah@leland.Stanford.EDU
diff --git a/dmake/readme/public/msdos.txt b/dmake/readme/public/msdos.txt
new file mode 100644
index 000000000000..72664843a644
--- /dev/null
+++ b/dmake/readme/public/msdos.txt
@@ -0,0 +1,124 @@
+MSDOS specific information for dmake. This information is provided in the
+hope that it makes it easier to install and recompile dmake under MSDOS.
+I will be happy to hear of erroneous information and will make every effort
+to correct it.
+
+NOTE: If you are seeking information for Win32 compiles please refer to
+ the file "readme/winnt".
+
+
+1. ENVIRONMENT VARIABLE SETTINGS
+
+There are many environment variable settings available for MSDOS. Each
+option is described below.
+
+ OS - msdos
+
+ OSRELEASE - borland # Borland compilers
+ - microsft # Microsoft compilers
+ - zortech # zortech compilers (unsupported)
+
+ OSENVIRONMENT - tcc20 # Borland Turbo C 2.0
+ - bcc30 # Borland C++ V3.0 MSDOS compile
+ - bcc40 # Borland C++ V4.0 MSDOS compile
+ - bcc45 # Borland C++ V4.5 MSDOS compile
+ - bcc50 # Borland C++ V5.0 MSDOS compile
+
+ - msc51 # Microsoft 5.1 Compiler MSDOS compile
+ - msc60 # Microsoft 6.0 Compiler MSDOS compile
+
+ MSC_VER - 5.1 # Microsoft Compiler version
+ - 6.0 # Microsoft Compiler version
+
+
+2. IMPLEMENTATION NOTES
+
+Bootstrapping the binary:
+-------------------------
+ A make.bat file is provided to bootstrap the binary. The file contains
+ several targets for bootstrapping. Invoking the batch file with no
+ arguments lists the possibilities shown below.
+
+ INDEX: You must specify one of:
+ tccswp - Turbo C 2.0 compile of swapping dmake.
+ bcc30swp - Borland C++ 3.0 compile of swapping dmake.
+ bcc40swp - Borland C++ 4.0 compile of swapping dmake.
+ bcc45swp - Borland C++ 4.5 compile of swapping dmake.
+ bcc50swp - Borland C++ 5.0 compile of swapping dmake.
+
+ msc51 - Microsoft C 5.1 compile.
+ msc51swp - Microsoft C 5.1, MASM 5.1 compile of swapping dmake.
+ msc60 - Microsoft C 6.0 compile.
+ msc60swp - Microsoft C 6.0, MASM 5.1 compile of swapping dmake.
+
+ Based on the compiler you have installed and whether or not you
+ want the swapping version of dmake, you should select the appropriate
+ target and issue 'make.bat target'.
+
+ The batch file runs a second batch script that comes with the distribution
+ which compiles the sources using the appropriate compiler and flags. The
+ MSC Versions of the batch files should not require any further user
+ intervention during the build. The Borland versions, as a final step,
+ invoke tlink with two response files. The second of these response files,
+ named in msdos/borland/{bcc*,tcc20}/mk*.bat, contains absolute path names to
+ Borland's libraries. You likely need to edit these before getting a
+ successful binary linked. The reason for this is that not all of us
+ install the Borland compiler in the same place.
+
+ Note that the file msdos/exec.uue is a uuencoded version of a BCC++
+ compiled exec.obj (from exec.asm). If you do not have an assembler
+ either microsoft MASM or Borland TASM (or some other), you can uudecode
+ this file and put it into src/objects/exec.obj. The build will then
+ link against it to build your binary.
+
+
+Using dmake to Make itself:
+---------------------------
+ See the file "readme/install" for information on building dmake by using
+ dmake itself. Once successfully built using the presupplied scripts it
+ should be straight forward to rebuild dmake.
+
+
+Memory Requirements and Swapping:
+---------------------------------
+ The swapping code currently only swaps to DISK, there are hooks
+ in the code to accomodate XMS and EMS, but have not been used (and
+ probably never will).
+
+ It appears that a ramdisk seems to work just fine. If anyone
+ wishes to fill in the hooks please do so and send us the differences.
+
+
+^C and stopping a make:
+-----------------------
+ Thanks to the efforts of Len Reed, appears to now work. I have been unable
+ to hang my machine if it's swapped out and I hit ^C a couple thousand times.
+
+
+Other notes:
+------------
+ dmake does not care if you are running command.com or some other command
+ interpretter, you must however specify the proper values of the environment
+ variables SHELL, SHELLFLAGS, GROUPSHELL, and GROUPFLAGS in order for things
+ to work correctly. Read the man page FIRST, if you still have trouble
+ then send email.
+
+ Group recipes under DOS that use command.com as the command interpretter
+ require you to set the GROUPSUFFIX macro.
+
+ As shipped the startup.mk files for the DOS version try to figure out what
+ command interpretter you are using and set things up appropriately.
+ Two command interpretters are supported in the shipped startup.mk file,
+ command.com, and the MKS Korn shell.
+
+ The dos version of dmake contains one builtin command. noop which
+ simply ignores the remainder of the line and always retuns success,
+
+ dmake supports the MKS argument passing conventions. The facility is
+ enabled by setting .MKSARGS:=1. It is set by default in the startup.mk file
+ if an MKS Korn shell is detected as being the active command interpretter.
+
+ At this time there are no plans to support the other popular UNIX like
+ argument passing conventions available under DOS. We recommend you get
+ a copy of the MKS Toolkit from Mortice Kern Systems in Waterloo, Ontario,
+ Canada [http://www.mks.com/].
diff --git a/dmake/readme/public/os2.txt b/dmake/readme/public/os2.txt
new file mode 100644
index 000000000000..5acf4cc6ab0a
--- /dev/null
+++ b/dmake/readme/public/os2.txt
@@ -0,0 +1,76 @@
+OS/2 specific information for dmake. This information is provided in the
+hope that it makes it easier to install and recompile dmake in a OS/2
+environment.
+
+Notes on the OS/2 implementation of dmake:
+==========================================
+
+As shipped the DOS versions of dmake will run under OS/2 protected mode.
+However, support for a full OS/2 version is also provided. The OS/2 version
+will run in parallel under OS/2.
+
+Bootstrapping the binary:
+-------------------------
+ A make.cmd file is provided to bootstrap the binary. The file contains
+ several targets for bootstrapping. Invoking the batch file with no
+ arguments lists the possibilities shown below.
+
+ INDEX: You must specify one of:
+ ibm - IBM C2 compile.
+
+ The only supported compiler under OS/2 is the Visual Age ICC compiler.
+ I have tested the build using this compiler. The resulting binary
+ performs proper directory caching and file-name case mapping for cached
+ directories and is capable of parallel target builds. The only known
+ limitation of the OS/2 implementation is the treatment of library time
+ stamps. Libraries do not have time stamps on members and the timestamp
+ of the library is used instead.
+
+
+OS/2 Specifics
+--------------
+
+ There is a small number of OS/2 specific features that need to be
+ stated.
+
+ 1. The environment variables TMP as well as TMPDIR are checked for the
+ location of the directory where dmake should place any temporary files.
+ TMPDIR is checked before TMP.
+
+ 2. Appropriate limits are setup for MAXPROCESSES and buffer sizes etc.
+ See output of 'dmake -V'.
+
+ 3. By default dmake will look for the startup.mk file in the path:
+
+ $(ROOTDIR)/dmake/startup/startup.mk
+
+ This is more in keeping with OS/2 philosophy. You may still rename
+ and put it anywhere else you like by defining the MAKESTARTUP
+ environment variable.
+
+ 4. Swapping the dmake binary to disk is not supported under OS/2.
+
+
+Other notes:
+------------
+ dmake does not care if you are running cmd.exe or some other command
+ interpretter, you must however specify the proper values of the environment
+ variables SHELL, SHELLFLAGS, GROUPSHELL, and GROUPFLAGS in order for things
+ to work correctly. Read the man page first.
+
+ Group recipes under OS/2 that use cmd.exe as the command interpretter
+ require you to set the GROUPSUFFIX macro.
+
+ As shipped the startup.mk files try to figure out what
+ command interpretter you are using and set things up appropriately.
+ Two command interpretters are supported in the shipped startup.mk file,
+ cmd.exe (via COMSPEC), and the MKS Korn shell.
+
+ dmake does not contain any builtin commands. It gets all commands it
+ executes from an external file system. It is therefore most useful if it
+ is used in conjunction with an environment similar to that provided by
+ the MKS Tool kit, or equivalent.
+
+ dmake now supports the MKS argument passing conventions. The facility is
+ enabled by setting .MKSARGS:=1 and is set by default in the startup.mk file
+ if an MKS Korn shell is detected as being the active command interpretter.
diff --git a/dmake/readme/public/qssl-qnx.txt b/dmake/readme/public/qssl-qnx.txt
new file mode 100644
index 000000000000..80fc8b56aa4d
--- /dev/null
+++ b/dmake/readme/public/qssl-qnx.txt
@@ -0,0 +1,5 @@
+QNX differs from UNIX only in that the library format is that of MSDOS and
+as such the normal stating of library members does not work. QNX versions of
+dmake stat the library instead of the members (as does the MSDOS
+implementation). Otherwise see the readme/unix file for further unix related
+information.
diff --git a/dmake/readme/public/srcorg.txt b/dmake/readme/public/srcorg.txt
new file mode 100644
index 000000000000..89ff914eec4b
--- /dev/null
+++ b/dmake/readme/public/srcorg.txt
@@ -0,0 +1,74 @@
+SOURCE CODE ORGANIZATION:
+-------------------------
+The source code is organized as follows:
+
+ dmake [source for all common functions]
+ |
+ |
+ ----------------------------
+ | | | | |
+ unix tos qnx os2 msdos [source for OS specific functions]
+ | | |
+ -------------------- | -------------------
+ | | | | | | |
+386ix bsd43 sysvr[134] | tccdos bccdos mscdos [source for OSRELEASE
+ | | | specific functions]
+ | --------- ------------------
+ | | | | | |
+ | ibm mscdos bcc30 bcc32 bcc40
+ |
+ |
+ |
+ --------
+ | |
+ uw vf [source for OSENVIRONMENT specific functions]
+
+
+Each of the directories (eg. bsd43, mscdos, tccdos, and sysvr3) contain source
+that is specific to that release of the OS (and possibly C-library)
+
+
+CREATING A NEW VERSION:
+-----------------------
+To create yet another version of dmake you should follow the following steps.
+
+The sysvr3 version as sent is the base version, all dmake versions must provide
+the equivalent of the functions defined in the sysvr3 directory, and MUST
+provide the same semantics (MSDOS archive lib searches are an exception since
+we cannot search libraries for timestamps in MSDOS, Actually the MKS version
+of dmake does this, I don't have the inclination to add this code though).
+
+1. Create a new directory for the version you will be making at the level
+ that is appropriate. If it is a new OS then add the dir at the top level,
+ if it is a new version of UNIX then add it below the unix directory.
+
+2. Copy the files from the unix and unix/sysvr3 directories to the new dir.
+ (Or from any other directory sub-tree that is more appropriate)
+
+3. Not all OS/OSRELEASE combinations are compatible so in order to make
+ dmake on each, the particular directory may contain C-source for functions
+ present in the SVID SysV R3 distribution which are used by dmake but are
+ not supplied by the C-library in the target system. For example the bsd43
+ directory contains source for tempnam.c since it is not provided with
+ the BSD C-library. Before writing a new version of the source file
+ check the other directories to see if one already exists.
+
+4. Under some systems the standard include files may be missing or incorrect.
+ eg. under BSD stdarg.h and string.h. If this is the case
+ you should create the proper .h file in the proper directory.
+ This works as expected as the compile line includes the flag -Idir
+ where dir is the configuration dir, (bsd43 for example) and any
+ standard include files will be searched for in dir before the compiler
+ looks in the normal places (if you have a sane compiler :-).
+
+5. Modify dmake.sh to contain the appropriate C compiler flags and link command
+ and to include any specific C files that you have had to add for this
+ version of dmake, and run the result through the shell.
+ (make the same changes to config.mk so that once you have a working copy of
+ dmake you can use it to bring itself up to date)
+
+6. Send me the changes :-) so that I can incorporate them into future
+ distributions.
+
+7. This should be all that you require to create a new version of dmake.
+ If you have any questions send e-mail to dvadura@plg.uwaterloo.ca
diff --git a/dmake/readme/public/tos.txt b/dmake/readme/public/tos.txt
new file mode 100644
index 000000000000..ddcc43104483
--- /dev/null
+++ b/dmake/readme/public/tos.txt
@@ -0,0 +1,31 @@
+Atari TOS specific information for dmake. This information is provided in the
+hope that it makes it easier to install and recompile dmake in a TOS
+environment. I do not own an ST. As a result I rely on others to insure that
+this version of dmake works as advertized. If you have any problems with it
+please fix them and send me the differences so that I can incorporate them
+into future releases and patches.
+
+
+1. ENVIRONMENT VARIABLE SETTINGS
+
+Only a single set of settings is available for Atari TOS. There are no
+sub-selections for specific OS release and/or environment.
+
+ OS - tos
+ OSRELEASE - NULL
+ OSENVIRONMENT - NULL
+
+
+2. IMPLEMENTATION NOTES
+
+The code to compile on an Atari-ST using GCC was supplied by Edgar Roeder
+(roeder@cs.uni-sb.de). I do not have an ST on which to verify the
+distribution sources but I have no reason to believe them to not work.
+If there are any problems please let Edgar or myself know.
+
+I know of no bugs or limitation to the Atari-ST implementation. Note that
+it is similar to the DOS version but it does not swap itself out. This does
+not appear to be as much of a problem on the Atari as it is on MSDOS boxes :-).
+See the msdos specific info file for further information.
+
+-dennis
diff --git a/dmake/readme/public/unix.txt b/dmake/readme/public/unix.txt
new file mode 100644
index 000000000000..b50ab9afad1c
--- /dev/null
+++ b/dmake/readme/public/unix.txt
@@ -0,0 +1,171 @@
+UNIX specific information for dmake. This information is provided in the
+hope that it makes it easier to install and recompile dmake under UNIX.
+I will be happy to hear of erroneous information and will make every effort
+to correct it.
+
+
+1. ENVIRONMENT VARIABLE SETTINGS
+
+There are many environment variable settings available for UNIX. Each
+option is described below.
+
+ OS - unix
+
+ OSRELEASE - bsd43 # generic BSD 4.3
+ - solaris # Solaris environments
+ - sysvr1 # System V R1
+ - sysvr3 # System V R3
+ - sysvr4 # System V R4
+ - xenix # Xenix
+ - 386ix # Sun IPX 386 boxen
+ - coherent # Coherent...
+ - qnx # QNX
+
+ OSENVIRONMENT - uw # U of Waterloo mfcf environment for BSD4.3
+ - vf # for environments needing vfprintf
+ - pwd # for environments needing new pwd
+ - gcc # for GCC compiles with Solaris2.3 and greater
+ - verxx # for specific OS versions.
+
+
+The table below lists valid combinations for settings of OS, OSRELEASE, and
+OSENVIRONMENT.
+
+ OS OSRELEASE OSENVIRONMENT
+ -- --------- -------------
+ unix bsd43
+ unix bsd43 uw
+ unix bsd43 vf
+ unix solaris
+ unix solaris gcc
+ unix sysvr1
+ unix sysvr3
+ unix sysvr3 pwd
+ unix sysvr4
+ unix xenix
+ unix xenix pwd
+ unix 386ix
+ unix coherent ver40
+ unix coherent ver42
+
+You must set OS and OSRELEASE, OSENVIRONMENT to correspond to one of the
+configurations in the above table.
+
+
+2. IMPLEMENTATION NOTES
+
+Bootstrapping the binary:
+-------------------------
+ A 'makefile' file is provided to bootstrap the binary. The file contains
+ many targets for bootstrapping. Issuing 'make' will provide the list of
+ possible targets that can be built. A restricted sample is shown below:
+
+ INDEX: You must specify 'make target' where target is one of:
+ -------------
+ make bsd43 - Generic BSD 4.3 System
+ make bsd43uw - Generic BSD 4.3 at U of Waterloo
+ make bsd43vf - Generic BSD 4.3 that needs vfprintf
+ make sysvr4 - Generic SysV R4 UNIX System
+ make sysvr3 - Generic SysV R3 UNIX System
+ make sysvr3pwd - Generic SysV R3 UNIX System, our PWD
+ make sysvr1 - Generic SysV R1 UNIX System
+ make dynix - Sequent DYNIX System
+ make linux - Linux
+ make ultrix - Ultrix 3.0 System
+ make mips - Any MIPS System
+ make coherent40 - Any Coherent Version 4.0 System
+ make coherent42 - Any Coherent Version 4.2 or greater System
+ make hpux - HP Unix
+ make 386ix - 386/ix (SysV R3) System
+ make xenix - 386 Xenix System
+ make xenixpwd - 386 Xenix System, our PWD
+ make aix - IBM RS6000/AIX System
+ make Solaris - SUN Solaris 1.0 to 2.0
+ make Solaris2.1 - SUN Solaris 2.1 or greater
+ make gccSolaris2.1 - SUN Solaris 2.1 or greater with gcc
+
+ The above shows only the possible builds for UNIX like operating systems.
+ Choose the one that best suits your needs and issue the command
+
+ 'make target'
+
+
+Using dmake to Make itself:
+---------------------------
+ If you use dmake to make itself you must first set a number of makefile
+ control variables, either through the environment or on the command line.
+
+ The following variables must be set:
+
+ OS - defines operating system (must be set)
+ OSRELEASE - particular version of it.
+ OSENVIRNOMENT - more customization
+
+ These three variables should be defined in your environment. Valid values
+ for UNIX are listed above in Section 1. You must chose one a setting from
+ the table that best matches your system.
+
+ Once set simply issue the command: 'dmake' and the sources will be
+ automatically rebuilt. You do not need to specify a target when you
+ use dmake and the environment variables are correctly set.
+
+
+.NAMEMAX and length of file names:
+----------------------------------
+dmake assumes that no file name component has a name longer than .NAMEMAX
+(a user-settable variable, see the man page). Files whose basename is
+longer than .NAMEMAX return a timestamp of 0 when statted. The reason for
+this test is to handle broken versions of stat that return non-zero times
+for stating files that are longer than the legal file name length but for
+which a file whose name is the legal maximum file name length and is a prefix
+of the longer name exists. This used to cause infinite loops in the inference
+engine.
+
+As a result the value of .NAMEMAX is important. dmake attempts to determine
+it at from your system header files when compiled however sometimes even these
+may be erroneous thus as a result as of dmake 4.0 users may set the value of
+.NAMEMAX to any value they wish.
+
+
+Library Name Length:
+--------------------
+By default the maximum length of library member names is defined in the the
+ar.h header file and is usually 14. Elf libraries allow for a arbitrarily
+long member names, if your archiver supports the elf archiver extension for
+long member names then edit the file unix/arlib.c and set the CHECKELF define
+to indicate that the Elf archiver extension is to be checked for.
+
+If Elf is not supported and your archiver truncates member names you should
+set (in unix/arlib.c) the macro AR_TRUNCATE_MEMBER_NAMES. dmake will then
+also truncate member names and perform a length limitted comparison when
+scanning the library for matching member names.
+
+
+UNIX Sysv R3 and getcwd:
+------------------------
+Some versions of UNIX SysV R3 and Xenix use the popen call to capture the
+output of pwd when invoking the C library function getcwd(). These versions
+of the function cause dmake to terminate with the "lost a child" message
+due to the fact that the parent dmake process may catch the pwd and not
+recognize it as a child. For systems that have this problem use the version
+of dmake that supplies its own getcwd function. The settings are:
+
+ OS = unix
+ OSRELEASE = sysvr3
+ OSENVIRONMENT = pwd
+
+It is directly available through the 'makefile' by typing one of:
+
+ make sysvr3pwd
+ make xenixpwd
+
+both include the getcwd code but the xenixpwd target compiles for a Xenix
+system.
+
+
+UNIX and "limits.h":
+--------------------
+Some compilers do not yet provide the "limits.h" file, if yours is one of
+these then simply copy the file "namemax.h" in the source root directory to
+"limits.h". Make sure the length of a file name is correctly set in
+"limits.h" as it is processed prior to "namemax.h".
diff --git a/dmake/readme/read1st.txt b/dmake/readme/read1st.txt
new file mode 100644
index 000000000000..1ff1229e6b32
--- /dev/null
+++ b/dmake/readme/read1st.txt
@@ -0,0 +1,58 @@
+DMAKE 4.12
+==========
+
+This directory tree contains a number of files. Here is a short
+description of what each file contains so that you do not need to
+search as much. There is also a recommended order for reading them.
+
+ read1st.txt - This file; generic information.
+ intro.txt - Short note describing what 'dmake' is and where to
+ get it from.
+ release.txt - Changes of previous releases, and release specific
+ notes. (Not longer continued.)
+ ../NEWS - Changes from previous release. (Continuation of
+ release.txt.)
+ ../man/ - directory containing DMAKE manual page.
+
+ public/ - Old build and installation instructions
+ for the Dmake 4.1 public release. As of Dmake 4.2
+ dmake switched to an autotools based build system
+ and these instructions are not longer valid for
+ operating systems that are supported by the autotools
+ system.
+ If you are on a system that is not supported you
+ might still find some useful information there.
+
+Building Dmake
+==============
+
+With autotools
+--------------
+Building dmake on systems that are supported by the autotools build system
+only requires the usual "./configure && make && make install" command.
+The configure command will notify you when your platform is not supported.
+
+With Microsoft C++ compiler
+---------------------------
+For MS Visual C++ 6 and up run "make.bat win95-vpp40" in a command shell.
+This should create a dmake.exe in the top-level directory.
+
+It is possible to rename this to, say, dmake0.exe, delete the objects/
+sub-directory and then simply run "dmake0.exe" to build a new dmake.exe.
+Note that it is not necessary to have dmake rebuild itself in this way,
+but it is a nice test that your new dmake is working to see that it can.
+
+To install dmake, simply copy dmake.exe and the startup/ sub-directory to
+a directory of your choice. You may also want to copy the man/
+sub-directory for future access to the manual page.
+
+
+All other systems might look in the public/ directory for usefull hints.
+
+
+The original sources of dmake were available on http://dmake.wticorp.com.
+This site has not been reachable for some time and the source is hosted
+in the OpenOffice.org http://www.openoffice.org/ cvs now. You can view
+the source at: http://tools.openoffice.org/source/browse/tools/dmake.
+Please send questions regarding dmake to the tools project mailing list
+at dev@tools.openoffice.org.
diff --git a/dmake/readme/release.txt b/dmake/readme/release.txt
new file mode 100644
index 000000000000..41b95097679c
--- /dev/null
+++ b/dmake/readme/release.txt
@@ -0,0 +1,196 @@
+This file is superseded/continued by the toplevel NEWS file.
+
+DMAKE Version 4.1
+=================
+FINAL FREE RELEASE OF DMAKE, REPLACES VERSION 4.0
+
+Nature: This distribution advances dmake to Version 4.1, patch level 0.
+------- This release adds significant functionality and eliminates
+ bugs that were introduced with release 4.0.
+
+
+DETAILS OF ENHANCEMENTS/TWEAKS:
+===============================
+
+BUG FIXES:
+----------
+
+1. General clean up all over to fix small incompatibilities and obvious
+ typos.
+
+2. Fixed bug in getinp.c where buffer was being erroneously overwritten,
+ this caused the invalidation of the return address on the stack on
+ DOS systems.
+
+3. Fixed a bug that caused the "<target> is up to date" message to be
+ suppressed.
+
+4. Fixed a bug involving the value of $@ in conjunction with dynamic
+ prerequisites.
+
+5. Relegated the warning associated with duplicate entries in prerequisite
+ lists to a non-essential warning. Added an option flag -Vw to display
+ it if you wish to check your makefile for duplicate entries. Either way
+ the parser ignores duplicates.
+
+6. Better default action on checking out RCS targets. If an RCS target has
+ no directory prefix of its own it is checked out into the directory
+ which contains the RCS subdirectory, otherwise it ends up in its directory
+ qualified location.
+
+7. Improved the speed of lookups in the directory cache; handle mixed case
+ file name entries on OS/2 and Win95/NT.
+
+8. Improved prerequisite list generation for long prerequisite lists.
+
+9. Rearanged startup macro files to form an architectural hierarchy.
+ This greatly simplifies the maintenance of the startup files. They
+ might even be right at some point in the future. Please let me know if
+ you encounter difficulties, as I don't have access to all possible
+ platforms, this sub-hierarchy is bound to have ommisions at this release
+ and hence is intended to be evolutionary over time.
+
+10. A build that only touches targets (-t) uses the same algorithm to decide
+ valid names as a normal build.
+
+11. Conditional macro assignments fixed, and now work for builtin macro
+ variables as well.
+
+
+NEW FEATURES:
+-------------
+
+0. Complete reorganization of Dmake STARTUP scripts. Please refer to the
+ installation notes for details. THIS ONE IS IMPORTANT!!!
+
+1. Support for long archive member names if Elf is available, plus better
+ support for archivers that truncate member names (see comments in
+ unix/arlib.c for details).
+
+2. Added variable MAKEVERSION which contains a string indicating the current
+ version of dmake.
+
+3. Added the .EXECUTE attribute, see man page for details.
+
+4. Added the .ERRREMOVE attribute, see man page for details.
+
+5. Added support for gmake style if/else/endif, but only if not part of
+ a Group recipe.
+
+6. Added initial build target for Coherent version 4.2 UNIX
+ and for Windows-NT/Windows-95 32-bit app using Borland C++ 4.0,4.5, 5.0,
+ and Microsoft Visual C++ 4.0.
+
+7. MSDOS version now supports two builtin runtime commands, noop, and echo.
+
+8. Added new macro $(uniq list) which returns a sorted version of the
+ white space separated tokens in list such that there are no repetitions.
+
+9. Added the function macro $(echo list) which simply returns list.
+ This is most useful in conjunction with the new $(foreach ...)
+ function macro.
+
+10. Added gmake style function macro
+
+ $(foreach,var,list data)
+
+ where var and list are expanded, and the result is the concatenation of
+ expanding data with var being set to each white space separated token in
+ list in turn. For example:
+
+ list = a b c
+ all :
+ echo [$(foreach,i,$(list) [$i])]
+
+ will output
+
+ [[a] [b] [c]]
+
+ The iterator variable is defined as a local variable to this foreach
+ instance. The following expression illustrates this:
+
+ $(foreach,i,$(foreach,i,$(sort c a b) root/$i) [$i/f.h])
+
+ when evaluated the result is:
+
+ [root/a/f.h] [root/b/f.h] [root/c/f.h]
+
+ The specification of list must be a valid macro expression, such as:
+
+ $($(assign list=a b c))
+ $(sort d a b c)
+ $(echo a b c)
+
+ and cannot just be the list itself. That is, the following foreach
+ expression:
+
+ $(foreach,i,a b c [$i])
+
+ yields:
+
+ "b c [a]"
+
+ when evaluated.
+
+11. Added the macro $(and list).
+
+12. Added the macro $(or list).
+
+13. Added the macro $(not term).
+
+14. Added the .NOINFER attribute to the .INCLUDE directive. When specified
+ any prerequisite of the .INCLUDE directive which cannot be found in
+ the .INCLUDEDIRS search list is not automatically made.
+
+15. Improved the handling of internal macros for proper functioning of the *=
+ and *:= assignment constructs. Macros that are internally initially
+ defined are considered to be undefined for the purpose of *= and *:=
+ assignment until they are the target of an explicit assignment operation.
+
+16. Improved the caching of file names, and their matching on case insensitive
+ file systems. Two control macros help to manage the functionality:
+
+ .DIRCACHE := yes
+
+ Implies that the directory cache will be used. This is on by default for
+ systems that support the reading of directories. Setting the value of this
+ macro to 'no' is equivalent to supplying the '-d' command line switch.
+
+ .DIRCACHERESPCASE := yes
+
+ Causes dmake to respect the case of the directory entries when the cache
+ is enabled, thereby treating directory entries in a case sensitive manner.
+ Setting this to 'no' disables the matching of case. This macro has effect
+ only if .DIRCACHE := yes. Otherwise the facilities provided by the native
+ OS are used to match file names using 'stat'.
+
+17. Added parameterized user defined function macros. Yes it's true
+ you may now define your own parametized function macros. Here is
+ how it works. Any macro that is not a predefined function macro and
+ is invoked with parameters is looked up as a user defined function
+ macro. A new macro scope is created. The n'th argument to the
+ macro is then assigned to the value of the the macro $n where n is 0
+ for the first argument, 1 for the second argument and so on. The
+ argument is expanded before it is assigned. The original macro is
+ then expanded. For example:
+
+ FOO = a $0 b $1 c $2 d
+ echo :; $(FOO x y z)
+
+ Will produce the result string "a z b y c z d". The
+ expansion of $(FOO) on it's own behaves as expected and returns the
+ string "a b c d" (assuming that each of $0, $1, $2
+ are undefined). The only restriction when specifying function
+ macro arguments is as before: they cannot contain spaces
+ themselves.
+
+
+ACKNOWLEDGEMENTS:
+=================
+ Thanks to all who submitted code for new features, suggestions for
+ improvements, and bug fixes. I have tried to make sure no gotchas
+ remain, if you encounter problems installing or running dmake please
+ let me know. As always, I am always happy to receive e-mail.
+
+ Many have contributed suggestions and bug fixes that make this
+ release possible. The NET thanks you.