Best way to do conditionals ?
David Holmes
david.holmes at oracle.com
Sun Apr 14 23:44:21 UTC 2013
Thanks David, I found my problem - can you see it: :)
CLIENT_AND_SERVER := $(and $(findstring true, $(JVM_VARIANT_SERVER)),
$(findstring true, $(JVM_VARIANT_CLIENT)))
There's a space at the end of the line, hence CLIENT_AND_SERVER has the
value "true " not "true". I'd suspected something like that and tried
adding a strip around the $and, but still had the space at the end of
the line. Doh!
Thanks for helping out.
David
On 13/04/2013 11:24 PM, David Chase wrote:
>
> On 2013-04-12, at 7:00 PM, David Holmes <david.holmes at oracle.com> wrote:
>>
>> Thanks for the sanity check.
>>
>> This implies to me that either
>>
>> a) it is a phase 1 versus phase 2 issue, but given the content of spec.gmk I can't see how that can be the case; or
>>
>> b) the value of something is not what I naively thing it is ...
>>
>> but I have investigated both of those in depth and nothing seems to be wrong. Yet I always take the else path :(
>
> I think I have it, or at least, I can reproduce your results:
> -------------------------------
> JVM_VARIANT_SERVER := true
> JVM_VARIANT_CLIENT := true
>
> ifeq ($(CLIENT_AND_SERVER1), true)
> one: two
> @echo one then C=$(JVM_VARIANT_CLIENT) S=$(JVM_VARIANT_SERVER) BOTH1=$(CLIENT_AND_SERVER1) BOTH2=$(CLIENT_AND_SERVER2)
> else
> one: two
> @echo one else C=$(JVM_VARIANT_CLIENT) S=$(JVM_VARIANT_SERVER) BOTH1=$(CLIENT_AND_SERVER1) BOTH2=$(CLIENT_AND_SERVER2)
> endif
>
> ifeq ($(CLIENT_AND_SERVER2), true)
> two:
> @echo two then C=$(JVM_VARIANT_CLIENT) S=$(JVM_VARIANT_SERVER) BOTH1=$(CLIENT_AND_SERVER1) BOTH2=$(CLIENT_AND_SERVER2)
> else
> two:
> @echo two else C=$(JVM_VARIANT_CLIENT) S=$(JVM_VARIANT_SERVER) BOTH1=$(CLIENT_AND_SERVER1) BOTH2=$(CLIENT_AND_SERVER2)
> endif
>
> CLIENT_AND_SERVER1 := $(and $(findstring true, $(JVM_VARIANT_SERVER)), $(findstring true, $(JVM_VARIANT_CLIENT)))
> CLIENT_AND_SERVER2 := $(and $(JVM_VARIANT_SERVER), $(JVM_VARIANT_CLIENT))
> --------------------------------------
>
> two else C=true S=true BOTH1=true BOTH2=true
> one else C=true S=true BOTH1=true BOTH2=true
>
> This seems a little simple, but it is at least a reproduction.
>
>
>
More information about the build-dev
mailing list