summaryrefslogtreecommitdiff
path: root/lib_arm/Makefile
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2009-07-23 13:15:59 +0200
committerWolfgang Denk <wd@denx.de>2009-07-27 00:11:32 +0200
commit52b1bf2c5cd2f8af880dab503d0039b35570665b (patch)
treee9e4be6a20d20700057812ddac99f1c8c09974d7 /lib_arm/Makefile
parent479105065d965121f57b55dcfe83a940cba46ac1 (diff)
downloadu-boot-imx-52b1bf2c5cd2f8af880dab503d0039b35570665b.zip
u-boot-imx-52b1bf2c5cd2f8af880dab503d0039b35570665b.tar.gz
u-boot-imx-52b1bf2c5cd2f8af880dab503d0039b35570665b.tar.bz2
Make linking against libgcc configurable
Many (especially ARM) tool chains seem to come with broken or otherwise unusable (for the purposes of builing U-Boot) run-time support libraries `libgcc.a'. By using the "USE_PRIVATE_LIBGCC" setting we allow to use alternative libraries instead. "USE_PRIVATE_LIBGCC" can either be set as an environment variable in the shell, or as a command line argument when running "make", i. e. $ make USE_PRIVATE_LIBGCC=yes or $ USE_PRIVATE_LIBGCC=yes $ export USE_PRIVATE_LIBGCC $ make The value of "USE_PRIVATE_LIBGCC" is the name of the directory which contains the alternative run-time support library `libgcc.a'. The special value "yes" selects the directory $(OBJTREE)/lib_$(ARCH) . Note that not all architectures provide an alternative `libgcc.a' in their lib_$(ARCH) directories - so far, only ARM does. Signed-off-by: Wolfgang Denk <wd@denx.de> Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Cc: Prafulla Wadaskar <prafulla@marvell.com> cc: Stefan Roese <sr@denx.de>
Diffstat (limited to 'lib_arm/Makefile')
-rw-r--r--lib_arm/Makefile30
1 files changed, 22 insertions, 8 deletions
diff --git a/lib_arm/Makefile b/lib_arm/Makefile
index 4469361..241782c 100644
--- a/lib_arm/Makefile
+++ b/lib_arm/Makefile
@@ -24,13 +24,16 @@
include $(TOPDIR)/config.mk
LIB = $(obj)lib$(ARCH).a
+LIBGCC = $(obj)libgcc.a
-SOBJS-y += _ashldi3.o
-SOBJS-y += _ashrdi3.o
-SOBJS-y += _divsi3.o
-SOBJS-y += _modsi3.o
-SOBJS-y += _udivsi3.o
-SOBJS-y += _umodsi3.o
+GLSOBJS += _ashldi3.o
+GLSOBJS += _ashrdi3.o
+GLSOBJS += _divsi3.o
+GLSOBJS += _modsi3.o
+GLSOBJS += _udivsi3.o
+GLSOBJS += _umodsi3.o
+
+GLCOBJS += div0.o
COBJS-y += board.o
COBJS-y += bootm.o
@@ -38,16 +41,27 @@ COBJS-y += cache.o
ifndef CONFIG_SYS_NO_CP15_CACHE
COBJS-y += cache-cp15.o
endif
-COBJS-y += div0.o
COBJS-y += interrupts.o
COBJS-y += reset.o
-SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
+SRCS := $(GLSOBJS:.o=.S) $(GLCOBJS:.o=.c) \
+ $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
OBJS := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
+LGOBJS := $(addprefix $(obj),$(GLSOBJS)) \
+ $(addprefix $(obj),$(GLCOBJS))
+
+ifdef USE_PRIVATE_LIBGCC
+all: $(LIB) $(LIBGCC)
+else
+all: $(LIB)
+endif
$(LIB): $(obj).depend $(OBJS)
$(AR) $(ARFLAGS) $@ $(OBJS)
+$(LIBGCC): $(obj).depend $(LGOBJS)
+ $(AR) $(ARFLAGS) $@ $(LGOBJS)
+
#########################################################################
# defines $(obj).depend target