ao_intflash: Avoid overwriting code
[fw/altos] / src / Makefile.proto
1 #
2 # AltOS build
3 #
4 #
5 vpath %.c ..
6 vpath %.h ..
7 vpath make-altitude ..
8 vpath ao-make-product.5c ..
9
10 CC=sdcc
11
12 ifndef VERSION
13 include ../Version
14 endif
15
16 CFLAGS=--model-small --debug --opt-code-speed -DCODESIZE=$(CODESIZE)
17
18 CODESIZE ?= 0x8000
19
20 LDFLAGS=--out-fmt-ihx --code-loc 0x0000 --code-size $(CODESIZE) \
21         --xram-loc 0xf000 --xram-size 0xda2 --iram-size 0xff
22
23 INC = \
24         ao.h \
25         ao_pins.h \
26         cc1111.h \
27         altitude.h \
28         25lc1024.h
29
30 #
31 # Common AltOS sources
32 #
33 ALTOS_SRC = \
34         ao_cmd.c \
35         ao_dma.c \
36         ao_mutex.c \
37         ao_panic.c \
38         ao_task.c \
39         ao_timer.c \
40         ao_romconfig.c \
41         _bp.c
42
43 #
44 # Shared AltOS drivers
45 #
46 ALTOS_DRIVER_SRC = \
47         ao_config.c \
48         ao_led.c \
49         ao_radio.c \
50         ao_stdio.c
51
52 BEEP_DRIVER_SRC = \
53         ao_beep.c
54
55 USB_DRIVER_SRC = \
56         ao_usb.c
57
58 TELE_COMMON_SRC = \
59         ao_packet.c \
60         ao_packet_slave.c \
61         ao_state.c
62
63 #
64 # Receiver code
65 #
66 TELE_RECEIVER_SRC =\
67         ao_monitor.c \
68         ao_gps_print.c \
69         ao_packet_master.c \
70         ao_rssi.c
71
72 #
73 # Shared Tele drivers (on TeleMetrum, TeleTerra, TeleDongle)
74 #
75
76 TELE_DRIVER_SRC = \
77         ao_convert.c
78
79 #
80 # Serial port driver
81 #
82 SERIAL_DRIVER_SRC = \
83         ao_serial.c
84
85 #
86 # Spi bus driver
87 #
88 SPI_DRIVER_SRC = \
89         ao_spi.c
90
91 #
92 # Debug dongle driver (only on TI)
93 #
94 DBG_SRC = \
95         ao_dbg.c
96
97 #
98 # Drivers only on TeleMetrum
99 #
100 TM_DRIVER_SRC = \
101         ao_adc.c \
102         ao_gps_report.c \
103         ao_ignite.c \
104         $(BEEP_DRIVER_SRC) \
105         $(USB_DRIVER_SRC)
106
107 #
108 # 25LC1024 driver source
109 EE_DRIVER_SRC = \
110         ao_storage.c \
111         ao_ee.c
112
113 #
114 # AT45DB161D driver source
115
116 FLASH_DRIVER_SRC = \
117         ao_storage.c \
118         ao_flash.c
119
120 #
121 # Numonyx M25P80 driver source
122 #
123
124 M25_DRIVER_SRC = \
125         ao_storage.c \
126         ao_m25.c
127
128 #
129 # SiRF driver source
130 #
131 SIRF_DRIVER_SRC = \
132         ao_gps_sirf.c
133 #
134 # Skytraq driver source
135 #
136 SKY_DRIVER_SRC = \
137         ao_gps_skytraq.c
138
139 #
140 # Tasks run on TeleMetrum
141 #
142 TM_TASK_SRC = \
143         ao_flight.c \
144         ao_log.c \
145         ao_report.c \
146         ao_telemetry.c
147
148 TM_MAIN_SRC = \
149         ao_telemetrum.c
150
151 #
152 # Base sources for TeleMetrum
153 #
154 TM_BASE_SRC = \
155         $(ALTOS_SRC) \
156         $(ALTOS_DRIVER_SRC) \
157         $(TELE_DRIVER_SRC) \
158         $(SERIAL_DRIVER_SRC) \
159         $(TELE_COMMON_SRC) \
160         $(TM_DRIVER_SRC) \
161         $(TM_TASK_SRC) \
162         $(TM_MAIN_SRC)
163
164 #
165 # Sources for TeleMini
166 TMINI_DRIVER_SRC = \
167         ao_adc.c \
168         ao_ignite.c \
169         ao_config.c \
170         ao_storage.c \
171         ao_intflash.c
172
173 TMINI_TASK_SRC = \
174         ao_flight.c \
175         ao_log.c \
176         ao_report.c \
177         ao_telemetry.c
178
179 TMINI_MAIN_SRC = \
180         ao_telemini.c
181
182 TMINI_BASE_SRC = \
183         $(ALTOS_SRC) \
184         $(ALTOS_DRIVER_SRC) \
185         $(TELE_DRIVER_SRC) \
186         $(TELE_COMMON_SRC) \
187         $(TMINI_DRIVER_SRC) \
188         $(TMINI_TASK_SRC) \
189         $(TMINI_MAIN_SRC)
190
191 TI_MAIN_SRC = \
192         ao_tidongle.c
193
194 #
195 # All sources for the TI debug dongle
196 #
197 TI_SRC = \
198         $(ALTOS_SRC) \
199         $(ALTOS_DRIVER_SRC) \
200         $(TELE_RECEIVER_SRC) \
201         $(TELE_COMMON_SRC) \
202         $(USB_DRIVER_SRC) \
203         $(TI_MAIN_SRC) \
204         $(DBG_SRC)
205
206 TT_MAIN_SRC = \
207         ao_teleterra.c
208 #
209 # All sources for TeleTerra
210 #
211 TT_SRC = \
212         $(ALTOS_SRC) \
213         $(ALTOS_DRIVER_SRC) \
214         $(TELE_RECEIVER_SRC) \
215         $(TELE_DRIVER_SRC) \
216         $(TELE_COMMON_SRC) \
217         $(USB_DRIVER_SRC) \
218         $(TT_MAIN_SRC)
219
220
221 #
222 # Sources for TeleDongle
223 #
224
225 TD_MAIN_SRC = \
226         ao_teledongle.c
227
228 TD_SRC = \
229         $(ALTOS_SRC) \
230         $(ALTOS_DRIVER_SRC) \
231         $(TELE_RECEIVER_SRC) \
232         $(TELE_COMMON_SRC) \
233         $(USB_DRIVER_SRC) \
234         $(TD_MAIN_SRC)
235
236 include Makefile.defs
237
238 CFLAGS += $(PRODUCT_DEF) -I.
239
240 NICKLE=nickle
241 CHECK_STACK=sh ../check-stack
242
243 REL=$(SRC:.c=.rel) ao_product.rel
244 ADB=$(REL:.rel=.adb)
245 ASM=$(REL:.rel=.asm)
246 LNK=$(REL:.rel=.lnk)
247 LST=$(REL:.rel=.lst)
248 RST=$(REL:.rel=.rst)
249 SYM=$(REL:.rel=.sym)
250
251 PCDB=$(PROG:.ihx=.cdb)
252 PLNK=$(PROG:.ihx=.lnk)
253 PMAP=$(PROG:.ihx=.map)
254 PMEM=$(PROG:.ihx=.mem)
255 PAOM=$(PROG:.ihx=)
256
257 V=0
258 # The user has explicitly enabled quiet compilation.
259 ifeq ($(V),0)
260 quiet = @printf "  $1 $2 $@\n"; $($1)
261 endif
262 # Otherwise, print the full command line.
263 quiet ?= $($1)
264
265 %.rel : %.c $(INC)
266         $(call quiet,CC,$(PRODUCT_DEF)) $(CFLAGS) -c -o$@ $<
267
268 all: ../$(PROG)
269
270 ../$(PROG): $(REL) Makefile Makefile.defs ../Makefile.proto
271         $(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) ..
272         $(call quiet,CHECK_STACK) ../ao.h $(PMEM)
273
274 ../altitude.h: make-altitude
275         nickle $< > $@
276
277 ao_product.h: ao-make-product.5c ../Version
278         $(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
279
280 ao_product.rel: ao_product.c ao_product.h
281         $(call quiet,CC) -c $(CFLAGS) -D PRODUCT_DEFS='\"ao_product.h\"' -o$@ $<
282
283 distclean:      clean
284
285 clean:
286         rm -f $(ADB) $(ASM) $(LNK) $(LST) $(REL) $(RST) $(SYM)
287         rm -f $(PCDB) $(PLNK) $(PMAP) $(PMEM) $(PAOM)
288         rm -f ao_product.h
289         rm -f ../$(PROG)
290
291 install:
292
293 uninstall: