Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Makefile ifeq logical AND

I would like to check multiple conditions in an if loop of GNU make file. Here's an example:

ifeq ($(TEST_FLAG),TRUE && ($(DEBUG_FLAG),FALSE)) true statement  else  false statement endif 

What's the right way to do it?

like image 354
Arun Kumar Avatar asked Jun 23 '11 08:06

Arun Kumar


People also ask

How do I use IFEQ in Makefile?

The ifeq directive begins the conditional, and specifies the condition. It contains two arguments, separated by a comma and surrounded by parentheses. Variable substitution is performed on both arguments and then they are compared.

What does ?= Mean in Makefile?

?= indicates to set the KDIR variable only if it's not set/doesn't have a value. For example: KDIR ?= "foo" KDIR ?= "bar" test: echo $(KDIR)


1 Answers

You can use ifeq with a concatenation of your values, eg.

ifeq ($(TEST_FLAG)$(DEBUG_FLAG),TRUEFALSE)    do something endif 

It's also possible to use the Conditional functions, which are more likely to be useful in a loop (as ifeq will probably not do what you expect in a loop, it will be tested exactly once).

like image 136
Hasturkun Avatar answered Sep 19 '22 14:09

Hasturkun