forked from acemielektron/fddEMU
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
102 lines (84 loc) · 3.26 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
TARGET = fddEMU
#MCU = atmega32u4
MCU = atmega328p
OSC = 16000000UL
CC = avr-gcc
CXX = avr-g++
INCLUDES = -I ./ -I libs/avrFlux -I libs/petitfs -I libs/u8glib/csrc -I /usr/avr/include -I /usr/lib/avr/include
INCLUDES += -I usb-cdc -I libs/lufa -I libs/lufa/LUFA/Drivers
DUAL = 0 #enable drive B = 1
DEBUG = 0 #enable debug = 1
FLIP = 1 #flip scren upside down = 1
WDT = 1 #WDT enabled = 1
VFFS = 0 #Virtual FLoppy Disabled
GUI = 1 #Graphical User Interface enabled
SERIAL = 0 #Serial disabled
OPT = s #OPT = s (Optimize for size) OPT=3 (Optimize for speed)
ifeq ($(MCU),atmega32u4)
PORT = /dev/ttyACM0
else
PORT = /dev/ttyUSB0
endif
# Files
EXT_C = c
EXT_C++ = cpp
EXT_ASM = S
LUFAOBJS = \
$(patsubst %.$(EXT_C),%.o,$(wildcard ./usb-cdc/*.$(EXT_C)))\
$(patsubst %.$(EXT_C),%.o,$(wildcard ./libs/lufa/LUFA/Drivers/USB/Core/*.$(EXT_C)))\
$(patsubst %.$(EXT_C),%.o,$(wildcard ./libs/lufa/LUFA/Drivers/USB/Core/AVR8/*.$(EXT_C)))\
$(patsubst %.$(EXT_C),%.o,$(wildcard ./libs/lufa/LUFA/Drivers/USB/Core/AVR8/Template/*.$(EXT_C)))\
$(patsubst %.$(EXT_C),%.o,$(wildcard ./libs/lufa/LUFA/Drivers/USB/Class/Device/*.$(EXT_C)))\
$(patsubst %.$(EXT_C),%.o,$(wildcard ./libs/lufa/LUFA/Drivers/USB/Class/Common/*.$(EXT_C)))\
$(patsubst %.$(EXT_C),%.o,$(wildcard ./libs/lufa/LUFA/Drivers/USB/Peripheral/AVR8/*.$(EXT_C)))
U8GOBJS = \
$(patsubst %.$(EXT_C),%.o,$(wildcard libs/u8glib/csrc/*.$(EXT_C)))\
$(patsubst %.$(EXT_C),%.o,$(wildcard libs/u8glib/sfntsrc/*.$(EXT_C)))
PFSOBJS = \
$(patsubst %.$(EXT_C),%.o,$(wildcard libs/petitfs/*.$(EXT_C)))
FLUXOBJS = \
$(patsubst %.$(EXT_C),%.o,$(wildcard libs/avrFlux/*.$(EXT_C)))
SRCOBJS = \
$(patsubst %.$(EXT_C),%.o,$(wildcard ./src/*.$(EXT_C))) \
$(patsubst %.$(EXT_C++),%.o,$(wildcard ./src/*.$(EXT_C++))) \
$(patsubst %.$(EXT_ASM),%.o,$(wildcard ./src/*.$(EXT_ASM)))
OBJECTS := $(SRCOBJS) $(FLUXOBJS) $(PFSOBJS) $(U8GOBJS)
ifeq ($(MCU),atmega32u4)
OBJECTS += $(LUFAOBJS)
endif
COMMONFLAGS = -O$(OPT) -mmcu=$(MCU) -DF_CPU=$(OSC) -Wall $(INCLUDES)
COMMONFLAGS += -ffunction-sections -fdata-sections -Wl,--gc-sections
LUFAFLAGS = -DF_USB=$(OSC) -DUSE_LUFA_CONFIG_HEADER
SRCFLAGS += -DENABLE_DRIVE_B=$(DUAL) -DDEBUG=$(DEBUG) -DFLIP_SCREEN=$(FLIP) -DENABLE_WDT=$(WDT)
SRCFLAGS += -DENABLE_VFFS=$(VFFS) -DENABLE_GUI=$(GUI) -DENABLE_SERIAL=$(SERIAL) $(LUFAFLAGS)
#$(SRCOBJS): CXXFLAGS := $(COMMONFLAGS) $(SRCFLAGS)
#$(SRCOBJS): CFLAGS := $(COMMONFLAGS) $(SRCFLAGS)
#$(FLUXOBJS): CFLAGS := $(COMMONFLAGS) $(SRCFLAGS)
#$(PFSOBJS): CFLAGS := $(COMMONFLAGS) $(SRCFLAGS)
#$(U8GOBJS): CFLAGS := $(COMMONFLAGS)
#$(LUFAOBJS): CFLAGS := $(COMMONFLAGS) $(LUFAFLAGS)
CFLAGS = $(COMMONFLAGS) $(SRCFLAGS) $(LUFAFLAGS)
CXXFLAGS = $(COMMONFLAGS) $(SRCFLAGS) $(LUFAFLAGS)
LINKERFLAG = -lm -g
all: $(TARGET).elf size hex
$(TARGET).elf: $(OBJECTS)
$(CC) $(CFLAGS) $(LINKERFLAG) $^ -o $@
%.o: %.cpp
${CXX} -c $(CXXFLAGS) $< -o $@
%.o: %c
${CC} -c $(CFLAGS) $< -o $@
.PHONY : clean, hex, flash, bin, size, all
hex:
avr-objcopy -O ihex $(TARGET).elf $(TARGET).hex
bin:
avr-objcopy -O binary $(TARGET).elf $(TARGET).bin
size:
avr-size --mcu=$(MCU) -C -x $(TARGET).elf
flash:
ifeq ($(MCU),atmega32u4)
avrdude -p $(MCU) -c avr109 -P $(PORT) -U flash:w:$(TARGET).hex
else
avrdude -p $(MCU) -c arduino -P $(PORT) -U flash:w:$(TARGET).hex
endif
clean :
rm $(TARGET).elf $(OBJECTS)