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 ================================================================================