On 3/31/2010 1:01 AM, tom honermann wrote:
True, but it introduces the problem of making sense of these:

    + b1 + b2 +: d1
    b1 + + b2: d1
    b1 + b2 b3: d1

Solaris 10 make appears to silently drop dangling and extra '+' connectors - which is convenient for handling macros that are empty when expanded. It also appears to silently insert missing '+' connectors if there are any '+' connectors in the target group. Thus, I think Solaris make would
treat the following rules as equivalent to the ones above:

    + b1 b2: d1
    + b1 b2 b3: d1

Strike that. It seems Solaris make does not insert '+' connectors and does support multiple target groups. This behavior can be seen with rules that fail to actually produce all group members.

   all: a1 a2 a3 a4

   clean:
           rm -f a1 a2 a3 a4

   d1:
           @touch $@

   a1 + a2 a3 + a4: d1
           touch $@

The above Makefile has two target groups: a1+a2 and a3+a4. The group target rule however will only
build the "current" target.

   $ make clean
   rm -f a1 a2 a3 a4
   $ make a1 a2
   touch a1

Only a1 is built. Solaris make assumes a2 was built as well (or treats it similar to GNU make .PHONY
targets)

   $ make clean
   rm -f a1 a2 a3 a4
   $ make a1 a3
   touch a1
   touch a3

Both a1 and a3 are built in this last case since a1 and a3 are not in the same group.

   $ make clean
   rm -f a1 a2 a3 a4
   $ make a1 a2 a3 a4
   touch a1
   touch a3
   $ make a1 a2 a3 a4
   `a1' is up to date.
   touch a2
   `a3' is up to date.
   touch a4

The first make invocation builds a1 and a3 and assumes a2 and a4 were built. A second invocation
causes a2 and a4 to actually get built.

Tom.
_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to