-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
85 lines (66 loc) · 1.93 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
SRC=src
INCLUDE=include
BIN=bin
OBJ=obj
LIB=lib
EXTLIB=extlib
LUFA_PATH=./$(EXTLIB)/LUFA-120219/LUFA
DOC=doc
MCU=atmega32u4
ARCH=AVR8
BOARD=USBKEY
F_CPU=16000000
F_USB=$(F_CPU)
F_CLOCK=$(F_CPU)
RMDIR=rm -rf
RM=rm -f
CP=cp -f
CPDIR=cp -rf
ECHO=@echo
MV=mv -f
MKDIR=mkdir -p
INSTALL=apt-get install -y
CONTROLLER=-mmcu=$(MCU)
CC=avr-gcc
MODULES_=pin pinoperations typedefs led button time usb globals descriptors ez3 servo temperature
MODULES=$(addsuffix .o, $(addprefix $(OBJ)/, $(MODULES_)))
CFLAGS=-Wall -g -c -std=c99 -Os -fpic -DPIC -I$(INCLUDE) -I$(LUFA_PATH)/Drivers/USB -I$(LUFA_PATH)/Drivers/USB/Core/AVR8 -I$(LUFA_PATH) $(CONTROLLER) -DF_CPU=$(F_CPU) -DF_USB=$(F_USB) -DMCU=$(MCU) -DARCH=$(ARCH) -DBOARD=$(BOARD) -DF_CLOCK=$(F_CLOCK) -DUSE_FLASH_DESCRIPTORS -DUSE_STATIC_OPTIONS="(USE_DEVICE_OPT_FULLSPEED | USB_OPT_AUTO_PLL)" -DUSB_DEVICE_ONLY
installmain: $(BIN)/main.hex
avrdude -p m32u4 -P /dev/ttyACM0 -c avr109 -U flash:w:$<:i
installdemo: $(BIN)/demo.hex
avrdude -p m32u4 -P /dev/ttyACM0 -c avr109 -U flash:w:$<:i
main: $(BIN)/main.hex
demo: $(BIN)/demo.hex
lufa: $(LIB)/liblufa.a
$(LIB)/liblufa.a:
$(MKDIR) $(LIB)
$(CP) $(EXTLIB)/liblufa.a $@
$(BIN)/main.elf: $(MODULES) $(OBJ)/main.o
make lufa
$(MKDIR) $(BIN)
$(CC) $(CONTROLLER) -o $@ $^ -L$(LIB) -llufa
$(BIN)/demo.elf: $(MODULES) $(OBJ)/demo.o
make lufa
$(MKDIR) $(BIN)
$(CC) $(CONTROLLER) -o $@ $^ -L$(LIB) -llufa
$(BIN)/main.hex: $(BIN)/main.elf
avr-objcopy -j .text -j .data -O ihex $^ $@
$(BIN)/demo.hex: $(BIN)/demo.elf
avr-objcopy -j .text -j .data -O ihex $^ $@
clean:
$(RMDIR) $(BIN)
$(RMDIR) $(OBJ)
$(RMDIR) $(LIB)
$(OBJ)/%.o: $(SRC)/%.c
$(MKDIR) $(OBJ)
$(CC) $(CFLAGS) -o $@ $<
installdep:
$(INSTALL) avr-libc gcc-avr avrdude doxygen binutils-avr
doku: $(INCLUDE)/ $(DOC)/html/index.html
doxygen
$(DOC):
doku
example: $(BIN)/example
$(BIN)/example: $(SRC)/example.c
$(MKDIR) $(BIN)
gcc -Wall -g -std=c99 -Os -o $@ $< -lusb-1.0 -I/usr/include/libusb-1.0