[comp.sources.d] dmake 3.6 patch 2 part 5 of 6

dvadura@watdragon.waterloo.edu (Dennis Vadura) (12/01/90)

#!/bin/sh
# this is part 5 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file dmake-3.6-patch2 continued
#
CurArch=5
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
     exit 1; fi
( read Scheck
  if test "$Scheck" != $CurArch
  then echo "Please unpack part $Scheck next!"
       exit 1;
  else exit 0; fi
) < s2_seq_.tmp || exit 1
sed 's/^X//' << 'SHAR_EOF' >> dmake-3.6-patch2
XX  
XX       .SWAP       Under MSDOS when making a target with this
XX                   attribute set swap the dmake executable to disk
XX!                  prior to executing the recipe line.  Also see
XX!                  the '%' recipe line flag defined in the RECIPES
XX!                  section.
XX  
XX       .SYMBOL     Target is a library member and is an entry point
XX                   into a module in the library.  This attribute is
XX***************
XX*** 632,643 ****
XX       all targets in the makefile (this is equivalent to the com-
XX       mon Make construct of ".IGNORE :" but has been modified to
XX       the notion of an attribute instead of a special target).
XX-      Not all of the attributes have global meaning.  In particu-
XX-      lar, .LIBRARY, .SYMBOL, and .UPDATEALL have no assigned
XX  
XX  
XX  
XX! Version 3.50                    UW                             10
XX  
XX  
XX  
XX--- 634,643 ----
XX       all targets in the makefile (this is equivalent to the com-
XX       mon Make construct of ".IGNORE :" but has been modified to
XX       the notion of an attribute instead of a special target).
XX  
XX  
XX  
XX! Version 3.60                    UW                             10
XX  
XX  
XX  
XX***************
XX*** 646,652 ****
XX  
XX  
XX  
XX!      global meaning.
XX  
XX       Any attribute may be used with any target, even with the
XX       special targets.  Some combinations are useless (e.g.
XX--- 646,654 ----
XX  
XX  
XX  
XX!      Not all of the attributes have global meaning.  In particu-
XX!      lar, .LIBRARY, .SYMBOL, and .UPDATEALL have no assigned glo-
XX!      bal meaning.
XX  
XX       Any attribute may be used with any target, even with the
XX       special targets.  Some combinations are useless (e.g.
XX***************
XX*** 696,707 ****
XX       Macro expressions specified on the command line allow the
XX       macro value to be redefined within the makefile only if the
XX       macro is defined using the '+=' and '+:=' operators.  Other
XX-      operators will define a macro that cannot be further modi-
XX-      fied.
XX  
XX  
XX  
XX! Version 3.50                    UW                             11
XX  
XX  
XX  
XX--- 698,707 ----
XX       Macro expressions specified on the command line allow the
XX       macro value to be redefined within the makefile only if the
XX       macro is defined using the '+=' and '+:=' operators.  Other
XX  
XX  
XX  
XX! Version 3.60                    UW                             11
XX  
XX  
XX  
XX***************
XX*** 710,715 ****
XX--- 710,718 ----
XX  
XX  
XX  
XX+      operators will define a macro that cannot be further modi-
XX+      fied.
XX+ 
XX       When dmake defines a non-environment macro it strips leading
XX       and trailing white space from the macro value.  Macros
XX       imported from the environment via either the .IMPORT special
XX***************
XX*** 758,771 ****
XX       Macro variables may be defined within the makefile, on the
XX       command line, or imported from the environment.
XX  
XX-      dmake supports several non-standard macro expansions: The
XX-      first is of the form:
XX  
XX  
XX  
XX  
XX! 
XX! Version 3.50                    UW                             12
XX  
XX  
XX  
XX--- 761,771 ----
XX       Macro variables may be defined within the makefile, on the
XX       command line, or imported from the environment.
XX  
XX  
XX  
XX  
XX  
XX! Version 3.60                    UW                             12
XX  
XX  
XX  
XX***************
XX*** 774,779 ****
XX--- 774,782 ----
XX  
XX  
XX  
XX+      dmake supports several non-standard macro expansions: The
XX+      first is of the form:
XX+ 
XX            $(macro_name:modifier_list:modifier_list:...)
XX  
XX       where modifier_list is chosen from the set { D or d, F or f,
XX***************
XX*** 823,835 ****
XX       The second non-standard form of macro expansion allows for
XX       recursive macros.  It is possible to specify a $(macro_name)
XX       or ${macro_name} expansion where macro_name contains more $(
XX-      ... ) or ${ ... } macro expansions itself.
XX  
XX  
XX  
XX! 
XX! 
XX! Version 3.50                    UW                             13
XX  
XX  
XX  
XX--- 826,835 ----
XX       The second non-standard form of macro expansion allows for
XX       recursive macros.  It is possible to specify a $(macro_name)
XX       or ${macro_name} expansion where macro_name contains more $(
XX  
XX  
XX  
XX! Version 3.60                    UW                             13
XX  
XX  
XX  
XX***************
XX*** 838,843 ****
XX--- 838,845 ----
XX  
XX  
XX  
XX+      ... ) or ${ ... } macro expansions itself.
XX+ 
XX       For example $(CC$(_HOST)$(_COMPILER)) will first expand
XX       CC$(_HOST)$(_COMPILER) to get a result and use that result
XX       as the name of the macro to expand.  This is useful for
XX***************
XX*** 872,878 ****
XX            test/{f1 f2}.o       --> test/f1.o test/f2.o
XX            test/ {f1 f2}.o      --> test/ f1.o f2.o
XX            test/{f1 f2} .o      --> test/f1 test/f2 .o
XX!           test/{               --> test/f1.o test/.o
XX  
XX            and
XX  
XX--- 874,880 ----
XX            test/{f1 f2}.o       --> test/f1.o test/f2.o
XX            test/ {f1 f2}.o      --> test/ f1.o f2.o
XX            test/{f1 f2} .o      --> test/f1 test/f2 .o
XX!           test/{ "f1"  "" }.o  --> test/f1.o test/.o
XX  
XX            and
XX  
XX***************
XX*** 887,899 ****
XX  RULES AND TARGETS
XX       A makefile contains a series of entries that specify depen-
XX       dencies.  Such entries are called target/prerequisite or
XX!      rule definitions.  Each rule definition is optionally fol-
XX!      lowed by a set of lines that provide a recipe for updating
XX!      any targets defined by the rule.  Whenever dmake attempts to
XX  
XX  
XX  
XX! Version 3.50                    UW                             14
XX  
XX  
XX  
XX--- 889,899 ----
XX  RULES AND TARGETS
XX       A makefile contains a series of entries that specify depen-
XX       dencies.  Such entries are called target/prerequisite or
XX!      rule definitions.  Each rule definition is optionally
XX  
XX  
XX  
XX! Version 3.60                    UW                             14
XX  
XX  
XX  
XX***************
XX*** 902,911 ****
XX  
XX  
XX  
XX!      bring a target up to date and an explicit recipe is provided
XX!      with a rule defining the target, that recipe is used to
XX!      update the target.  A rule definition begins with a line
XX!      having the following syntax:
XX  
XX            <targets> [<attributes>] <ruleop> [<prerequisites>] [;<recipe>]
XX  
XX--- 902,913 ----
XX  
XX  
XX  
XX!      followed by a set of lines that provide a recipe for updat-
XX!      ing any targets defined by the rule.  Whenever dmake
XX!      attempts to bring a target up to date and an explicit recipe
XX!      is provided with a rule defining the target, that recipe is
XX!      used to update the target.  A rule definition begins with a
XX!      line having the following syntax:
XX  
XX            <targets> [<attributes>] <ruleop> [<prerequisites>] [;<recipe>]
XX  
XX***************
XX*** 951,963 ****
XX            the specified targets.  In general, it is not useful to
XX            specify ^ with an empty list of prerequisites.
XX  
XX-      -    says to clear the previous list of prerequisites before
XX-           adding the new prerequisites.  Thus,
XX  
XX  
XX  
XX  
XX! Version 3.50                    UW                             15
XX  
XX  
XX  
XX--- 953,963 ----
XX            the specified targets.  In general, it is not useful to
XX            specify ^ with an empty list of prerequisites.
XX  
XX  
XX  
XX  
XX  
XX! Version 3.60                    UW                             15
XX  
XX  
XX  
XX***************
XX*** 966,971 ****
XX--- 966,974 ----
XX  
XX  
XX  
XX+      -    says to clear the previous list of prerequisites before
XX+           adding the new prerequisites.  Thus,
XX+ 
XX                 .SUFFIXES :
XX                 .SUFFIXES : .a .b
XX  
XX***************
XX*** 1015,1027 ****
XX  
XX       Targets defined using a single `:' operator with a recipe
XX       may be redefined again with a new recipe by using a `:'
XX-      operator with a `:' modifier.  This is equivalent to a tar-
XX-      get having been initially defined with a rule using a `:'
XX-      modifier.  Once a target is defined using a `:' modifier it
XX  
XX  
XX  
XX! Version 3.50                    UW                             16
XX  
XX  
XX  
XX--- 1018,1027 ----
XX  
XX       Targets defined using a single `:' operator with a recipe
XX       may be redefined again with a new recipe by using a `:'
XX  
XX  
XX  
XX! Version 3.60                    UW                             16
XX  
XX  
XX  
XX***************
XX*** 1030,1035 ****
XX--- 1030,1038 ----
XX  
XX  
XX  
XX+      operator with a `:' modifier.  This is equivalent to a tar-
XX+      get having been initially defined with a rule using a `:'
XX+      modifier.  Once a target is defined using a `:' modifier it
XX       may not be defined again with a recipe using only the `:'
XX       operator with no `:' modifier.  In both cases the use of a
XX       `:' modifier creates a new list of prerequisites and makes
XX***************
XX*** 1074,1091 ****
XX       when dmake tries to make the target and fails.  This silence
XX       is maintained for rules that are terminated by a semicolon
XX       and have no following recipe lines, for targets listed on
XX!      the command line, and for the first target found in the
XX!      makefile.
XX  
XX- RECIPES
XX-      The traditional format used by most versions of Make defines
XX-      the recipe lines as arbitrary strings that may contain macro
XX-      expansions.  They follow a rule definition line and may be
XX-      spaced apart by comment or blank lines.  The list of recipe
XX  
XX  
XX! 
XX! Version 3.50                    UW                             17
XX  
XX  
XX  
XX--- 1077,1091 ----
XX       when dmake tries to make the target and fails.  This silence
XX       is maintained for rules that are terminated by a semicolon
XX       and have no following recipe lines, for targets listed on
XX!      the command line, for the first target found in the
XX!      makefile, and for any target having no recipe but containing
XX!      a list of prerequisites (see the COMPATIBILITY section for
XX!      an exception to this rule if AUGMAKE special target handling
XX!      is enabled).
XX  
XX  
XX  
XX! Version 3.60                    UW                             17
XX  
XX  
XX  
XX***************
XX*** 1094,1099 ****
XX--- 1094,1104 ----
XX  
XX  
XX  
XX+ RECIPES
XX+      The traditional format used by most versions of Make defines
XX+      the recipe lines as arbitrary strings that may contain macro
XX+      expansions.  They follow a rule definition line and may be
XX+      spaced apart by comment or blank lines.  The list of recipe
XX       lines defining the recipe is terminated by a new target
XX       definition, a macro definition, or end-of-file.  Each recipe
XX       line MUST begin with a <TAB> character which may optionally
XX***************
XX*** 1141,1155 ****
XX            target :
XX            [
XX                 first recipe line
XX-                second recipe line
XX-                all of these recipe lines are fed to a
XX-                single copy of a shell for execution.
XX-           ]
XX  
XX  
XX  
XX! 
XX! Version 3.50                    UW                             18
XX  
XX  
XX  
XX--- 1146,1155 ----
XX            target :
XX            [
XX                 first recipe line
XX  
XX  
XX  
XX! Version 3.60                    UW                             18
XX  
XX  
XX  
XX***************
XX*** 1158,1163 ****
XX--- 1158,1169 ----
XX  
XX  
XX  
XX+                second recipe line
XX+                all of these recipe lines are fed to a
XX+                single copy of a shell for execution.
XX+           ]
XX+ 
XX+ 
XX  TEXT DIVERSIONS
XX       dmake supports the notion of text diversions.  If a recipe
XX       line contains the macro expression
XX***************
XX*** 1172,1178 ****
XX  
XX       data can be any text and must be separated from the 'mktmp'
XX       portion of the macro name by white-space.  The only restric-
XX!      tion on the data text is that it must contain an balanced
XX       number of parentheses of the same kind as are used to ini-
XX       tiate the $(mktmp ...) expression.  For example:
XX  
XX--- 1178,1184 ----
XX  
XX       data can be any text and must be separated from the 'mktmp'
XX       portion of the macro name by white-space.  The only restric-
XX!      tion on the data text is that it must contain a balanced
XX       number of parentheses of the same kind as are used to ini-
XX       tiate the $(mktmp ...) expression.  For example:
XX  
XX***************
XX*** 1188,1202 ****
XX  
XX            ${mktmp text (to dump to file}
XX  
XX!      which works as expected.  Since the temporary file is opened
XX!      when the macro containg the text diversion expression is
XX!      expanded, diversions may now be nested and any diversions
XX!      that are created as part of ':=' macro expansions persist
XX!      for the duration of the dmake run.  The diversion text may
XX!      contain the same escape codes as those described in the MAC-
XX!      ROS section.  Thus if the data text is to contain new lines
XX!      they must be inserted using the \n escape sequence.  For
XX!      example the expression:
XX  
XX            all:
XX                 cat $(mktmp this is a\n\
XX--- 1194,1207 ----
XX  
XX            ${mktmp text (to dump to file}
XX  
XX!      Since the temporary file is opened when the macro containg
XX!      the text diversion expression is expanded, diversions may
XX!      now be nested and any diversions that are created as part of
XX!      ':=' macro expansions persist for the duration of the dmake
XX!      run.  The diversion text may contain the same escape codes
XX!      as those described in the MACROS section.  Thus if the data
XX!      text is to contain new lines they must be inserted using the
XX!      \n escape sequence.  For example the expression:
XX  
XX            all:
XX                 cat $(mktmp this is a\n\
XX***************
XX*** 1206,1219 ****
XX  
XX            cat /tmp/mk12294AA
XX  
XX-      where the temporary file contains two lines both of which
XX-      are terminated by a new-line.  If the data text spans multi-
XX-      ple lines in the makefile then each line must be continued
XX-      via the use of a \.  A second more illustrative example
XX  
XX  
XX! 
XX! Version 3.50                    UW                             19
XX  
XX  
XX  
XX--- 1211,1219 ----
XX  
XX            cat /tmp/mk12294AA
XX  
XX  
XX  
XX! Version 3.60                    UW                             19
XX  
XX  
XX  
XX***************
XX*** 1222,1228 ****
XX  
XX  
XX  
XX!      generates a response file to an MSDOS link command:
XX  
XX            OBJ = fred.obj mary.obj joe.obj
XX            all : $(OBJ)
XX--- 1222,1232 ----
XX  
XX  
XX  
XX!      where the temporary file contains two lines both of which
XX!      are terminated by a new-line.  If the data text spans multi-
XX!      ple lines in the makefile then each line must be continued
XX!      via the use of a \.  A second more illustrative example gen-
XX!      erates a response file to an MSDOS link command:
XX  
XX            OBJ = fred.obj mary.obj joe.obj
XX            all : $(OBJ)
XX***************
XX*** 1271,1283 ****
XX       to the appropriate value based on the current shell and
XX       whether it will be used to execute the recipe.
XX  
XX-      Previous versions of dmake defined text diversions using <+,
XX-      +> strings, where <+ started a text diversion and +> ter-
XX-      minated one.  dmake is backward compatible with this
XX  
XX  
XX! 
XX! Version 3.50                    UW                             20
XX  
XX  
XX  
XX--- 1275,1283 ----
XX       to the appropriate value based on the current shell and
XX       whether it will be used to execute the recipe.
XX  
XX  
XX  
XX! Version 3.60                    UW                             20
XX  
XX  
XX  
XX***************
XX*** 1286,1294 ****
XX  
XX  
XX  
XX!      construct if the <+ and +> appear literally on the same
XX!      recipe line or in the same macro value string.  In such
XX!      instances the expression:
XX  
XX            <+data text+>
XX  
XX--- 1286,1297 ----
XX  
XX  
XX  
XX!      Previous versions of dmake defined text diversions using <+,
XX!      +> strings, where <+ started a text diversion and +> ter-
XX!      minated one.  dmake is backward compatible with this con-
XX!      struct if the <+ and +> appear literally on the same recipe
XX!      line or in the same macro value string.  In such instances
XX!      the expression:
XX  
XX            <+data text+>
XX  
XX***************
XX*** 1335,1347 ****
XX       .IMPORT       Prerequisite names specified for this target
XX                     are searched for in the environment and
XX                     defined as macros with their value taken from
XX-                    the environment.  If the name cannot be found
XX-                    in the environment an error message is issued.
XX-                    .IMPORT accepts the .IGNORE attribute.  When
XX  
XX  
XX  
XX! Version 3.50                    UW                             21
XX  
XX  
XX  
XX--- 1338,1347 ----
XX       .IMPORT       Prerequisite names specified for this target
XX                     are searched for in the environment and
XX                     defined as macros with their value taken from
XX  
XX  
XX  
XX! Version 3.60                    UW                             21
XX  
XX  
XX  
XX***************
XX*** 1350,1355 ****
XX--- 1350,1358 ----
XX  
XX  
XX  
XX+                    the environment.  If the name cannot be found
XX+                    in the environment an error message is issued.
XX+                    .IMPORT accepts the .IGNORE attribute.  When
XX                     given, it causes dmake to ignore the above
XX                     error.  See the MACROS section for a descrip-
XX                     tion of the processing of imported macro
XX***************
XX*** 1399,1411 ****
XX       .SOURCE       The prerequisite list of this target defines a
XX                     set of directories to check when trying to
XX                     locate a target file name.  See the section on
XX-                    BINDING of targets for more information.
XX  
XX  
XX  
XX! 
XX! 
XX! Version 3.50                    UW                             22
XX  
XX  
XX  
XX--- 1402,1411 ----
XX       .SOURCE       The prerequisite list of this target defines a
XX                     set of directories to check when trying to
XX                     locate a target file name.  See the section on
XX  
XX  
XX  
XX! Version 3.60                    UW                             22
XX  
XX  
XX  
XX***************
XX*** 1414,1419 ****
XX--- 1414,1421 ----
XX  
XX  
XX  
XX+                    BINDING of targets for more information.
XX+ 
XX       .SOURCE.suff  The same as .SOURCE, except that the
XX                     .SOURCE.suff list is searched first when try-
XX                     ing to locate a file matching the a target
XX***************
XX*** 1467,1475 ****
XX  
XX  
XX  
XX! 
XX! 
XX! Version 3.50                    UW                             23
XX  
XX  
XX  
XX--- 1469,1475 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             23
XX  
XX  
XX  
XX***************
XX*** 1533,1539 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             24
XX  
XX  
XX  
XX--- 1533,1539 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             24
XX  
XX  
XX  
XX***************
XX*** 1597,1603 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             25
XX  
XX  
XX  
XX--- 1597,1603 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             25
XX  
XX  
XX  
XX***************
XX*** 1661,1667 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             26
XX  
XX  
XX  
XX--- 1661,1667 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             26
XX  
XX  
XX  
XX***************
XX*** 1725,1731 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             27
XX  
XX  
XX  
XX--- 1725,1731 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             27
XX  
XX  
XX  
XX***************
XX*** 1789,1795 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             28
XX  
XX  
XX  
XX--- 1789,1795 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             28
XX  
XX  
XX  
XX***************
XX*** 1853,1859 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             29
XX  
XX  
XX  
XX--- 1853,1859 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             29
XX  
XX  
XX  
XX***************
XX*** 1917,1923 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             30
XX  
XX  
XX  
XX--- 1917,1923 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             30
XX  
XX  
XX  
XX***************
XX*** 1981,1987 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             31
XX  
XX  
XX  
XX--- 1981,1987 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             31
XX  
XX  
XX  
XX***************
XX*** 2045,2051 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             32
XX  
XX  
XX  
XX--- 2045,2051 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             32
XX  
XX  
XX  
XX***************
XX*** 2109,2115 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             33
XX  
XX  
XX  
XX--- 2109,2115 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             33
XX  
XX  
XX  
XX***************
XX*** 2173,2179 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             34
XX  
XX  
XX  
XX--- 2173,2179 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             34
XX  
XX  
XX  
XX***************
XX*** 2237,2243 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             35
XX  
XX  
XX  
XX--- 2237,2243 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             35
XX  
XX  
XX  
XX***************
XX*** 2301,2307 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             36
XX  
XX  
XX  
XX--- 2301,2307 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             36
XX  
XX  
XX  
XX***************
XX*** 2365,2371 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             37
XX  
XX  
XX  
XX--- 2365,2371 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             37
XX  
XX  
XX  
XX***************
XX*** 2429,2435 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             38
XX  
XX  
XX  
XX--- 2429,2435 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             38
XX  
XX  
XX  
XX***************
XX*** 2493,2499 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             39
XX  
XX  
XX  
XX--- 2493,2499 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             39
XX  
XX  
XX  
XX***************
XX*** 2557,2563 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             40
XX  
XX  
XX  
XX--- 2557,2563 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             40
XX  
XX  
XX  
XX***************
XX*** 2621,2627 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             41
XX  
XX  
XX  
XX--- 2621,2627 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             41
XX  
XX  
XX  
XX***************
XX*** 2685,2691 ****
XX  
XX  
XX  
XX! Version 3.50                    UW                             42
XX  
XX  
XX  
XX--- 2685,2691 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             42
XX  
XX  
XX  
XX***************
XX*** 2707,2716 ****
XX               correctly.
XX  
XX            5. When defining special targets for the inference
XX!              rules and the AUGMAKE special target mapping is
XX               enabled then the special target .X is equivalent to
XX               the %-rule "% : %.X".
XX  
XX  LIMITS
XX       In some environments the length of an argument string is
XX       restricted.  (e.g. MSDOS command line arguments cannot be
XX--- 2707,2732 ----
XX               correctly.
XX  
XX            5. When defining special targets for the inference
XX!              rules and the AUGMAKE special target handling is
XX               enabled then the special target .X is equivalent to
XX               the %-rule "% : %.X".
XX  
XX+           6. Makefiles that utilize virtual targets to force mak-
XX+              ing of other targets work as expected if AUGMAKE
XX+              special target handling is enabled.  For example:
XX+ 
XX+                   FRC:
XX+                   myprog.o : myprog.c $(FRC) ; ...
XX+ 
XX+              Works as expected if you issue the command
XX+ 
XX+                   'dmake -A FRC=FRC'
XX+ 
XX+              but fails with a 'don't know how to make FRC' error
XX+              message if you do not specify AUGMAKE special target
XX+              handling via the -A flag (or by setting AUGMAKE:=yes
XX+              internally).
XX+ 
XX  LIMITS
XX       In some environments the length of an argument string is
XX       restricted.  (e.g. MSDOS command line arguments cannot be
XX***************
XX*** 2730,2735 ****
XX--- 2746,2763 ----
XX       example the same make script can be used for SYSV and BSD
XX       but with different macro definitions.
XX  
XX+ 
XX+ 
XX+ 
XX+ Version 3.60                    UW                             43
XX+ 
XX+ 
XX+ 
XX+ 
XX+ DMAKE(p)               Unsupported Software               DMAKE(p)
XX+ 
XX+ 
XX+ 
XX       To write a makefile that is portable between UNIX and MSDOS
XX       requires both features since in almost all cases you will
XX       need to define new recipes for making targets.  The recipes
XX***************
XX*** 2744,2763 ****
XX       Use the .IF ... .ELSE ... .END conditionals to supply dif-
XX       ferent make scripts as necessary.
XX  
XX- 
XX- 
XX- 
XX- 
XX- 
XX- Version 3.50                    UW                             43
XX- 
XX- 
XX- 
XX- 
XX- DMAKE(p)               Unsupported Software               DMAKE(p)
XX- 
XX- 
XX- 
XX  FILES
XX       Makefile, makefile, startup.mk (use dmake -V to tell you
XX       where the startup file is)
XX--- 2772,2777 ----
XX***************
XX*** 2799,2816 ****
XX  
XX  
XX  
XX! 
XX! 
XX! 
XX! 
XX! 
XX! 
XX! 
XX! 
XX! 
XX! 
XX! 
XX! 
XX! 
XX! 
XX! Version 3.50                    UW                             44
XX--- 2813,2816 ----
XX  
XX  
XX  
XX! Version 3.60                    UW                             44
XX*** /u2/dvadura/src/generic/dmake/dmake36-pl2/makefile.mk	Tue Oct 30 12:24:08 1990
XX--- makefile.mk	Sun Nov 11 16:26:57 1990
XX***************
XX*** 43,48 ****
XX--- 43,56 ----
XX  TARGET  = dmake$E
XX  CFLAGS += -DHELP -I. -Icommon
XX  
XX+ # Meta rule for making .o's from .c's (give our own so we can move object
XX+ # to objects directory in a portable, compiler independent way)
XX+ # Define it before the .INCLUDE so that different OS combinations can redefine
XX+ # it.
XX+ %$O : %.c
XX+ 	%$(CC) -c $(CFLAGS) $<
XX+ 	mv $(@:f) $(OBJDIR)
XX+ 
XX  # Pull in the proper configuration file, based on the value of OS.
XX  .INCLUDE : $(OS)/config.mk
XX  
XX***************
XX*** 64,77 ****
XX  # Other obvious targets...
XX  $(OBJDIR):;+-mkdir $@
XX  
XX- # Meta rule for making .o's from .c's (give our own so we can move object
XX- # to objects directory in a portable, compiler independent way)
XX- %$O : %.c
XX- 	%$(CC) -c $(CFLAGS) $<
XX- 	mv $(@:f) $(OBJDIR)
XX- 
XX  # remaining dependencies should be automatically generated
XX  sysintf$O  : $(OS)/sysintf.h
XX  $(OBJECTS) : $(HDR)
XX  .SOURCE.h  : common
XX  
XX--- 72,80 ----
XX  # Other obvious targets...
XX  $(OBJDIR):;+-mkdir $@
XX  
XX  # remaining dependencies should be automatically generated
XX  sysintf$O  : $(OS)/sysintf.h
XX+ ruletab$O  : $(OS)/startup.h  #khc 01NOV90 - dependency was missing
XX  $(OBJECTS) : $(HDR)
XX  .SOURCE.h  : common
XX  
XX***************
XX*** 157,164 ****
XX  MS_n = MAKESTARTUP=$(@:s/swp-/-/:s,-,/,:s/scripts/startup.mk/)
XX  SH = $(SH_n:s/c40d/cd/:s/c50d/cd/:s/c51d/cd/:s/c60d/cd/)
XX  MS = $(MS_n:s/c40d/cd/:s/c50d/cd/:s/c51d/cd/:s/c60d/cd/)
XX  
XX! scripts: unix-scripts atari-tos-scripts msdos-scripts
XX  
XX  # To add a new environment for UNIX, simply create the appropriate entry
XX  # in the style below for the macro which contains the OS, OSRELEASE and
XX--- 160,168 ----
XX  MS_n = MAKESTARTUP=$(@:s/swp-/-/:s,-,/,:s/scripts/startup.mk/)
XX  SH = $(SH_n:s/c40d/cd/:s/c50d/cd/:s/c51d/cd/:s/c60d/cd/)
XX  MS = $(MS_n:s/c40d/cd/:s/c50d/cd/:s/c51d/cd/:s/c60d/cd/)
XX+ FIX-SH = $(SH:s,fix/,,)
XX  
XX! scripts: unix-scripts atari-tos-scripts msdos-scripts os2-scripts
XX  
XX  # To add a new environment for UNIX, simply create the appropriate entry
XX  # in the style below for the macro which contains the OS, OSRELEASE and
XX***************
XX*** 188,194 ****
XX  	$(MAKE) SCRIPTFILE=make.sh tos--scripts
XX  
XX  # We make the standard dos scripts here, but we have to go and fix up the
XX! # make.bat file since it contains names of temporary files for the response
XX  # files required by the linker.  We need to also construct the response file
XX  # contents.  These two functions are performed by the fix-msdos-%-scripts
XX  # meta-target.
XX--- 192,198 ----
XX  	$(MAKE) SCRIPTFILE=make.sh tos--scripts
XX  
XX  # We make the standard dos scripts here, but we have to go and fix up the
XX! # mkXX.bat file since it contains names of temporary files for the response
XX  # files required by the linker.  We need to also construct the response file
XX  # contents.  These two functions are performed by the fix-msdos-%-scripts
XX  # meta-target.
XX***************
XX*** 208,237 ****
XX  msdos-msc60dos-scripts-flags= $(msdos-cf) OSRELEASE=mscdos SWAP=n MSC_VER=6.0
XX  msdos-msc60dosswp-scripts-flags = $(msdos-cf) OSRELEASE=mscdos MSC_VER=6.0
XX  
XX! msdos-scripts: clean tcc-scripts msc-scripts;
XX  
XX! tcc-scripts .SWAP :
XX  	$(MAKE) SCRIPTFILE=mk.bat msdos-tccdos-scripts
XX  	$(MAKE) SCRIPTFILE=mkswp.bat msdos-tccdosswp-scripts
XX  
XX! msc-scripts .SWAP :! 40 50 51 60
XX  	$(MAKE) SCRIPTFILE=mk$?.bat msdos-msc$?dos-scripts
XX  	$(MAKE) SCRIPTFILE=mk$?swp.bat msdos-msc$?dosswp-scripts
XX- 40 50 51 60:;
XX  
XX  msdos-%-scripts .SWAP :
XX  	$(MAKE) -nus $(MS) $($@-flags) >$(SH)
XX  	$(MAKE) -s $(MAKEMACROS) $(MS) $($@-flags) fix-msdos-$*-scripts
XX  
XX  MAPOBJ = obj$(SWAP:s/y/swp/:s/n//).rsp
XX  MAPLIB = lib$(SWAP:s/y/swp/:s/n//).rsp
XX  OBJRSP = $(SH:s,fix/,,:s,${SCRIPTFILE},${MAPOBJ},)
XX  LIBRSP = $(SH:s,fix/,,:s,${SCRIPTFILE},${MAPLIB},)
XX  DOSOBJ = $(CSTARTUP) $(OBJDIR)/{$(OBJECTS)}
XX! fix-msdos-%-scripts:
XX  	sed -e 's,/tmp/mkA..[0-9]*,$(OBJRSP),'\
XX! 	    -e 's,/tmp/mkB..[0-9]*,$(LIBRSP),'\
XX! 	    -e 's,/,\\,g' <$(SH:s,fix/,,) >tmp-out
XX! 	mv -f tmp-out $(SH:s,fix/,,)
XX  	mv <+$(DOSOBJ:s,/,\\,:t"+\n")\n+> $(OBJRSP)
XX  	mv <+$(LDLIBS:s,/,\\,:t"+\n")\n+> $(LIBRSP)
XX--- 212,280 ----
XX  msdos-msc60dos-scripts-flags= $(msdos-cf) OSRELEASE=mscdos SWAP=n MSC_VER=6.0
XX  msdos-msc60dosswp-scripts-flags = $(msdos-cf) OSRELEASE=mscdos MSC_VER=6.0
XX  
XX! msdos-scripts: clean msdos-tcc-scripts msdos-msc-scripts;
XX  
XX! msdos-tcc-scripts .SWAP :
XX  	$(MAKE) SCRIPTFILE=mk.bat msdos-tccdos-scripts
XX  	$(MAKE) SCRIPTFILE=mkswp.bat msdos-tccdosswp-scripts
XX  
XX! msdos-msc-scripts .SWAP :! 40 50 51 60
XX  	$(MAKE) SCRIPTFILE=mk$?.bat msdos-msc$?dos-scripts
XX  	$(MAKE) SCRIPTFILE=mk$?swp.bat msdos-msc$?dosswp-scripts
XX  
XX  msdos-%-scripts .SWAP :
XX  	$(MAKE) -nus $(MS) $($@-flags) >$(SH)
XX  	$(MAKE) -s $(MAKEMACROS) $(MS) $($@-flags) fix-msdos-$*-scripts
XX  
XX+ 
XX+ # We make the standard OS/2 scripts here, but we have to go and fix up the
XX+ # mkXX.bat file since it contains names of temporary files for the response
XX+ # files required by the linker.  We need to also construct the response file
XX+ # contents.  These two functions are performed by the fix-msdos-%-scripts
XX+ # meta-target.
XX+ #
XX+ # To add a new OS/2 environment just do what is described for adding a new
XX+ # unix environment, and then make certain that the fix-msdos-%-scripts target
XX+ # performs the correct function for the new environment.
XX+ os2-cf = OS=os2 OSENVIRONMENT=
XX+ os2-msc40dos-scripts-flags= $(os2-cf) OSRELEASE=mscdos SWAP=n MSC_VER=4.0
XX+ os2-msc50dos-scripts-flags= $(os2-cf) OSRELEASE=mscdos SWAP=n MSC_VER=5.0
XX+ os2-msc51dos-scripts-flags= $(os2-cf) OSRELEASE=mscdos SWAP=n MSC_VER=5.1
XX+ os2-msc60dos-scripts-flags= $(os2-cf) OSRELEASE=mscdos SWAP=n MSC_VER=6.0
XX+ 
XX+ os2-scripts: clean os2-msc-scripts;
XX+ 
XX+ os2-msc-scripts .SWAP :! 40 50 51 60
XX+ 	$(MAKE) SCRIPTFILE=mk$?.cmd os2-msc$?dos-scripts
XX+ 
XX+ os2-%-scripts .SWAP :
XX+ 	$(MAKE) -nus $(MS) $($@-flags) >$(SH)
XX+ 	$(MAKE) -s $(MAKEMACROS) $(MS) $($@-flags) fix-os2-$*-scripts
XX+ 
XX+ # Signify NULL targets for the various MSC compiler versions.
XX+ 40 50 51 60:;
XX+ 
XX+ # Go over the created script file and make sure all the '/' that are in
XX+ # filenames are '\', and make sure the final link command line looks
XX+ # reasonable.
XX  MAPOBJ = obj$(SWAP:s/y/swp/:s/n//).rsp
XX  MAPLIB = lib$(SWAP:s/y/swp/:s/n//).rsp
XX  OBJRSP = $(SH:s,fix/,,:s,${SCRIPTFILE},${MAPOBJ},)
XX  LIBRSP = $(SH:s,fix/,,:s,${SCRIPTFILE},${MAPLIB},)
XX  DOSOBJ = $(CSTARTUP) $(OBJDIR)/{$(OBJECTS)}
XX! fix-%-scripts:
XX! 	tail -r $(FIX-SH) >tmp-sh-r
XX! 	tail +2 tmp-sh-r | sed -e 's,/,\\,g' >tmp-out
XX! 	tail -r tmp-out >$(FIX-SH)
XX! 	head -1 tmp-sh-r |\
XX  	sed -e 's,/tmp/mkA..[0-9]*,$(OBJRSP),'\
XX! 	    -e 's,/tmp/mkB..[0-9]*,$(LIBRSP),' |\
XX! 	sed -e 's,$(OS)/,$(OS)\\,g'\
XX! 	    -e 's,$(OS)/$(OSRELEASE)/,$(OS)\\$(OSRELEASE)\\,g'\
XX! 	    -e 's,$(OS)\\$(OSRELEASE)/,$(OS)\\$(OSRELEASE)\\,g'\
XX! 	    -e 's,$(OS)/$(OSRELEASE)\\,$(OS)\\$(OSRELEASE)\\,g' >>$(FIX-SH)
XX! 	rm -f tmp-sh-r tmp-out
XX  	mv <+$(DOSOBJ:s,/,\\,:t"+\n")\n+> $(OBJRSP)
XX  	mv <+$(LDLIBS:s,/,\\,:t"+\n")\n+> $(LIBRSP)
XX+ 
XX+ 
XX*** /u2/dvadura/src/generic/dmake/dmake36-pl2/makefile	Tue Oct 30 12:23:40 1990
XX--- makefile	Sun Nov 25 11:07:00 1990
XX***************
XX*** 15,22 ****
XX  	@echo "   make dynix         - Sequent DYNIX system"
XX  	@echo "   make ultrix        - Ultrix 3.0 system"
XX  	@echo "   make mips          - Any MIPS box"
XX! 	@echo "   make 386ix         - 386/ix (SysV R3) [NOTE: not tested]"
XX  	@echo "   make xenix	     - 386 Xenix box"
XX  	@echo "   make tos           - Atari-ST TOS using GCC as compiler"
XX  	@echo "   make tcc           - DOS with tcc 2.0"
XX  	@echo "   make tccswp        - swapping DOS version with tcc 2.0"
XX--- 15,26 ----
XX  	@echo "   make dynix         - Sequent DYNIX system"
XX  	@echo "   make ultrix        - Ultrix 3.0 system"
XX  	@echo "   make mips          - Any MIPS box"
XX! 	@echo "   make 386ix         - 386/ix (SysV R3)"
XX  	@echo "   make xenix	     - 386 Xenix box"
XX+ 	@echo "   make os2msc40      - OS/2 using MSC 4.0 compiler"
XX+ 	@echo "   make os2msc50      - OS/2 using MSC 5.0 compiler"
XX+ 	@echo "   make os2msc51      - OS/2 using MSC 5.1 compiler"
XX+ 	@echo "   make os2msc60      - OS/2 using MSC 6.0 compiler"
XX  	@echo "   make tos           - Atari-ST TOS using GCC as compiler"
XX  	@echo "   make tcc           - DOS with tcc 2.0"
XX  	@echo "   make tccswp        - swapping DOS version with tcc 2.0"
XX***************
XX*** 34,39 ****
XX--- 38,47 ----
XX  sysvr1 sysvr3 bsd43 386ix :; /bin/sh -x < unix/$@/make.sh
XX  ultrix xenix: sysvr3;
XX  tos :; sh -x tos/make.sh
XX+ 
XX+ # Various OS/2 targets.
XX+ OS2_VER = os2msc40 os2msc50 os2msc51 os2msc60
XX+ $(OS2_VER) :; make.cmd $(@:s/os2//)
XX  
XX  # DOS with some form of make and sh
XX  # Note if you do not have a 'make and/or sh' program under MSDOS then
XX*** /u2/dvadura/src/generic/dmake/dmake36-pl2/make.c	Mon Oct 29 13:27:50 1990
XX--- make.c	Thu Nov 29 21:51:48 1990
XX***************
XX*** 1,4 ****
XX! /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/RCS/make.c,v 1.1 90/10/06 12:03:59 dvadura Exp $
XX  -- SYNOPSIS -- perform the update of all outdated targets.
XX  -- 
XX  -- DESCRIPTION
XX--- 1,4 ----
XX! /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/RCS/make.c,v 1.4 90/11/29 21:51:17 dvadura Exp $
XX  -- SYNOPSIS -- perform the update of all outdated targets.
XX  -- 
XX  -- DESCRIPTION
XX***************
XX*** 42,47 ****
XX--- 42,59 ----
XX  --
XX  -- LOG
XX  --     $Log:	make.c,v $
XX+  * Revision 1.4  90/11/29  21:51:17  dvadura
XX+  * Ignore targets with no recipe if Augmake set.
XX+  * 
XX+  * Revision 1.3  90/11/07  14:06:44  dvadura
XX+  * Enahncec Augmake compatibility to assume NULL recipe for targets that
XX+  * have prerequisites.
XX+  * 
XX+  * Revision 1.2  90/10/30  23:02:41  dvadura
XX+  * Add Push_dir test and call immediately after inferring a recipe for a
XX+  * target.  This catches and handles properly the case when a target cell
XX+  * infers a recipe from a %-meta rule that has a .SETDIR attribute.
XX+  * 
XX   * Revision 1.1  90/10/06  12:03:59  dvadura
XX   * dmake Release, Version 3.6
XX   * 
XX***************
XX*** 244,251 ****
XX  			cp->ce_time, cp->ce_attr, cp->ce_flag) );
XX  
XX     if( !(cp->ce_flag & F_TARGET) && (cp->ce_time == (time_t) 0L) )
XX!       if( Makemkf )
XX! 	 DB_RETURN( -1 );
XX        else
XX  	 Fatal( "`%s' not found, and can't be made", cp->CE_NAME );
XX  
XX--- 256,270 ----
XX  			cp->ce_time, cp->ce_attr, cp->ce_flag) );
XX  
XX     if( !(cp->ce_flag & F_TARGET) && (cp->ce_time == (time_t) 0L) )
SHAR_EOF
echo "End of part 5, continue with part 6"
echo "6" > s2_seq_.tmp
exit 0
-- 
--------------------------------------------------------------------------------
"This is almost worth the HIGH blood pressure!" he  |Dennis Vadura
thought as yet another mosquito exploded.-R.Patching|dvadura@dragon.uwaterloo.ca
================================================================================