summaryrefslogtreecommitdiff
path: root/dmake/readme/release.txt
diff options
context:
space:
mode:
Diffstat (limited to 'dmake/readme/release.txt')
-rw-r--r--dmake/readme/release.txt196
1 files changed, 196 insertions, 0 deletions
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.