push LOAD_ADDR out to arch mk files
[oweals/u-boot.git] / examples / standalone / Makefile
1 #
2 # (C) Copyright 2000-2006
3 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4 #
5 # See file CREDITS for list of people who contributed to this
6 # project.
7 #
8 # This program is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU General Public License as
10 # published by the Free Software Foundation; either version 2 of
11 # the License, or (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21 # MA 02111-1307 USA
22 #
23
24 include $(TOPDIR)/config.mk
25
26 ELF     = hello_world
27 SREC    = hello_world.srec
28 BIN     = hello_world.bin
29
30 ELF     += atmel_df_pow2
31 SREC    += atmel_df_pow2.srec
32 BIN     += atmel_df_pow2.bin
33
34 ifeq ($(CPU),mpc8xx)
35 ELF     += test_burst
36 SREC    += test_burst.srec
37 BIN     += test_burst.bin
38 endif
39
40 ifeq ($(ARCH),i386)
41 ELF     += 82559_eeprom
42 SREC    += 82559_eeprom.srec
43 BIN     += 82559_eeprom.bin
44 endif
45
46 ifeq ($(ARCH),ppc)
47 ELF     += sched
48 SREC    += sched.srec
49 BIN     += sched.bin
50 endif
51
52 ifeq ($(ARCH),blackfin)
53 BFIN_BIN = smc91111_eeprom smc911x_eeprom
54 ELF     += $(BFIN_BIN)
55 SREC    += $(addsuffix .srec,$(BFIN_BIN))
56 BIN     += $(addsuffix .bin,$(BFIN_BIN))
57 endif
58
59 # The following example is pretty 8xx specific...
60 ifeq ($(CPU),mpc8xx)
61 ELF     += timer
62 SREC    += timer.srec
63 BIN     += timer.bin
64 endif
65
66 # The following example is 8260 specific...
67 ifeq ($(CPU),mpc8260)
68 ELF     += mem_to_mem_idma2intr
69 SREC    += mem_to_mem_idma2intr.srec
70 BIN     += mem_to_mem_idma2intr.bin
71 endif
72
73 # Demo for 52xx IRQs
74 ifeq ($(CPU),mpc5xxx)
75 ELF     += interrupt
76 SREC    += interrupt.srec
77 BIN     += interrupt.bin
78 endif
79
80 # Utility for resetting i82559 EEPROM
81 ifeq ($(BOARD),oxc)
82 ELF     += eepro100_eeprom
83 SREC    += eepro100_eeprom.srec
84 BIN     += eepro100_eeprom.bin
85 endif
86
87
88 COBJS   := $(SREC:.srec=.o)
89
90 LIB     = $(obj)libstubs.a
91 LIBAOBJS=
92 ifeq ($(ARCH),ppc)
93 LIBAOBJS+= $(ARCH)_longjmp.o $(ARCH)_setjmp.o
94 endif
95 ifeq ($(CPU),mpc8xx)
96 LIBAOBJS+= test_burst_lib.o
97 endif
98 LIBCOBJS= stubs.o
99
100 LIBOBJS = $(addprefix $(obj),$(LIBAOBJS) $(LIBCOBJS))
101
102 SRCS    := $(COBJS:.o=.c) $(LIBCOBJS:.o=.c) $(if $(LIBAOBJS),$(LIBAOBJS:.o=.S))
103 OBJS    := $(addprefix $(obj),$(COBJS))
104 ELF     := $(addprefix $(obj),$(ELF))
105 BIN     := $(addprefix $(obj),$(BIN))
106 SREC    := $(addprefix $(obj),$(SREC))
107
108 gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
109
110 CPPFLAGS += -I..
111
112 all:    $(obj).depend $(OBJS) $(LIB) $(SREC) $(BIN) $(ELF)
113
114 #########################################################################
115 $(LIB): $(obj).depend $(LIBOBJS)
116                 $(AR) $(ARFLAGS) $@ $(LIBOBJS)
117
118 $(ELF):
119 $(obj)%:        $(obj)%.o $(LIB)
120                 $(LD) -g -Ttext $(STANDALONE_LOAD_ADDR) \
121                         -o $@ -e $(SYM_PREFIX)$(notdir $(<:.o=)) $< $(LIB) \
122                         -L$(gcclibdir) -lgcc
123
124 $(SREC):
125 $(obj)%.srec:   $(obj)%
126                 $(OBJCOPY) -O srec $< $@ 2>/dev/null
127
128 $(BIN):
129 $(obj)%.bin:    $(obj)%
130                 $(OBJCOPY) -O binary $< $@ 2>/dev/null
131
132 #########################################################################
133
134 # defines $(obj).depend target
135 include $(SRCTREE)/rules.mk
136
137 sinclude $(obj).depend
138
139 #########################################################################