mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
Reduce build times
U-Boot Makefiles contain a number of tests for compiler features etc. which so far are executed again and again. On some architectures (especially ARM) this results in a large number of calls to gcc. This patch makes sure to run such tests only once, thus largely reducing the number of "execve" system calls. Example: number of "execve" system calls for building the "P2020DS" (Power Architecture) and "qong" (ARM) boards, measured as: -> strace -f -e trace=execve -o /tmp/foo ./MAKEALL <board> -> grep execve /tmp/foo | wc -l Before: After: Reduction: ================================== P2020DS 20555 15205 -26% qong 31692 14490 -54% As a result, built times are significantly reduced, typically by 30...50%. Signed-off-by: Wolfgang Denk <wd@denx.de> Cc: Andy Fleming <afleming@gmail.com> Cc: Kumar Gala <galak@kernel.crashing.org> Cc: Albert Aribaud <albert.aribaud@free.fr> cc: Graeme Russ <graeme.russ@gmail.com> cc: Mike Frysinger <vapier@gentoo.org> Tested-by: Graeme Russ <graeme.russ@gmail.com> Tested-by: Matthias Weisser <weisserm@arcor.de> Tested-by: Sanjeev Premi <premi@ti.com> Tested-by: Simon Glass <sjg@chromium.org> Tested-by: Macpaul Lin <macpaul@gmail.com> Acked-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
4d6402b012
commit
cca4e4aec1
25 changed files with 67 additions and 43 deletions
2
Makefile
2
Makefile
|
@ -320,7 +320,7 @@ else
|
|||
PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
|
||||
endif
|
||||
else
|
||||
PLATFORM_LIBGCC = -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
|
||||
PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
|
||||
endif
|
||||
PLATFORM_LIBS += $(PLATFORM_LIBGCC)
|
||||
export PLATFORM_LIBS
|
||||
|
|
|
@ -34,7 +34,7 @@ endif
|
|||
PLATFORM_CPPFLAGS += -DCONFIG_ARM -D__ARM__
|
||||
|
||||
# Explicitly specifiy 32-bit ARM ISA since toolchain default can be -mthumb:
|
||||
PLATFORM_CPPFLAGS += $(call cc-option,-marm,)
|
||||
PF_CPPFLAGS_ARM := $(call cc-option,-marm,)
|
||||
|
||||
# Try if EABI is supported, else fall back to old API,
|
||||
# i. e. for example:
|
||||
|
@ -44,15 +44,16 @@ PLATFORM_CPPFLAGS += $(call cc-option,-marm,)
|
|||
# -mabi=apcs-gnu -mno-thumb-interwork
|
||||
# - with ELDK 3.1 (gcc 3.x), use:
|
||||
# -mapcs-32 -mno-thumb-interwork
|
||||
PLATFORM_CPPFLAGS += $(call cc-option,\
|
||||
-mabi=aapcs-linux -mno-thumb-interwork,\
|
||||
PF_CPPFLAGS_ABI := $(call cc-option,\
|
||||
-mabi=aapcs-linux -mno-thumb-interwork,\
|
||||
$(call cc-option,\
|
||||
-mapcs-32,\
|
||||
$(call cc-option,\
|
||||
-mapcs-32,\
|
||||
$(call cc-option,\
|
||||
-mabi=apcs-gnu,\
|
||||
)\
|
||||
) $(call cc-option,-mno-thumb-interwork,)\
|
||||
)
|
||||
-mabi=apcs-gnu,\
|
||||
)\
|
||||
) $(call cc-option,-mno-thumb-interwork,)\
|
||||
)
|
||||
PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_ARM) $(PF_CPPFLAGS_ABI)
|
||||
|
||||
# For EABI, make sure to provide raise()
|
||||
ifneq (,$(findstring -mabi=aapcs-linux,$(PLATFORM_CPPFLAGS)))
|
||||
|
|
|
@ -29,4 +29,5 @@ PLATFORM_CPPFLAGS += -march=armv5
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -29,4 +29,6 @@ PLATFORM_CPPFLAGS += -march=armv5t
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,\
|
||||
$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -29,4 +29,6 @@ PLATFORM_CPPFLAGS += -march=armv5t
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,\
|
||||
$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -30,4 +30,6 @@ PLATFORM_CPPFLAGS += -march=armv4 -mtune=arm7tdmi
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,\
|
||||
$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -29,4 +29,5 @@ PLATFORM_CPPFLAGS += -march=armv4
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -29,4 +29,5 @@ PLATFORM_CPPFLAGS += -march=armv4
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
PLATFORM_CPPFLAGS += $(call cc-option,-mtune=arm926ejs,)
|
||||
PF_CPPFLAGS_TUNE := $(call cc-option,-mtune=arm926ejs,)
|
||||
PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_TUNE)
|
||||
|
|
|
@ -29,4 +29,5 @@ PLATFORM_CPPFLAGS += -march=armv5te
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -29,4 +29,5 @@ PLATFORM_CPPFLAGS += -march=armv4
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -29,4 +29,5 @@ PLATFORM_CPPFLAGS += -march=armv4
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -29,5 +29,5 @@ PLATFORM_CPPFLAGS += -march=armv5
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,\
|
||||
$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -29,5 +29,6 @@ PLATFORM_CPPFLAGS += -march=armv5
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,\
|
||||
$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,\
|
||||
$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -37,4 +37,5 @@ LDFLAGS_u-boot += --gc-sections
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -29,4 +29,5 @@ PLATFORM_CPPFLAGS += -march=armv4
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# ========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -30,4 +30,5 @@ PLATFORM_CPPFLAGS += -march=armv5te -mtune=xscale
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# ========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -30,4 +30,5 @@ PLATFORM_CPPFLAGS += -march=armv4 -mtune=arm7tdmi -msoft-float
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# ========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -30,4 +30,5 @@ PLATFORM_CPPFLAGS += -march=armv4 -mtune=strongarm1100
|
|||
# Supply options according to compiler version
|
||||
#
|
||||
# ========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
|
||||
PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT)
|
||||
|
|
|
@ -23,8 +23,7 @@
|
|||
|
||||
include $(TOPDIR)/config.mk
|
||||
ifneq ($(OBJTREE),$(SRCTREE))
|
||||
$(shell mkdir -p $(obj)drivers/epic)
|
||||
$(shell mkdir -p $(obj)drivers/i2c)
|
||||
$(shell mkdir -p $(obj)drivers/epic $(obj)drivers/i2c)
|
||||
endif
|
||||
|
||||
LIB = $(obj)lib$(CPU).o
|
||||
|
|
|
@ -28,5 +28,6 @@ PLATFORM_CPPFLAGS += -ffixed-r2 -Wa,-me500 -msoft-float -mno-string
|
|||
# -mspe=yes is needed to have -mno-spe accepted by a buggy GCC;
|
||||
# see "[PATCH,rs6000] make -mno-spe work as expected" on
|
||||
# http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00311.html
|
||||
PLATFORM_CPPFLAGS +=$(call cc-option,-mspe=yes)
|
||||
PLATFORM_CPPFLAGS +=$(call cc-option,-mno-spe)
|
||||
PF_CPPFLAGS_SPE := $(call cc-option,-mspe=yes) \
|
||||
$(call cc-option,-mno-spe)
|
||||
PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_SPE)
|
||||
|
|
|
@ -27,10 +27,12 @@ PLATFORM_CPPFLAGS += -fno-strict-aliasing
|
|||
PLATFORM_CPPFLAGS += -Wstrict-prototypes
|
||||
PLATFORM_CPPFLAGS += -mregparm=3
|
||||
PLATFORM_CPPFLAGS += -fomit-frame-pointer
|
||||
PLATFORM_CPPFLAGS += $(call cc-option, -ffreestanding)
|
||||
PLATFORM_CPPFLAGS += $(call cc-option, -fno-toplevel-reorder, $(call cc-option, -fno-unit-at-a-time))
|
||||
PLATFORM_CPPFLAGS += $(call cc-option, -fno-stack-protector)
|
||||
PLATFORM_CPPFLAGS += $(call cc-option, -mpreferred-stack-boundary=2)
|
||||
PF_CPPFLAGS_X86 := $(call cc-option, -ffreestanding) \
|
||||
$(call cc-option, -fno-toplevel-reorder, \
|
||||
$(call cc-option, -fno-unit-at-a-time)) \
|
||||
$(call cc-option, -fno-stack-protector) \
|
||||
$(call cc-option, -mpreferred-stack-boundary=2)
|
||||
PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_X86)
|
||||
PLATFORM_CPPFLAGS += -fno-dwarf2-cfi-asm
|
||||
PLATFORM_CPPFLAGS += -DREALMODE_BASE=0x7c0
|
||||
|
||||
|
|
|
@ -24,8 +24,7 @@
|
|||
include $(TOPDIR)/config.mk
|
||||
|
||||
ifneq ($(OBJTREE),$(SRCTREE))
|
||||
$(shell mkdir -p $(obj)../common)
|
||||
$(shell mkdir -p $(obj)../../tqc/tqm8xx)
|
||||
$(shell mkdir -p $(obj)../common $(obj)../../tqc/tqm8xx)
|
||||
endif
|
||||
|
||||
LIB = $(obj)lib$(BOARD).o
|
||||
|
|
|
@ -209,11 +209,13 @@ else
|
|||
CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes
|
||||
endif
|
||||
|
||||
CFLAGS += $(call cc-option,-fno-stack-protector)
|
||||
CFLAGS_SSP := $(call cc-option,-fno-stack-protector)
|
||||
CFLAGS += $(CFLAGS_SSP)
|
||||
# Some toolchains enable security related warning flags by default,
|
||||
# but they don't make much sense in the u-boot world, so disable them.
|
||||
CFLAGS += $(call cc-option,-Wno-format-nonliteral)
|
||||
CFLAGS += $(call cc-option,-Wno-format-security)
|
||||
CFLAGS_WARN := $(call cc-option,-Wno-format-nonliteral) \
|
||||
$(call cc-option,-Wno-format-security)
|
||||
CFLAGS += $(CFLAGS_WARN)
|
||||
|
||||
# $(CPPFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
|
||||
# option to the assembler.
|
||||
|
|
|
@ -85,7 +85,8 @@ endif
|
|||
# We don't want gcc reordering functions if possible. This ensures that an
|
||||
# application's entry point will be the first function in the application's
|
||||
# source file.
|
||||
CFLAGS += $(call cc-option,-fno-toplevel-reorder)
|
||||
CFLAGS_NTR := $(call cc-option,-fno-toplevel-reorder)
|
||||
CFLAGS += $(CFLAGS_NTR)
|
||||
|
||||
all: $(obj).depend $(OBJS) $(LIB) $(SREC) $(BIN) $(ELF)
|
||||
|
||||
|
|
Loading…
Reference in a new issue