summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen2002-06-23 04:50:49 +0000
committerEric Andersen2002-06-23 04:50:49 +0000
commit5b0f9e417e8b7c7a0700cea4a550843a8c1af087 (patch)
tree96345c4e4c9f37215f4e71e56912cd42dd43378d
parent27f64e1f4eb4354844f6553e37501deffde8373e (diff)
downloadbusybox-5b0f9e417e8b7c7a0700cea4a550843a8c1af087.zip
busybox-5b0f9e417e8b7c7a0700cea4a550843a8c1af087.tar.gz
Rework optimization code. Be more compiler aware.
-Erik
-rw-r--r--Rules.mak42
1 files changed, 36 insertions, 6 deletions
diff --git a/Rules.mak b/Rules.mak
index 2e9aa27..2b03933 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -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,