diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-06-23 04:50:49 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-06-23 04:50:49 +0000 |
commit | 5b0f9e417e8b7c7a0700cea4a550843a8c1af087 (patch) | |
tree | 96345c4e4c9f37215f4e71e56912cd42dd43378d | |
parent | 27f64e1f4eb4354844f6553e37501deffde8373e (diff) | |
download | busybox-5b0f9e417e8b7c7a0700cea4a550843a8c1af087.tar.gz |
Rework optimization code. Be more compiler aware.
-Erik
-rw-r--r-- | Rules.mak | 42 |
1 files changed, 36 insertions, 6 deletions
@@ -111,16 +111,46 @@ export VERSION BUILDTIME TOPDIR HOSTCC HOSTCFLAGS CROSS CC AR AS LD NM STRIP CPP #CROSS_CFLAGS+=-nostdinc -I$(LIBCDIR)/include -I$(GCCINCDIR) #GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp") -# use '-Os' optimization if available, else use -O2 -OPTIMIZATION:=${shell if $(CC) -Os -S -o /dev/null -xc /dev/null \ - >/dev/null 2>&1; then echo "-Os"; else echo "-O2" ; fi} -GCC_STACK_BOUNDRY:=${shell if $(CC) -mpreferred-stack-boundary=2 -S -o /dev/null -xc /dev/null \ - >/dev/null 2>&1; then echo "-mpreferred-stack-boundary=2"; else echo "" ; fi} -OPTIMIZATIONS:=$(OPTIMIZATION) -fomit-frame-pointer $(GCC_STACK_BOUNDRY) #-fstrict-aliasing -march=i386 -mcpu=i386 -malign-functions=0 -malign-jumps=0 WARNINGS:=-Wall -Wstrict-prototypes -Wshadow CFLAGS:=-I$(TOPDIR)include ARFLAGS:=-r +TARGET_ARCH:=${shell $(CC) -dumpmachine | sed -e s'/-.*//' \ + -e 's/i.86/i386/' \ + -e 's/sparc.*/sparc/' \ + -e 's/arm.*/arm/g' \ + -e 's/m68k.*/m68k/' \ + -e 's/ppc/powerpc/g' \ + -e 's/v850.*/v850/g' \ + -e 's/sh[234]/sh/' \ + -e 's/mips.*/mips/' \ + } + +#-------------------------------------------------------- +# Arch specific compiler optimization stuff should go here. +# Unless you want to override the defaults, do not set anything +# for OPTIMIZATION... + +# use '-Os' optimization if available, else use -O2 +OPTIMIZATION := ${shell if $(CC) -Os -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \ + then echo "-Os"; else echo "-O2" ; fi} + +# Some nice architecture specific optimizations +ifeq ($(strip $(TARGET_ARCH)),arm) + OPTIMIZATION+=-fstrict-aliasing +endif +ifeq ($(strip $(TARGET_ARCH)),i386) + OPTIMIZATION+=-march=i386 + OPTIMIZATION+=${shell if $(CC) -mpreferred-stack-boundary=2 -S -o /dev/null -xc \ + /dev/null >/dev/null 2>&1; then echo "-mpreferred-stack-boundary=2"; fi} + OPTIMIZATION+=${shell if $(CC) -falign-functions=1 -falign-jumps=0 -falign-loops=0 \ + -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo \ + "-falign-functions=1 -falign-jumps=0 -falign-loops=0"; else \ + if $(CC) -malign-functions=0 -malign-jumps=0 -S -o /dev/null -xc \ + /dev/null >/dev/null 2>&1; then echo "-malign-functions=0 -malign-jumps=0"; fi; fi} +endif +OPTIMIZATIONS:=$(OPTIMIZATION) -fomit-frame-pointer + # #-------------------------------------------------------- # If you're going to do a lot of builds with a non-vanilla configuration, |