-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathMakefile-config.mk
172 lines (164 loc) · 4.46 KB
/
Makefile-config.mk
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# Copyright 2016-2023 Jean-Francois Poilpret
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This file is included by Makefile-lib and Makefile-app to allow simpler command-line usage
# by providing only a configuration (with special naming convention) which will then be
# converted to all variables expected by Makefile-common
# set variables based on each configuration
ifeq ($(findstring UNO,$(CONF)),UNO)
VARIANT:=ARDUINO_UNO
MCU:=atmega328p
ARCH:=avr5
F_CPU:=16000000UL
ifeq ($(PROGRAMMER),)
PROGRAMMER:=UNO
endif
ifeq ($(COM),)
COM:=/dev/ttyACM0
endif
else ifeq ($(findstring NANO,$(CONF)),NANO)
VARIANT:=ARDUINO_NANO
MCU:=atmega328p
ARCH:=avr5
F_CPU:=16000000UL
ifeq ($(PROGRAMMER),)
PROGRAMMER:=NANO
endif
ifeq ($(COM),)
COM:=/dev/ttyUSB0
endif
else ifeq ($(findstring LEONARDO,$(CONF)),LEONARDO)
VARIANT:=ARDUINO_LEONARDO
MCU:=atmega32u4
ARCH:=avr5
F_CPU:=16000000UL
ifeq ($(PROGRAMMER),)
PROGRAMMER:=LEONARDO
endif
#TODO Improve: deduce one from the other
ifeq ($(COM_LEONARDO),)
COM_LEONARDO:=/dev/ttyACM0
endif
ifeq ($(COM),)
COM:=/dev/ttyACM1
endif
else ifeq ($(findstring ATmega328,$(CONF)),ATmega328)
VARIANT:=BREADBOARD_ATMEGA328P
MCU:=atmega328p
ARCH:=avr5
F_CPU:=8000000UL
ifeq ($(PROGRAMMER),)
PROGRAMMER:=ISP
endif
else ifeq ($(findstring ATmega644,$(CONF)),ATmega644)
VARIANT:=BREADBOARD_ATMEGAXX4P
MCU:=atmega644p
ARCH:=avr5
F_CPU:=16000000UL
ifeq ($(PROGRAMMER),)
PROGRAMMER:=ISP
endif
else ifeq ($(findstring ATmega1284,$(CONF)),ATmega1284)
VARIANT:=BREADBOARD_ATMEGAXX4P
MCU:=atmega1284p
ARCH:=avr5
F_CPU:=16000000UL
ifeq ($(PROGRAMMER),)
PROGRAMMER:=ISP
endif
else ifeq ($(findstring ATtiny84,$(CONF)),ATtiny84)
VARIANT:=BREADBOARD_ATTINYX4
MCU:=attiny84
ARCH:=avr25
F_CPU:=8000000UL
ifeq ($(PROGRAMMER),)
PROGRAMMER:=ISP
endif
else ifeq ($(findstring ATtiny85,$(CONF)),ATtiny85)
VARIANT:=BREADBOARD_ATTINYX5
MCU:=attiny85
ARCH:=avr25
F_CPU:=8000000UL
ifeq ($(PROGRAMMER),)
PROGRAMMER:=ISP
endif
else ifeq ($(findstring MEGA,$(CONF)),MEGA)
VARIANT:=ARDUINO_MEGA
MCU:=atmega2560
ARCH:=avr6
F_CPU:=16000000UL
ifeq ($(PROGRAMMER),)
PROGRAMMER:=MEGA
endif
ifeq ($(COM),)
COM:=/dev/ttyACM0
endif
# Add other targets here
endif
# set F_CPU if config name includes it (eg 8MHz, 16MHz)
ifeq ($(findstring 16MHz,$(CONF)),16MHz)
F_CPU:=16000000UL
else ifeq ($(findstring 8MHz,$(CONF)),8MHz)
F_CPU:=8000000UL
else ifeq ($(findstring 20MHz,$(CONF)),20MHz)
F_CPU:=20000000UL
endif
# Set upload options
ifndef DUDE_OPTION
ifeq ($(PROGRAMMER),ISP)
DUDE_OPTION := -c arduinoisp
CAN_PROGRAM_EEPROM := true
CAN_PROGRAM_FUSES := true
else ifeq ($(PROGRAMMER),ISPORG)
DUDE_OPTION := -c arduinoisporg
CAN_PROGRAM_EEPROM := true
CAN_PROGRAM_FUSES := true
else ifeq ($(PROGRAMMER),TINYISP)
DUDE_OPTION := -c usbtiny
CAN_PROGRAM_EEPROM := true
CAN_PROGRAM_FUSES := true
else ifeq ($(PROGRAMMER),SHIELD)
DUDE_OPTION := -c stk500v1 -b 19200
CAN_PROGRAM_EEPROM := true
CAN_PROGRAM_FUSES := true
else ifeq ($(PROGRAMMER),UNO)
DUDE_OPTION := -c arduino -b 115200
else ifeq ($(PROGRAMMER),NANO)
DUDE_OPTION := -c arduino -b 57600
CAN_PROGRAM_EEPROM := true
CAN_PROGRAM_FUSES := true
else ifeq ($(PROGRAMMER),LEONARDO)
DUDE_OPTION := -c avr109 -b 57600
CAN_PROGRAM_EEPROM := true
CAN_PROGRAM_FUSES := true
else ifeq ($(PROGRAMMER),MEGA)
DUDE_OPTION := -c wiring -b 115200
CAN_PROGRAM_EEPROM := true
CAN_PROGRAM_FUSES := true
endif
endif
ifeq ($(origin DUDE_SERIAL),undefined)
DUDE_SERIAL := $(COM)
endif
ifeq ($(origin DUDE_SERIAL_RESET),undefined)
DUDE_SERIAL_RESET := $(COM_LEONARDO)
endif
#$(info $$VARIANT is [${VARIANT}])
#$(info $$ARCH is [${ARCH}])
#$(info $$MCU is [${MCU}])
#$(info $$F_CPU is [${F_CPU}])
#$(info $$DUDE_OPTION is [${DUDE_OPTION}])
#$(info $$DUDE_SERIAL is [${DUDE_SERIAL}])
#$(info $$DUDE_SERIAL_RESET is [${DUDE_SERIAL_RESET}])
#$(info $$CAN_PROGRAM_EEPROM is [${CAN_PROGRAM_EEPROM}])
#$(info $$CAN_PROGRAM_FUSES is [${CAN_PROGRAM_FUSES}])