v15i052: dmake version 3.6 (part 00/25)
Dennis Vadura
dvadura at watdragon.waterloo.edu
Mon Oct 15 11:35:03 AEST 1990
Posting-number: Volume 15, Issue 52
Submitted-by: Dennis Vadura <dvadura at watdragon.waterloo.edu>
Archive-name: dmake-3.6/part00
#!/bin/sh
# This is the DMAKE version 3.6 distribution. DMAKE is a Make like tool that
# has been written by me and has been used by individuals at the University of
# Waterloo for about a year and a half now. This release replaces the previous
# version 3.5 release which is no longer supported. Please read the file
# 'readme/release' which accompanies this distribution and describes details
# of this release (This note is found in readme/cover).
#
# This release addresses a claim made by Mortice Kern Systems of Waterloo,
# Ontario, Canada. See below or the file readme/release for details. I
# therefore ask that all versions previous versions of dmake distributed as
# version 3.5 patch level 1 and patch level 2 be removed from any archive
# sites on which they reside and be replaced by this release.
#
# dmake is available for anonymous ftp from watmsg.uwaterloo.ca address is
# 129.97.129.9. It is in the pub/src directory, set your mode to binary,
# and copy either:
#
# dmake-3.6.tar.Z - compressed tar format
# dmake-3.6.zoo - zoo archive
#
# dmake is different from other versions of make in that it supports significant
# enhancements (See the man page). A short summary of the more important
# ones follows:
#
# . support for portable makefiles
# . runs on many platforms (DOS, generic unix [sysv and bsd4.3],
# apollo, and others)
# . significantly enhanced macro facilities
# . transitive closure on inference graph
# . sophisticated inference algorithm
# . 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
# . highly configurable
# . 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
#
# All code found in this distribution is original and written by me except where
# noted in the source and the following:
#
# - dbug package from Fred Fish (dmake DEBUG=1, to make a debugging version
# of dmake)
#
# - malloc.c package, came from the net originally, author name wasn't
# on it when I found it, I can't even remember where I got it.
# -----------------------------------------------------------------------------
#
# DMAKE VERSION 3.6 RELEASE NOTES (readme/release file in distribution):
#
# MANDATORY REPLACEMENT FOR VERSION 3.5 PATCH LEVEL 1 and PATCH LEVEL 2
#
# Nature: This version of dmake MUST replace all versions of dmake 3.5 patch
# ------- levels 1 and 2, and all versions of dmake 3.5 patch level 1 and 2
# must then be DELETED. This release addresses several issues.
#
# 1. Copyright infringement claim made by MKS, of Waterloo.
# 2. Modifications to text diversion processing.
# 3. Support for DOS Swapping, and MKS argument passing.
# 4. Other minor nits and tweaks.
#
# This distribution advances dmake to Version 3.6, patch level 1. This
# version is certified free of MKS copyrighted code. See below for
# details.
#
# Availability:
# -------------
# dmake is available via anonymous ftp from watmsg.uwaterloo.edu
# (129.97.129.9) as:
#
# pub/src/dmake-3.6.tar.Z
# pub/src/dmake-3.6.zoo
#
# and comes in either a compressed tar or zoo archive take your pick.
#
# Acknowledgements:
# -----------------
# Thanks to all who submitted code for new features, suggestions for
# improvements, and bug fixes. Special thanks to those who helped
# test this version of dmake on the many platforms that the
# distribution now supports. 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.
#
#
# DETAILS OF CHANGES:
# ===================
#
# MKS Copyright Infringement:
# ---------------------------
# Due to a misunderstanding over past contractual obligations between
# myself and Mortice Kern Systems of Waterloo, Ontario, Canada (MKS),
# the original posting of dmake unitentionally contains some code
# derived from MKS proprietary code.
#
# This version rectifies that situation and MUST replace all versions
# of DMAKE and DMAKE patches that have been previously distributed.
# Please delete from any archive site versions of DMAKE source code
# labeled 3.5 patch level 1 or patch level 2 and dmake 3.5 patch 1.
#
# Version 3.6 of the dmake source replaces *ALL* MKS proprietary code.
# In particular, putenv.c in the bsd43 and sysvr1 directories is new.
# Three routines in percent.c; Add_dfa, Construct_dfa, and Advance_dfa
# have been replaced. Lastly, TEXT DIVERSION processing has been removed
# from make.c and <+...+> constructions are replaced by the $(mktmp ...)
# construct (see below for more details). The changes relating to the
# above mentioned modifications have been reviewed by MKS and certified by
# MKS to be free of MKS proprietary code. The note below is from MKS
# and releases dmake version 3.6 patch level 1 from any MKS copyright
# infringement claims.
#
# "MKS has reviewed the latest sources, as of 90.09.20,
# for the files make.c, putenv.c, and percent.c, which
# are part of the program dmake version 3.6, and found
# these files to be free of MKS proprietary source code."
#
# No functionality is lost as a result of these changes, however
# certain constructs may have to be expressed using a new syntax. See
# the documentation and the comments below for details.
#
#
# Text Diversion Processing:
# --------------------------
# As alluded to above, the <+...+> text diversion facility has been
# officially replaced by a new facility of the form $(mktmp ...) details of
# which may be found in the TEXT DIVERSION section of the documentation.
# Briefly, the construct:
#
# exe:; link @<+$(OBJFILES:t"+\n")+>
#
# is replaced by:
#
# exe:; link @$(mktmp $(OBJFILES:t"+\n"))
#
# similarly the construct:
#
# all :
# echo hi <+
# line1
# line2 +>
#
# is replaced by:
#
# all :
# echo hi $(mktmp\
# line1\n\
# line2)
#
# where the \n\ is added to the end of each line within the data portion of
# the $(mktmp ...) construction. For a number of reasons it is my belief
# that this new construct is a better implementation of text diversions than
# the previous <+...+> as it can be used in macro expressions that appear
# anywhere in the makefile.
#
# Compatibility is retained for previous versions of dmake that utilize
# a simple form of the <+...+> construct. If your <+...+> constructs do not
# span multiple lines (cf second example above), then the new version of
# dmke will recognize these and will map them to the appropriate
# $(mktmp ...) construct. Thus, If you use <+...+> and you do not allow the
# interior data to span multiple lines and both <+ and +> appear as clear
# text in the same recipe line or macro value, then dmake will process these
# correctly and the output is 100% compatible to version 3.5 patch level 2.
# Any other use of <+...+> must be converted to the new $(mktmp ...) form.
#
# The new form also provides for massaging the name of the temporary file
# which replaces the text in the recipe. See the documentation regarding
# the special macros USESHELL, TMPFILE, and DIVSHELL. This is of most use
# in an MSDOS environment.
#
#
# DOS Swapping, and MKS argument passing:
# ---------------------------------------
# dmake now supports swapping the executable image to secondary storage when
# it executes a child. Swapping is enabled by setting the new attribute
# .SWAP to on, either for a target or globally, or by specifying the '%'
# modifier to a recipe line. So for example:
#
# xx .SWAP :; recipe
#
# and
#
# xx :;% recipe
#
# are equivalent.
#
# The MKS DOS argument passing conventions are now supported, and dmake is
# able to communicate with programs that understand those conventions. The
# global variable .MKSARGS is used to enable/disable this facility. With
# these modifications, dmake now supports long command lines for running
# commands that understand the MKS argument passing convention, and it does
# not run into memory limitations when executing child processes in most
# situations.
#
# Both .SWAP and .MKSARGS are ignored by non-MSDOS versions of dmake.
# See the manual page for further details.
#
#
# Other tweaks modifications and BUG FIXES:
# -----------------------------------------
# -- Slight modifications to msdos/startup.mk files. Set DIRSEPSTR to \
# if using command.com as the shell, otherwise set internaly to /.
# Removed -o $@ from MSC startup.mk, and added $(ASFLAGS) to %$O : %$S
# rule, in all default DOS startup.mk files.
#
# -- Added POSIX '+' character to start of recipe lines. You can use this
# to force the recipe line to be executed by a shell, in addition to the
# test used for .SHELLMETAS.
#
# To make the '+' fit into the dmake mold, a new attribute has been created.
# the .USESHELL attribute forces the use of a shell for the target or
# recipe group for which it is specified. If it is specified as a global
# attribute then all recipes executed will use a shell. The macro variable
# .USESHELL corresponds to the special target '.USESHELL :' in the same way
# that .IGNORE corresponds to '.IGNORE :'.
#
# -- Added *= and *:= macro assignmen operator, patches from
# Piercarlo Grandi <pcg at compsci.aberystwyth.ac.uk>, see the documentation
# for more details.
#
# -- Changed makefile.mk to force use of a shell (via '+') to make OBJDIR,
# doesn't break on baren DOS systems that way :-). Many other small changes
# to msdos and unix versions of various config.mk files.
#
# -- Added two new macros related to diversion file processing.
# See the TEXT DIVERSIONS section of the man page for an explanation of this
# functionality.
#
# TMPFILE - is set to the name of the temporary file whenever
# a temporary file is opened by dmake.
# USESHELL- It's value is 'no' if the current recipe line is not forced
# to use a shell via a '+' or .USESHELL directive. It's
# value is 'yes' if such a directive is given.
# DIVFILE - is defined in startup.mk and gives a macro to use to set
# name of the diversion file, (under UNIX, DIVFILE defaults to
# $(TMPFILE), under MSDOS it is the value of $(TMPFILE) with
# any / replaced by the appropriate number of \ depending, on
# if a shell is used or not).
#
# -- \\ appearing at the end of a line does not cause a continuation to the next
# line.
#
# -- Modified the definition of macro supplied from the command line to allow
# macros defined using += or +:= to be modified further from within the
# makefile.
#
# -- Added MAKETARGETS macro which contains the name of the target(s), if any,
# specified on the command line.
#
# -- Modified Pack_argv in sysintf.c to use dynamic memory allocation rather
# than limit it to a fixed number of arguments.
#
# -- BIG BUG FIX:
# This one is cute. It turns out that all individual recipe line
# attributes supplied via '@', '-', and now '+' and '%' characters were
# getting or'ed together and applied to ALL recipe lines of the recipe, yulk!
#
# -- BUG FIX:
# Fixed off by one error in make.c:_print_cmnd when remapping \n after
# printing the text.
#
# -- BUG FIX: Bug reported by holos0!lbr at gatech.edu
# Inferred prerequisites were not getting made when a target was found to
# be out of date relative to a non-inferred prerequisite, and the inferred
# prerequisite did not exist but the file it could be made from did and was
# not out of date relative to the target. This was a problem with the
# following setup.
#
# file.o : header.h
#
# File system contains file.o, header.h and RCS/file.c,v, If file.o is newer
# than RCS/file.c,v and older than header.h, then dmake didn't check out
# file.c prior to doing the compile.
#
# -- BUG FIX: Applied patch from UUCP: twc at legal or ...sun!ys2!legal!twc
# to msdos/_chdir.c to fix changing of directory in OS/2 protected mode
#
# -- BUG FIX: Applied patch from UUCP: twc at legal or ...sun!ys2!legal!twc
# to msdos/switchar.c to read environment variable SWITCHAR instead of using
# unsupported call in DOS. OS/2 doesn't have _get_switchar call! (It damn
# well should though! Microsoft is really dumb in this respect!)
#
# Extended this patch to use SWITCHAR environment variable in all DOS
# versions. This ensures that DOS 4.0 can selectively change SWITCHAR by
# using the environment variable.
#
# Dmake now first gets SWITCHAR from the environment and if that fails it
# tries the unsupported MSDOS call. Under UNIX getswitchar returns '-'
# as before.
#
# -- BUG FIX: Changed the line _ar.ar_size = atol(arhdr.ar_size) found in
# ar_scan() in arlib.c to not use atol() if ASCARCH is FALSE. I forget who
# reported this one :-)
# -----------------------------------------------------------------------------
exit 0
More information about the Comp.sources.misc
mailing list