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

Reply via email to