Hi,

I have amended an example of how to use $(and) that I posted earlier for
Rakesh.  I have tested this on Linux with make 3.81.

It shows a crude way and a slightly more sophisticated way to use $(and) in
an if statement to determine if two variables have equal values:

A=2
> B=4
>
> # do "equal" by seeing if a subst returns the empty string:
> A_is_2:=$(if $(subst 2,,$(A)),,T)
> B_is_4:=$(if $(subst 4,,$(B)),,T)
>
> AandB:=$(and $(A_is_2),$(B_is_4))
>
> # then you could do something based on this:
> $(info Crude AND Demo: )
> ifneq ($(AandB),)
> $(info TRUE: A is 2, B is 4)
> else
> $(info FALSE: A is $(A), B is $(B))
> endif
>
>
> # One could make it look nicer by making an equals macro:
> define eq
> $(if $(1:$(2)=),,$(if $(2:$(1)=),,T))
> endef
>
> # which you could use as follows:
>
> $(info Macro-based AND Demo: )
> ifneq ($(and $(call eq,$(A),2),$(call eq,$(B),4)),)
> $(info TRUE: A is 2, B is 4)
> # do what you want to do when A=2 and B=4
> else
> $(info FALSE: A is $(A), B is $(B))
> endif
>


The output looks like this:



[EMAIL PROTECTED] base]make -f and.mk A=1 B=5
> Crude AND Demo:
> FALSE: A is 1, B is 5
> Macro-based AND Demo:
> FALSE: A is 1, B is 5
> make: *** No targets.  Stop.



>
> [EMAIL PROTECTED] base]make -f and.mk A=2 B=4
> Crude AND Demo:
> TRUE: A is 2, B is 4
> Macro-based AND Demo:
> TRUE: A is 2, B is 4
> make: *** No targets.  Stop.



>
> [EMAIL PROTECTED] base]make -f and.mk A=2 B=3
> Crude AND Demo:
> FALSE: A is 2, B is 3
> Macro-based AND Demo:
> FALSE: A is 2, B is 3
> make: *** No targets.  Stop.
>


2008/6/6 Paul Smith <[EMAIL PROTECTED]>:

> On Fri, 2008-06-06 at 05:05 -0700, rakesh aggarwal wrote:
> > But still there is some problem.
>
> I haven't looked at your example.
>
> But, the very first thing to check is the version of GNU make you're
> using (make --version).  If it's not 3.81, then the manual you're
> reading is not the right one for the version of GNU make you're using.
>
> --
>
> -------------------------------------------------------------------------------
>  Paul D. Smith <[EMAIL PROTECTED]>          Find some GNU make tips at:
>  http://www.gnu.org                      http://make.mad-scientist.us
>  "Please remain calm...I may be mad, but I am a professional." --Mad
> Scientist
>



-- 
You could help some brave and decent people to have access to uncensored
news by making a donation at:

http://www.thezimbabwean.co.uk/
_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to