|
From: | Tim Murphy |
Subject: | Re: Help : how to use $(or condition ) & $(and condition ) in makefile |
Date: | Tue, 17 Jun 2008 17:31:27 +0100 |
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
address@hidden 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.
address@hidden 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.
address@hidden 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.
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 <address@hidden> 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
[Prev in Thread] | Current Thread | [Next in Thread] |