xref: /rk3399_rockchip-uboot/examples/standalone/Makefile (revision 0da43893dda8be14b18b2b12dcc48a5e356a742e)
11bc15386SPeter Tyser#
21bc15386SPeter Tyser# (C) Copyright 2000-2006
31bc15386SPeter Tyser# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
41bc15386SPeter Tyser#
51bc15386SPeter Tyser# See file CREDITS for list of people who contributed to this
61bc15386SPeter Tyser# project.
71bc15386SPeter Tyser#
81bc15386SPeter Tyser# This program is free software; you can redistribute it and/or
91bc15386SPeter Tyser# modify it under the terms of the GNU General Public License as
101bc15386SPeter Tyser# published by the Free Software Foundation; either version 2 of
111bc15386SPeter Tyser# the License, or (at your option) any later version.
121bc15386SPeter Tyser#
131bc15386SPeter Tyser# This program is distributed in the hope that it will be useful,
141bc15386SPeter Tyser# but WITHOUT ANY WARRANTY; without even the implied warranty of
151bc15386SPeter Tyser# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
161bc15386SPeter Tyser# GNU General Public License for more details.
171bc15386SPeter Tyser#
181bc15386SPeter Tyser# You should have received a copy of the GNU General Public License
191bc15386SPeter Tyser# along with this program; if not, write to the Free Software
201bc15386SPeter Tyser# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
211bc15386SPeter Tyser# MA 02111-1307 USA
221bc15386SPeter Tyser#
231bc15386SPeter Tyser
241bc15386SPeter Tyserinclude $(TOPDIR)/config.mk
251bc15386SPeter Tyser
26557555feSMike FrysingerELF-$(ARCH)  :=
27557555feSMike FrysingerELF-$(BOARD) :=
28557555feSMike FrysingerELF-$(CPU)   :=
29557555feSMike FrysingerELF-y        := hello_world
301bc15386SPeter Tyser
31557555feSMike FrysingerELF-$(CONFIG_SMC91111)           += smc91111_eeprom
32557555feSMike FrysingerELF-$(CONFIG_SMC911X)            += smc911x_eeprom
33557555feSMike FrysingerELF-$(CONFIG_SPI_FLASH_ATMEL)    += atmel_df_pow2
34557555feSMike FrysingerELF-i386                         += 82559_eeprom
35557555feSMike FrysingerELF-mpc5xxx                      += interrupt
36557555feSMike FrysingerELF-mpc8xx                       += test_burst timer
37557555feSMike FrysingerELF-mpc8260                      += mem_to_mem_idma2intr
38557555feSMike FrysingerELF-ppc                          += sched
39557555feSMike FrysingerELF-oxc                          += eepro100_eeprom
4065f6f07bSMike Frysinger
41604f7ce5SSanjeev Premi#
42604f7ce5SSanjeev Premi# Some versions of make do not handle trailing white spaces properly;
43604f7ce5SSanjeev Premi# leading to build failures. The problem was found with GNU Make 3.80.
44604f7ce5SSanjeev Premi# Using 'strip' as a workaround for the problem.
45604f7ce5SSanjeev Premi#
46604f7ce5SSanjeev PremiELF := $(strip $(ELF-y) $(ELF-$(ARCH)) $(ELF-$(BOARD)) $(ELF-$(CPU)))
47604f7ce5SSanjeev Premi
48*0da43893SChe-liang ChiouSREC := $(addsuffix .srec,$(ELF))
49*0da43893SChe-liang ChiouBIN  := $(addsuffix .bin,$(ELF))
501bc15386SPeter Tyser
51557555feSMike FrysingerCOBJS	:= $(ELF:=.o)
521bc15386SPeter Tyser
536d8962e8SSebastien CarlierLIB	= $(obj)libstubs.o
54557555feSMike Frysinger
55557555feSMike FrysingerLIBAOBJS-$(ARCH)     :=
56557555feSMike FrysingerLIBAOBJS-$(CPU)      :=
57557555feSMike FrysingerLIBAOBJS-ppc         += $(ARCH)_longjmp.o $(ARCH)_setjmp.o
58557555feSMike FrysingerLIBAOBJS-mpc8xx      += test_burst_lib.o
59557555feSMike FrysingerLIBAOBJS := $(LIBAOBJS-$(ARCH)) $(LIBAOBJS-$(CPU))
60557555feSMike Frysinger
611bc15386SPeter TyserLIBCOBJS = stubs.o
621bc15386SPeter Tyser
631bc15386SPeter TyserLIBOBJS	= $(addprefix $(obj),$(LIBAOBJS) $(LIBCOBJS))
641bc15386SPeter Tyser
65557555feSMike FrysingerSRCS	:= $(COBJS:.o=.c) $(LIBCOBJS:.o=.c) $(LIBAOBJS:.o=.S)
661bc15386SPeter TyserOBJS	:= $(addprefix $(obj),$(COBJS))
671bc15386SPeter TyserELF	:= $(addprefix $(obj),$(ELF))
681bc15386SPeter TyserBIN	:= $(addprefix $(obj),$(BIN))
691bc15386SPeter TyserSREC	:= $(addprefix $(obj),$(SREC))
701bc15386SPeter Tyser
711bc15386SPeter Tysergcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
721bc15386SPeter Tyser
731bc15386SPeter TyserCPPFLAGS += -I..
741bc15386SPeter Tyser
75620bbba5SPeter Tyser# For PowerPC there's no need to compile standalone applications as a
76620bbba5SPeter Tyser# relocatable executable.  The relocation data is not needed, and
77620bbba5SPeter Tyser# also causes the entry point of the standalone application to be
78620bbba5SPeter Tyser# inconsistent.
79620bbba5SPeter Tyserifeq ($(ARCH),powerpc)
80620bbba5SPeter TyserAFLAGS := $(filter-out $(RELFLAGS),$(AFLAGS))
81620bbba5SPeter TyserCFLAGS := $(filter-out $(RELFLAGS),$(CFLAGS))
82620bbba5SPeter TyserCPPFLAGS := $(filter-out $(RELFLAGS),$(CPPFLAGS))
83620bbba5SPeter Tyserendif
84620bbba5SPeter Tyser
85c91d456cSPeter Tyser# We don't want gcc reordering functions if possible.  This ensures that an
86c91d456cSPeter Tyser# application's entry point will be the first function in the application's
87c91d456cSPeter Tyser# source file.
88c91d456cSPeter TyserCFLAGS += $(call cc-option,-fno-toplevel-reorder)
89c91d456cSPeter Tyser
901bc15386SPeter Tyserall:	$(obj).depend $(OBJS) $(LIB) $(SREC) $(BIN) $(ELF)
911bc15386SPeter Tyser
921bc15386SPeter Tyser#########################################################################
931bc15386SPeter Tyser$(LIB):	$(obj).depend $(LIBOBJS)
946d8962e8SSebastien Carlier	$(call cmd_link_o_target, $(LIBOBJS))
951bc15386SPeter Tyser
961bc15386SPeter Tyser$(ELF):
971bc15386SPeter Tyser$(obj)%:	$(obj)%.o $(LIB)
988ae86b76SWolfgang Denk		$(LD) -g -Ttext $(CONFIG_STANDALONE_LOAD_ADDR) \
991bc15386SPeter Tyser			-o $@ -e $(SYM_PREFIX)$(notdir $(<:.o=)) $< $(LIB) \
1001bc15386SPeter Tyser			-L$(gcclibdir) -lgcc
1011bc15386SPeter Tyser
1021bc15386SPeter Tyser$(SREC):
1031bc15386SPeter Tyser$(obj)%.srec:	$(obj)%
1041bc15386SPeter Tyser		$(OBJCOPY) -O srec $< $@ 2>/dev/null
1051bc15386SPeter Tyser
1061bc15386SPeter Tyser$(BIN):
1071bc15386SPeter Tyser$(obj)%.bin:	$(obj)%
1081bc15386SPeter Tyser		$(OBJCOPY) -O binary $< $@ 2>/dev/null
1091bc15386SPeter Tyser
1101bc15386SPeter Tyser#########################################################################
1111bc15386SPeter Tyser
1121bc15386SPeter Tyser# defines $(obj).depend target
1131bc15386SPeter Tyserinclude $(SRCTREE)/rules.mk
1141bc15386SPeter Tyser
1151bc15386SPeter Tysersinclude $(obj).depend
1161bc15386SPeter Tyser
1171bc15386SPeter Tyser#########################################################################
118