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