dect
/
asterisk
Archived
13
0
Fork 0

Use "-march=native" when possible.

Recent versions of GCC have a tuning option value of 'native', which causes
the compiler to optimize the build for the CPU the compile is performed on.
Since most people are building Asterisk on the machine they plan to run it on,
the configure script and build system will now use this value unless a different
value is specified by the user in CFLAGS when the configure script is executed.
In addition, this value will be used for building the GSM and LPC10 codecs as
well, in preference to the logic that has been in their Makefiles forever to
optimize for certain types of CPUs.



git-svn-id: http://svn.digium.com/svn/asterisk/trunk@310332 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
kpfleming 2011-03-11 15:09:23 +00:00
parent 0d726a6c65
commit f1bfb02b4f
6 changed files with 492 additions and 532 deletions

View File

@ -223,19 +223,25 @@ ifneq ($(findstring BSD,$(OSARCH)),)
endif
ifeq ($(findstring -march,$(_ASTCFLAGS) $(ASTCFLAGS)),)
ifneq ($(AST_MARCH_NATIVE),)
_ASTCFLAGS+=$(AST_MARCH_NATIVE)
else
ifneq ($(PROC),ultrasparc)
_ASTCFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
endif
endif
endif
ifeq ($(PROC),ppc)
_ASTCFLAGS+=-fsigned-char
endif
ifeq ($(OSARCH),FreeBSD)
ifeq ($(findstring -march,$(_ASTCFLAGS) $(ASTCFLAGS)),)
ifeq ($(PROC),i386)
_ASTCFLAGS+=-march=i686
endif
endif
# -V is understood by BSD Make, not by GNU make.
BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
_ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)

View File

@ -45,6 +45,10 @@ ifeq ($(shell $(CC) -v 2>&1 | awk '/^gcc version/ { split($$3, v, "."); printf "
OPTIMIZE=-O2
endif
# If the compiler's '-march' flag has been specified already, then assume it's a value
# that is what the user wants (or has been determined by the configure script). If not,
# do some simple logic to set a decent value
ifeq ($(findstring -march,$(_ASTCFLAGS) $(ASTCFLAGS)),)
ifeq (,$(findstring $(shell uname -s),Darwin SunOS))
ifeq (,$(strip $(findstring $(PROC) ,"x86_64 amd64 ultrasparc sparc64 arm armv5b armeb ppc powerpc ppc64 ia64 s390 bfin mipsel mips ")))
ifeq (,$(strip $(findstring $(shell uname -m) ,"ppc ppc64 alpha armv4l s390 ")))
@ -68,6 +72,7 @@ endif
ifeq ($(PROC),ultrasparc)
OPTIMIZE+=-mcpu=v8 -mtune=$(PROC) -O3
endif
endif
PG =
#PG = -g -pg

View File

@ -27,6 +27,10 @@ CFLAGS+= -fPIC -Wno-comment
# fails miserably. Remove it for the time being.
_ASTCFLAGS:=$(_ASTCFLAGS:-Werror=)
# If the compiler's '-march' flag has been specified already, then assume it's a value
# that is what the user wants (or has been determined by the configure script). If not,
# do some simple logic to set a decent value
ifeq ($(findstring -march,$(_ASTCFLAGS) $(ASTCFLAGS)),)
#fix for PPC processors and ALPHA, And UltraSparc too
ifneq ($(OSARCH),Darwin)
ifneq ($(findstring BSD,${OSARCH}),BSD)
@ -52,6 +56,7 @@ ifneq ($(OSARCH),Darwin)
endif
endif
endif
endif
LIB = $(LIB_TARGET_DIR)/liblpc10.a

903
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -918,6 +918,16 @@ else
fi
AC_SUBST(AST_SHADOW_WARNINGS)
AC_MSG_CHECKING(for -march=native)
if $(${CC} -march=native -S -o /dev/null -xc /dev/null > /dev/null 2>&1); then
AC_MSG_RESULT(yes)
AST_MARCH_NATIVE="-march=native"
else
AC_MSG_RESULT(no)
AST_MARCH_NATIVE=
fi
AC_SUBST(AST_MARCH_NATIVE)
AC_MSG_CHECKING(for sysinfo)
AC_LINK_IFELSE(
AC_LANG_PROGRAM([#include <sys/sysinfo.h>],

View File

@ -100,6 +100,7 @@ AST_DECLARATION_AFTER_STATEMENT=@AST_DECLARATION_AFTER_STATEMENT@
AST_NO_STRICT_OVERFLOW=@AST_NO_STRICT_OVERFLOW@
AST_SHADOW_WARNINGS=@AST_SHADOW_WARNINGS@
AST_FORTIFY_SOURCE=@AST_FORTIFY_SOURCE@
AST_MARCH_NATIVE=@AST_MARCH_NATIVE@
ALSA_INCLUDE=@ALSA_INCLUDE@
ALSA_LIB=@ALSA_LIB@