>-----Original Message-----
>From: Michael G Schwern [mailto:[EMAIL PROTECTED]]
>
> Hmm. This could be a few things. I don't quite understand the
> difference between:
>
>> makemakerdflt : all
>>
>> makemakerdflt :: all
>>
>> makemakerdflt : all
>> $(NOECHO) $(NOOP)
>>
>> makemakerdflt :: all
>> $(NOECHO) $(NOOP)
inre the double-colons, my MMS docs have the description
seen further below. it implies a repeated target.
I've used this :: construct, f'instance, when
I want to trigger the build of a set of exes.
example. here I would 'touch' DepRoot:[V001_001]SUBSYSTEM_1.TXT,
to trigger the build of a set of exes.
...
...
DepRoot:[V001_001]SUBSYSTEM_1.TXT :: ExeRoot:[V001_001]TDB_CLEAN.EXE
@T_COM:NMK.com TDB_CLEAN V001_001
DepRoot:[V001_001]SUBSYSTEM_1.TXT :: ExeRoot:[V001_001]TDISPLAY.EXE
@T_COM:NMK.com TDISPLAY V001_001
...
I haven't the foggiest idea if this repeated
target is allowed in any make tools in Unix/NT land
(i would imagine so, but ...)
3.1 Using Double-Colon Dependencies
In writing MMS dependency rules, you can specify the same
target in more than one dependency rule, provided that you
specify only one action for updating that target. For example,
the following construction is legal:
MOD2.OBJ, MOD3.OBJ :
DEFS1.DEF
MOD2.OBJ : DEFS2.DEF
PASCAL MOD2
MOD2.OBJ appears in the target list of two dependency rules,
but only one action (PASCAL MOD2) is specified for it.
In contrast, the following construction is invalid:
MOD2.OBJ, MOD3.OBJ :
DEFS1.DEF
PRINT DEFS1.DEF
MOD2.OBJ :
DEFS2.DEF
PASCAL MOD2
Two different actions are specified for MOD2.OBJ, requir-
ing MMS to take two different actions if one of MOD2.OBJ's
dependencies is changed.
If you want MMS to take different actions depending on
which sources have changed, MMS allows you to use a double colon
rather than a single colon to separate the target list from
the source list in a dependency rule. (You can use the keyword
ADDITIONALLY_DEPENDS_ON in place of the double colon.)
For example, in the previous dependency rules, MMS was to
execute the PRINT command if DEFS1.DEF had changed, and
the Pascal command if MOD2.PAS had changed.
The double colon or the keyword ADDITIONALLY_DEPENDS_ON
directs MMS to allow the same target to be specified in
more than one dependency rule, each of which might require
different actions to update the target. By using the double
colon, you can modify the previous example to execute
as you intended:
MOD2.OBJ, MOD3.OBJ :: DEFS1.DEF ! If at least one source is
PRINT DEFS1.DEF ! newer than targets, print DEFS1.DEF
MOD2.OBJ :: DEFS2.DEF ! If MOD2.PAS or DEFS2.DEF is newer than
PASCAL MOD2 ! MOD2.OBJ, compile MOD2.PAS
Note that in this example, if DEFS2.DEF or MOD2.PAS is
newer than MOD2.OBJ and DEFS1.DEF, both action lines
are executed. However, that is the normal behavior of MMS.
In effect, double colons produce the same result as single
colons, so their usefulness is limited.
In a description file, a given target can be included either in
a single-colon dependency rule or in a double-colon depen-
dency rule, but not in both. MMS issues an error message if
you try to specify both kinds of rules for the same target.