Complex conditions check in Makefile

If your make is GNU-make and all the defined variables include a non-space
character,

ifdef VAR1 && VAR2 && VAR3

can be written as

ifneq ($(and $(VAR1),$(VAR2),$(VAR3)),)

On a related note, probably and function requires version 3.81 or later.

In case some defined variables may be empty strings,
if we prepare the following functions:

ifndef_any_of = $(filter undefined,$(foreach v,$(1),$(origin $(v))))
ifdef_any_of = $(filter-out undefined,$(foreach v,$(1),$(origin $(v))))

then the following conditions:

ifdef VAR1 || VAR2
ifdef VAR1 && VAR2

can be written respectively using call function:

ifneq ($(call ifdef_any_of,VAR1 VAR2),)
ifeq ($(call ifndef_any_of,VAR1 VAR2),)

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)