altos: Explicitly list the linker script needed for AVR targets.
[fw/altos] / src / telescience-pwm / Makefile
1 #
2 # AltOS build
3 #
4 #
5 vpath % ..:../core:../product:../drivers:../avr
6 vpath ao-make-product.5c ../util
7
8 MCU=atmega32u4
9 DUDECPUTYPE=m32u4
10 #PROGRAMMER=stk500v2 -P usb
11 PROGRAMMER=usbtiny
12 LOADCMD=avrdude
13 LOADARG=-p $(DUDECPUTYPE) -c $(PROGRAMMER) -e -U flash:w:
14 CC=avr-gcc
15 OBJCOPY=avr-objcopy
16
17 LDFLAGS=-L/usr/lib/ldscripts -Tavr5.x
18
19 ifndef VERSION
20 include ../Version
21 endif
22
23 INC = \
24         ao.h \
25         ao_arch.h \
26         ao_usb.h \
27         ao_pins.h \
28         ao_product.h
29
30 #
31 # Common AltOS sources
32 #
33 TELESCIENCE_STORAGE= \
34         ao_m25.c \
35         ao_spi_usart.c \
36         ao_storage.c
37
38 TELESCIENCE_LOG= \
39         ao_log_single.c \
40         ao_log_telescience.c
41
42 ALTOS_SRC = \
43         ao_clock.c \
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_avr_stdio.c \
53         ao_romconfig.c \
54         ao_usb_avr.c \
55         ao_adc_avr.c \
56         ao_science_slave.c \
57         ao_spi_slave.c \
58         ao_pwmin.c \
59         $(TELESCIENCE_STORAGE)\
60         $(TELESCIENCE_LOG)
61
62 PRODUCT=TeleScience-PWM
63 MCU=atmega32u4
64 PRODUCT_DEF=-DTELESCIENCE -DTELESCIENCE_PWM
65 IDPRODUCT=0x0011
66 CFLAGS = $(PRODUCT_DEF) -I. -I../avr -I../core -I..
67 CFLAGS += -g -mmcu=$(MCU) -Wall -Wstrict-prototypes -O3 -mcall-prologues -DAVR
68
69 NICKLE=nickle
70
71 PROG=telescience-pwm
72
73 SRC=$(ALTOS_SRC) ao_telescience.c
74 OBJ=$(SRC:.c=.o)
75
76 V=0
77 # The user has explicitly enabled quiet compilation.
78 ifeq ($(V),0)
79 quiet = @printf "  $1 $2 $@\n"; $($1)
80 endif
81 # Otherwise, print the full command line.
82 quiet ?= $($1)
83
84 all: $(PROG)
85
86 CHECK=sh ../util/check-avr-mem
87
88 $(PROG): Makefile $(OBJ)
89         $(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(OBJ)
90         $(call quiet,CHECK) $(PROG) || ($(RM) -f $(PROG); exit 1)
91
92 $(PROG).hex: $(PROG)
93         avr-size $(PROG)
94         $(OBJCOPY) -R .eeprom -O ihex $(PROG) $@
95
96
97 load: $(PROG).hex
98         $(LOADCMD) $(LOADARG)$(PROG).hex
99
100 ao_product.h: ao-make-product.5c ../Version
101         $(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
102
103 ao_product.o: ao_product.c ao_product.h
104
105 %.o : %.c $(INC)
106         $(call quiet,CC) -c $(CFLAGS) $<
107
108 distclean:      clean
109
110 clean:
111         rm -f *.o $(PROG) $(PROG).hex
112         rm -f ao_product.h
113
114 install:
115
116 uninstall:
117
118 $(OBJ): ao_product.h $(INC)