In some cases like trying to build a package with debug config
(e.g. make cfg mode=debug; .... ; make deb), the CPU make variable
was reset resulting in a build failure. This happens because in
the debug config CPU is not set and hence is saved as empty.
Trying to build a package will start a sub-make which will try to
re-do the config without debugging (make cfg), but the CPU
variable with and empty value will be inherited from the
environment and thus the CPU?=something lines won't have any
effect.
The fix replaces CPU?=something with
$(call set_if_empty,CPU,something)
This works around having an empty CPU in the environment.
Reported-by: Jan Janak <jan@iptel.org>
$(info normal Makefile.defs exec)
endif # verbose
$(info normal Makefile.defs exec)
endif # verbose
+# usage: $(call set_if_empty,VAR,value)
+set_if_empty=$(if $($(1)),,$(eval override $(1)=$(2)))
+
# flavour: sip-router, ser or kamailio
# flavour: sip-router, ser or kamailio
+$(call set_if_empty,FLAVOUR,sip-router)
#prefix for various configs and scripts
#config name/name-prefix for distributed configs
#prefix for various configs and scripts
#config name/name-prefix for distributed configs
CFLAGS=-g -O9 -funroll-loops -Wcast-align $(PROFILE)
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
CFLAGS=-g -O9 -funroll-loops -Wcast-align $(PROFILE)
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
+$(call set_if_empty,CPU,athlon64)
CFLAGS+=-m32 -minline-all-stringops \
-falign-loops \
-ftree-vectorize \
CFLAGS+=-m32 -minline-all-stringops \
-falign-loops \
-ftree-vectorize \
else
#if gcc 4.0+
ifeq ($(CC_SHORTVER), 4.x)
else
#if gcc 4.0+
ifeq ($(CC_SHORTVER), 4.x)
+$(call set_if_empty,CPU,athlon64)
CFLAGS+=-m32 -minline-all-stringops \
-falign-loops \
-ftree-vectorize \
CFLAGS+=-m32 -minline-all-stringops \
-falign-loops \
-ftree-vectorize \
else
#if gcc 3.4+
ifeq ($(CC_SHORTVER), 3.4)
else
#if gcc 3.4+
ifeq ($(CC_SHORTVER), 3.4)
+$(call set_if_empty,CPU,athlon)
CFLAGS+=-m32 -minline-all-stringops \
-falign-loops \
-mtune=$(CPU)
CFLAGS+=-m32 -minline-all-stringops \
-falign-loops \
-mtune=$(CPU)
else
#if gcc 3.0+
ifeq ($(CC_SHORTVER), 3.0)
else
#if gcc 3.0+
ifeq ($(CC_SHORTVER), 3.0)
+$(call set_if_empty,CPU,athlon)
CFLAGS+=-minline-all-stringops \
-falign-loops \
-mcpu=$(CPU)
CFLAGS+=-minline-all-stringops \
-falign-loops \
-mcpu=$(CPU)
CFLAGS=-g -O9 -funroll-loops -Wcast-align $(PROFILE)
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
CFLAGS=-g -O9 -funroll-loops -Wcast-align $(PROFILE)
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
+$(call set_if_empty,CPU,opteron)
CFLAGS+=-m64 -minline-all-stringops \
-falign-loops \
-ftree-vectorize \
CFLAGS+=-m64 -minline-all-stringops \
-falign-loops \
-ftree-vectorize \
else
#if gcc 4.0+
ifeq ($(CC_SHORTVER), 4.x)
else
#if gcc 4.0+
ifeq ($(CC_SHORTVER), 4.x)
+$(call set_if_empty,CPU,opteron)
CFLAGS+=-m64 -minline-all-stringops \
-falign-loops \
-ftree-vectorize \
CFLAGS+=-m64 -minline-all-stringops \
-falign-loops \
-ftree-vectorize \
else
#if gcc 3.4
ifeq ($(CC_SHORTVER), 3.4)
else
#if gcc 3.4
ifeq ($(CC_SHORTVER), 3.4)
+$(call set_if_empty,CPU,athlon64)
CFLAGS+=-m64 -minline-all-stringops \
-falign-loops
LDFLAGS+=-m64
else
#if gcc 3.0
ifeq ($(CC_SHORTVER), 3.0)
CFLAGS+=-m64 -minline-all-stringops \
-falign-loops
LDFLAGS+=-m64
else
#if gcc 3.0
ifeq ($(CC_SHORTVER), 3.0)
+$(call set_if_empty,CPU,athlon64)
CFLAGS+=-minline-all-stringops \
-falign-loops
#-mcpu=$(CPU) \ # not working on all x86_64 gccs
CFLAGS+=-minline-all-stringops \
-falign-loops
#-mcpu=$(CPU) \ # not working on all x86_64 gccs
#-Wmissing-prototypes
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
#-Wmissing-prototypes
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
+$(call set_if_empty,CPU,ultrasparc)
#use 32bit for now
CFLAGS+=-m64 -mcpu=ultrasparc \
-mtune=$(CPU) \
#use 32bit for now
CFLAGS+=-m64 -mcpu=ultrasparc \
-mtune=$(CPU) \
else
#if gcc 4.x
ifeq ($(CC_SHORTVER), 4.x)
else
#if gcc 4.x
ifeq ($(CC_SHORTVER), 4.x)
+$(call set_if_empty,CPU,ultrasparc)
#use 32bit for now
CFLAGS+=-m64 -mcpu=ultrasparc \
-mtune=$(CPU) \
#use 32bit for now
CFLAGS+=-m64 -mcpu=ultrasparc \
-mtune=$(CPU) \
else
#if gcc 3.4
ifeq ($(CC_SHORTVER), 3.4)
else
#if gcc 3.4
ifeq ($(CC_SHORTVER), 3.4)
+$(call set_if_empty,CPU,ultrasparc)
#use 32bit for now
CFLAGS+=-m64 -mcpu=ultrasparc -mtune=$(CPU)
LDFLAGS+=-m64
else
#if gcc 3.0
ifeq ($(CC_SHORTVER), 3.0)
#use 32bit for now
CFLAGS+=-m64 -mcpu=ultrasparc -mtune=$(CPU)
LDFLAGS+=-m64
else
#if gcc 3.0
ifeq ($(CC_SHORTVER), 3.0)
+$(call set_if_empty,CPU,ultrasparc)
#use 32bit for now
CFLAGS+=-m64 -mcpu=ultrasparc -mtune=$(CPU) \
# -mcpu=v9 or ultrasparc? # -mtune implied by -mcpu
#use 32bit for now
CFLAGS+=-m64 -mcpu=ultrasparc -mtune=$(CPU) \
# -mcpu=v9 or ultrasparc? # -mtune implied by -mcpu
#-Wmissing-prototypes
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
#-Wmissing-prototypes
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
+$(call set_if_empty,CPU,v8)
#use 32bit for now
CFLAGS+= -mtune=$(CPU) \
-fno-strict-overflow \
#use 32bit for now
CFLAGS+= -mtune=$(CPU) \
-fno-strict-overflow \
else
#if gcc 4.x
ifeq ($(CC_SHORTVER), 4.x)
else
#if gcc 4.x
ifeq ($(CC_SHORTVER), 4.x)
+$(call set_if_empty,CPU,v8)
#use 32bit for now
CFLAGS+= -mtune=$(CPU) \
-ftree-vectorize
else
#if gcc 3.4
ifeq ($(CC_SHORTVER), 3.4)
#use 32bit for now
CFLAGS+= -mtune=$(CPU) \
-ftree-vectorize
else
#if gcc 3.4
ifeq ($(CC_SHORTVER), 3.4)
+$(call set_if_empty,CPU,v8)
#use 32bit for now
CFLAGS+= -mtune=$(CPU)
else
#if gcc 3.0
ifeq ($(CC_SHORTVER), 3.0)
#use 32bit for now
CFLAGS+= -mtune=$(CPU)
else
#if gcc 3.0
ifeq ($(CC_SHORTVER), 3.0)
+$(call set_if_empty,CPU,v8)
#use 32bit for now
CFLAGS+= -mtune=$(CPU) \
#-mno-epilogue #try to inline function exit code
#use 32bit for now
CFLAGS+= -mtune=$(CPU) \
#-mno-epilogue #try to inline function exit code
CFLAGS= -O9 -funroll-loops -fsigned-char $(PROFILE)
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
CFLAGS= -O9 -funroll-loops -fsigned-char $(PROFILE)
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
+$(call set_if_empty,CPU,powerpc)
CFLAGS+=-ftree-vectorize \
-fno-strict-overflow \
-mtune=$(CPU) -maltivec
else
#if gcc 4.0+
ifeq ($(CC_SHORTVER), 4.x)
CFLAGS+=-ftree-vectorize \
-fno-strict-overflow \
-mtune=$(CPU) -maltivec
else
#if gcc 4.0+
ifeq ($(CC_SHORTVER), 4.x)
+$(call set_if_empty,CPU,powerpc)
CFLAGS+=-ftree-vectorize \
-mtune=$(CPU) -maltivec
else
CFLAGS+=-ftree-vectorize \
-mtune=$(CPU) -maltivec
else
CFLAGS= -O9 -funroll-loops -fsigned-char $(PROFILE)
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
CFLAGS= -O9 -funroll-loops -fsigned-char $(PROFILE)
#if gcc 4.2+
ifeq ($(CC_SHORTVER), 4.2+)
+$(call set_if_empty,CPU,powerpc64)
CFLAGS+=-ftree-vectorize \
-fno-strict-overflow \
-mtune=$(CPU) -maltivec
else
#if gcc 4.0+
ifeq ($(CC_SHORTVER), 4.x)
CFLAGS+=-ftree-vectorize \
-fno-strict-overflow \
-mtune=$(CPU) -maltivec
else
#if gcc 4.0+
ifeq ($(CC_SHORTVER), 4.x)
+$(call set_if_empty,CPU,powerpc64)
CFLAGS+=-ftree-vectorize \
-mtune=$(CPU) -maltivec
else
CFLAGS+=-ftree-vectorize \
-mtune=$(CPU) -maltivec
else