b50559a91af8adce5272697cbd9b874748f34267
[fw/altos] / src-avr / telescience / Makefile
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 MCU=atmega32u4
16 DUDECPUTYPE=m32u4
17 #PROGRAMMER=stk500v2 -P usb
18 PROGRAMMER=usbtiny
19 LOADCMD=avrdude
20 LOADARG=-p $(DUDECPUTYPE) -c $(PROGRAMMER) -e -U flash:w:
21 CC=avr-gcc -v
22 OBJCOPY=avr-objcopy
23
24 ifndef VERSION
25 include ../Version
26 endif
27
28 INC = \
29         ao.h \
30         ao_usb.h \
31         ao_pins.h \
32         altitude.h \
33         ao_kalman.h
34
35 #
36 # Common AltOS sources
37 #
38 TELESCIENCE_STORAGE= \
39         ao_m25.c \
40         ao_spi_usart.c \
41         ao_storage.c \
42
43 ALTOS_SRC = \
44         ao_cmd.c \
45         ao_mutex.c \
46         ao_panic.c \
47         ao_product.c \
48         ao_stdio.c \
49         ao_task.c \
50         ao_timer.c \
51         ao_led.c \
52         ao_usb_avr.c \
53         ao_adc_avr.c \
54         ao_spi_slave.c \
55         ao_log_telescience.c \
56         $(TELESCIENCE_STORAGE)
57
58 PRODUCT=TeleScience-v0.1
59 MCU=atmega32u4
60 PRODUCT_DEF=-DTELESCIENCE
61 IDPRODUCT=0x000a
62 CFLAGS += -g -mmcu=$(MCU) -Wall -Wstrict-prototypes -Os -mcall-prologues $(PRODUCT_DEF) -I. -DAVR
63
64 NICKLE=nickle
65
66 PROG=telescience-v0.1
67
68 SRC=$(ALTOS_SRC) ao_telescience.c
69 OBJ=$(SRC:.c=.o)
70
71 V=0
72 # The user has explicitly enabled quiet compilation.
73 ifeq ($(V),0)
74 quiet = @printf "  $1 $2 $@\n"; $($1)
75 endif
76 # Otherwise, print the full command line.
77 quiet ?= $($1)
78
79 all: $(PROG)
80
81 CHECK=sh ../check-avr-mem
82
83 $(PROG): Makefile $(OBJ)
84         $(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(OBJ)
85         $(call quiet,CHECK) $(PROG) || ($(RM) -f $(PROG); exit 1)
86
87 $(PROG).hex: $(PROG)
88         avr-size $(PROG)
89         $(OBJCOPY) -R .eeprom -O ihex $(PROG) $@
90
91
92 load: $(PROG).hex
93         $(LOADCMD) $(LOADARG)$(PROG).hex
94
95 ../altitude.h: make-altitude
96         nickle $< > $@
97
98 ao_product.h: ao-make-product.5c ../Version
99         $(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
100
101 ao_product.rel: ao_product.c ao_product.h
102         $(call quiet,CC) -c $(CFLAGS) -D PRODUCT_DEFS='\"ao_product.h\"' -o$@ $<
103
104 distclean:      clean
105
106 clean:
107         rm -f $(OBJ)
108         rm -f ao_product.h
109
110 install:
111
112 uninstall:
113
114 $(OBJ): ao.h ao_product.h ao_usb.h