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