Make error for ifeq: syntax error near unexpected token

I played around the code and found that the conditional statements should be written without indentation, and this solved my problem.

If there is no indentation, Make will treat it as a directive for itself; otherwise, it's regarded as a shell script.

Example code

Wrong:

target:
    ifeq (foo, bar)
        ...
    endif

Correct:

target:
ifeq (foo, bar)
    ...
endif

In addition, if the conditional statements is used in define functions, like:

define myFunc
ifeq (foo, bar)
    ...
endif
endef

In this case, Make will also treat it as a shell script.

This problem can be solved by using if-function instead:

define myFunc
    $(if condition,then-part[,else-part])
endef

Tags:

Makefile