Hi Tim, Thanks for your response. But still there is some problem. Just look the below code and its output: Code: A=1 B=1 $(warning A=$(A), B=$(B)) res_A := $(subst 2,,$(A)) res_B := $(subst 1,,$(B)) $(warning res_A=$(res_A), res_B=$(res_B)) first := $(and $(res_A), $(res_B)) second := $(and $(subst 2,,$(A)), $(subst 2,,$(B))) third := $(or $(subst 1,,$(A)), $(subst 2,,$(B))) $(warning first=$(first), second=$(second), third= $(third)) Output : makefile:3: A=1, B=1 makefile:7: res_A=1, res_B= makefile:15: first=, second=, third= But, according to gmake manual: $(or condition1[,condition2[,condition3...]]) The or function provides a “short-circuiting” OR operation. Each argument is expanded, in order. If an argument expands to a non-empty string the processing stops and the result of the expansion is that string. If, after all arguments are expanded, all of them are false (empty), then the result of the expansion is the empty string. $(and condition1[,condition2[,condition3...]]) The and function provides a “short-circuiting” AND operation. Each argument is expanded, in order. If an argument expands to an empty string the processing stops and the result of the expansion is the empty string. If all arguments expand to a non-empty string then the result of the expansion is the expansion of the last argument. I am not getting why it is returning empty string for all conditions. As far as my knowledge it should return first= second = 1 third=1 am I correct ??????? I am not able to find out the reason for this response. Can you help me in this problem ? Thanks and Regards Rakesh --- On Fri, 6/6/08, Tim Murphy <[EMAIL PROTECTED]> wrote: From: Tim Murphy <[EMAIL PROTECTED]> Subject: Re: Help : how to use $(or condition ) & $(and condition ) in makefile To: [EMAIL PROTECTED] Date: Friday, June 6, 2008, 3:40 PM Hi, # 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: ifneq ($(AandB),) # do something . . . . 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: ifneq ($(and $(call eq,$(A),2),$(call eq,$(B),4)),) # do what you want to do when A=2 and B=4 # . . . .. . . endif Cheers, Tim 2008/6/6 rakesh aggarwal <[EMAIL PROTECTED]>: Hi sam, Very very thanks for your valuable suggestion. I have one debut that I am explaining through this example. I have 2 variable (let assume A and B) which contain some value. I want to test A==2 and B==4 using $(and condition) function. How can I put this condition in function?? I want only different output for the situation when any of the condition is wrong (either A != 2 or B != 4) and both are right (A ==2 and B==4 ). result := $(and condition ) $(warning result=$(result)) Regards Rakesh --- On Thu, 6/5/08, Sam Ravnborg <[EMAIL PROTECTED]> wrote: From: Sam Ravnborg <[EMAIL PROTECTED]> Subject: Re: Help : how to use $(or condition ) & $(and condition ) in makefiles To: "rakesh aggarwal" <[EMAIL PROTECTED]> Cc: bug-make@gnu.org Date: Thursday, June 5, 2008, 11:28 PM On Thu, Jun 05, 2008 at 05:36:56AM -0700, rakesh aggarwal wrote: > Hi, > > I read the GNU make manual and found there are $(or condition ) and $(and condition ) functions. ( at http://www.gnu.org/software/make/manual/make.html#Conditional-Functions ) > But i didnt get in which format i have to put conditions in these functions. Notice that this is condition and not expressions. Sample: havefile := $(if $(wildcard myfile.c), YES, NO) $(warning HAVEFILE=$(HAVEFILE)) This will print HAVEFILE=NO if no myfile.c exist (because the $(wildcard myfile.c) expands to an empty string Sam _______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make -- 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