Skip to content

Commit 2442daf

Browse files
committed
Moved the PARSE_BOARD macro from Arduino.mk to Common.mk.
There seems to be 3 different macros to parse the boards.txt file. This patch moves the PARSE_BOARD macro from Arduino.mk to Common.mk. The PARSE_OPENCM and PARSE_TEENSY macros in Teensy.mk and OpenCM.mk were removed and the common PARSE_BOARD is now being called from everywhere. Advantages of this fix are: 1. Less code, i.e. no redundant parse macros. 2. A single standardized algorithm to parse the boards.txt file.
1 parent 22ca636 commit 2442daf

File tree

5 files changed

+55
-65
lines changed

5 files changed

+55
-65
lines changed

Arduino.mk

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -585,11 +585,6 @@ else
585585
$(call show_config_variable,BOARD_TAG,[USER])
586586
endif
587587

588-
ifndef PARSE_BOARD
589-
# result = $(call READ_BOARD_TXT, 'boardname', 'parameter')
590-
PARSE_BOARD = $(shell grep -Ev '^\#' $(BOARDS_TXT) | grep -E "^[ \t]*$(1).$(2)=" | cut -d = -f 2 | cut -d : -f 2)
591-
endif
592-
593588
# If NO_CORE is set, then we don't have to parse boards.txt file
594589
# But the user might have to define MCU, F_CPU etc
595590
ifeq ($(strip $(NO_CORE)),)

Common.mk

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ COMMON_INCLUDED = TRUE
55
# (directory and optional filename) exists
66
dir_if_exists = $(if $(wildcard $(1)$(2)),$(1))
77

8+
ifndef PARSE_BOARD
9+
# result = $(call READ_BOARD_TXT, 'boardname', 'parameter')
10+
PARSE_BOARD = $(shell grep -Ev '^\#' $(BOARDS_TXT) | grep -E "^[ \t]*$(1).$(2)=" | cut -d = -f 2 | cut -d : -f 2)
11+
endif
12+
813
# Run a shell script if it exists. Stops make on error.
914
runscript_if_exists = \
1015
$(if $(wildcard $(1)), \

HISTORY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ I tried to give credit whenever possible. If I have missed anyone, kindly add it
2222
- New: Compatibility with deprecated pgmspace.h API can now be disabled since it sometimes causes bogus compiler warnings (issue #546)
2323
- New: Support Arduino ARM SAMD devices (Zero, M0 Pro, Feather M0). (https://github.com/tuna-f1sh)
2424
- New: Support Arduino ARM SAM devices (Due). (https://github.com/tuna-f1sh)
25+
- New: Moved the PARSE_BOARD macro to Common.mk and use only this to parse the boards.txt file. (https://github.com/wingunder)
2526

2627
### 1.6.0 (2017-07-11)
2728
- Fix: Allowed for SparkFun's weird usb pid/vid submenu shenanigans (issue #499). (https://github.com/sej7278)

OpenCM.mk

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,12 @@ ifndef BOARDS_TXT
4444
BOARDS_TXT = $(ARDUINO_DIR)/hardware/$(ARDMK_VENDOR)/boards.txt
4545
endif
4646

47-
ifndef PARSE_OPENCM
48-
# result = $(call READ_BOARD_TXT, 'boardname', 'parameter')
49-
PARSE_OPENCM = $(shell grep -v "^\#" "$(BOARDS_TXT)" | grep $(1).$(2) | cut -d = -f 2- )
50-
endif
51-
5247
ifndef F_CPU
53-
F_CPU := $(call PARSE_OPENCM,$(BOARD_TAG),build.f_cpu)
48+
F_CPU := $(call PARSE_BOARD,$(BOARD_TAG),build.f_cpu)
5449
endif
5550

5651
# if boards.txt gets modified, look there, else hard code it
57-
ARCHITECTURE = $(call PARSE_OPENCM,$(BOARD_TAG),build.architecture)
52+
ARCHITECTURE = $(call PARSE_BOARD,$(BOARD_TAG),build.architecture)
5853
ifeq ($(strip $(ARCHITECTURE)),)
5954
ARCHITECTURE = arm
6055
endif
@@ -75,7 +70,7 @@ endif
7570
# command names
7671

7772
ifndef CC_NAME
78-
CC_NAME := $(call PARSE_OPENCM,$(BOARD_TAG),build.command.gcc)
73+
CC_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.gcc)
7974
ifndef CC_NAME
8075
CC_NAME := arm-none-eabi-gcc
8176
else
@@ -84,7 +79,7 @@ ifndef CC_NAME
8479
endif
8580

8681
ifndef CXX_NAME
87-
CXX_NAME := $(call PARSE_OPENCM,$(BOARD_TAG),build.command.g++)
82+
CXX_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.g++)
8883
ifndef CXX_NAME
8984
CXX_NAME := arm-none-eabi-g++
9085
else
@@ -93,7 +88,7 @@ ifndef CXX_NAME
9388
endif
9489

9590
ifndef AS_NAME
96-
AS_NAME := $(call PARSE_OPENCM,$(BOARD_TAG),build.command.as)
91+
AS_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.as)
9792
ifndef AS_NAME
9893
AS_NAME := arm-none-eabi-as
9994
else
@@ -102,7 +97,7 @@ ifndef AS_NAME
10297
endif
10398

10499
ifndef OBJDUMP_NAME
105-
OBJDUMP_NAME := $(call PARSE_OPENCM,$(BOARD_TAG),build.command.objdump)
100+
OBJDUMP_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.objdump)
106101
ifndef OBJDUMP_NAME
107102
OBJDUMP_NAME := arm-none-eabi-objdump
108103
else
@@ -111,7 +106,7 @@ ifndef OBJDUMP_NAME
111106
endif
112107

113108
ifndef AR_NAME
114-
AR_NAME := $(call PARSE_OPENCM,$(BOARD_TAG),build.command.ar)
109+
AR_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.ar)
115110
ifndef AR_NAME
116111
AR_NAME := arm-none-eabi-ar
117112
else
@@ -120,7 +115,7 @@ ifndef AR_NAME
120115
endif
121116

122117
ifndef SIZE_NAME
123-
SIZE_NAME := $(call PARSE_OPENCM,$(BOARD_TAG),build.command.size)
118+
SIZE_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.size)
124119
ifndef SIZE_NAME
125120
SIZE_NAME := arm-none-eabi-size
126121
else
@@ -129,7 +124,7 @@ ifndef SIZE_NAME
129124
endif
130125

131126
ifndef NM_NAME
132-
NM_NAME := $(call PARSE_OPENCM,$(BOARD_TAG),build.command.nm)
127+
NM_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.nm)
133128
ifndef NM_NAME
134129
NM_NAME := arm-none-eabi-nm
135130
else
@@ -138,7 +133,7 @@ ifndef NM_NAME
138133
endif
139134

140135
ifndef OBJCOPY_NAME
141-
OBJCOPY_NAME := $(call PARSE_OPENCM,$(BOARD_TAG),build.command.objcopy)
136+
OBJCOPY_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.objcopy)
142137
ifndef OBJCOPY_NAME
143138
OBJCOPY_NAME := arm-none-eabi-objcopy
144139
else
@@ -148,7 +143,7 @@ endif
148143

149144
# processor stuff
150145
ifndef MCU
151-
MCU := $(call PARSE_OPENCM,$(BOARD_TAG),build.family)
146+
MCU := $(call PARSE_BOARD,$(BOARD_TAG),build.family)
152147
endif
153148

154149
ifndef MCU_FLAG_NAME
@@ -161,20 +156,20 @@ ifndef USB_TYPE
161156
USB_TYPE = USB_SERIAL
162157
endif
163158

164-
CPPFLAGS += -DBOARD_$(call PARSE_OPENCM,$(BOARD_TAG),build.board)
165-
CPPFLAGS += -DMCU_$(call PARSE_OPENCM,$(BOARD_TAG),build.mcu)
159+
CPPFLAGS += -DBOARD_$(call PARSE_BOARD,$(BOARD_TAG),build.board)
160+
CPPFLAGS += -DMCU_$(call PARSE_BOARD,$(BOARD_TAG),build.mcu)
166161
CPPFLAGS += -DSTM32_MEDIUM_DENSITY -DVECT_TAB_FLASH
167162

168-
CPPFLAGS += $(call PARSE_OPENCM,$(BOARD_TAG),build.option)
163+
CPPFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.option)
169164

170165
CXXFLAGS += -fno-rtti
171166

172-
CXXFLAGS += $(call PARSE_OPENCM,$(BOARD_TAG),build.cppoption)
173-
ifeq ("$(call PARSE_OPENCM,$(BOARD_TAG),build.gnu0x)","true")
167+
CXXFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.cppoption)
168+
ifeq ("$(call PARSE_BOARD,$(BOARD_TAG),build.gnu0x)","true")
174169
CXXFLAGS_STD += -std=gnu++0x
175170
endif
176171

177-
ifeq ("$(call PARSE_OPENCM,$(BOARD_TAG),build.elide_constructors)", "true")
172+
ifeq ("$(call PARSE_BOARD,$(BOARD_TAG),build.elide_constructors)", "true")
178173
CXXFLAGS += -felide-constructors
179174
endif
180175

@@ -209,7 +204,7 @@ ifeq ($(CURRENT_OS), WINDOWS)
209204
else
210205
override AVRDUDE_ARD_OPTS = $(call get_monitor_port)
211206
endif
212-
207+
213208
override AVRDUDE_UPLOAD_HEX = $(TARGET_HEX)
214209

215210
########################################################################

Teensy.mk

Lines changed: 31 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -38,25 +38,19 @@ ARDUINO_CORE_PATH = $(ARDUINO_DIR)/hardware/teensy/avr/cores/teensy3
3838
BOARDS_TXT = $(ARDUINO_DIR)/hardware/$(ARDMK_VENDOR)/avr/boards.txt
3939

4040

41-
ifndef PARSE_TEENSY
42-
# result = $(call READ_BOARD_TXT, 'boardname', 'parameter')
43-
PARSE_TEENSY = $(shell grep -v "^\#" "$(BOARDS_TXT)" | grep $(1).$(2) | cut -d = -f 2- )
44-
endif
45-
46-
4741
ifndef F_CPU
4842
ifndef BOARD_SUB
49-
SPEEDS := $(call PARSE_TEENSY,"$(BOARD_TAG),menu.speed.*.build.fcpu") # Obtain sequence of supported frequencies.
43+
SPEEDS := $(call PARSE_BOARD,"$(BOARD_TAG),menu.speed.*.build.fcpu") # Obtain sequence of supported frequencies.
5044
SPEEDS := $(shell printf "%d\n" $(SPEEDS) | sort -g) # Sort it, just in case. Printf to re-append newlines so that sort works.
5145
F_CPU := $(lastword $(SPEEDS)) # List is sorted in ascending order. Take the fastest speed.
5246
#$(info "speeds is " $(SPEEDS)) # Good for debugging
5347
else
54-
F_CPU := $(call PARSE_TEENSY,$(BOARD_TAG),menu.speed.$(BOARD_SUB).build.fcpu)
48+
F_CPU := $(call PARSE_BOARD,$(BOARD_TAG),menu.speed.$(BOARD_SUB).build.fcpu)
5549
endif
5650
endif
5751

5852
# if boards.txt gets modified, look there, else hard code it
59-
ARCHITECTURE = $(call PARSE_TEENSY,$(BOARD_TAG),build.architecture)
53+
ARCHITECTURE = $(call PARSE_BOARD,$(BOARD_TAG),build.architecture)
6054
ifeq ($(strip $(ARCHITECTURE)),)
6155
ARCHITECTURE = arm
6256
endif
@@ -73,7 +67,7 @@ endif
7367
# command names
7468

7569
ifndef CC_NAME
76-
CC_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.gcc)
70+
CC_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.gcc)
7771
ifndef CC_NAME
7872
CC_NAME := arm-none-eabi-gcc
7973
else
@@ -82,7 +76,7 @@ ifndef CC_NAME
8276
endif
8377

8478
ifndef CXX_NAME
85-
CXX_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.g++)
79+
CXX_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.g++)
8680
ifndef CXX_NAME
8781
CXX_NAME := arm-none-eabi-g++
8882
else
@@ -91,7 +85,7 @@ ifndef CXX_NAME
9185
endif
9286

9387
ifndef AS_NAME
94-
AS_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.as)
88+
AS_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.as)
9589
ifndef AS_NAME
9690
AS_NAME := arm-none-eabi-gcc-as
9791
else
@@ -100,7 +94,7 @@ ifndef AS_NAME
10094
endif
10195

10296
ifndef OBJCOPY_NAME
103-
OBJCOPY_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.objcopy)
97+
OBJCOPY_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.objcopy)
10498
ifndef OBJCOPY_NAME
10599
OBJCOPY_NAME := arm-none-eabi-objcopy
106100
else
@@ -109,7 +103,7 @@ ifndef OBJCOPY_NAME
109103
endif
110104

111105
ifndef OBJDUMP_NAME
112-
OBJDUMP_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.objdump)
106+
OBJDUMP_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.objdump)
113107
ifndef OBJDUMP_NAME
114108
OBJDUMP_NAME := arm-none-eabi-objdump
115109
else
@@ -118,7 +112,7 @@ ifndef OBJDUMP_NAME
118112
endif
119113

120114
ifndef AR_NAME
121-
AR_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.ar)
115+
AR_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.ar)
122116
ifndef AR_NAME
123117
AR_NAME := arm-none-eabi-ar
124118
else
@@ -127,7 +121,7 @@ ifndef AR_NAME
127121
endif
128122

129123
ifndef SIZE_NAME
130-
SIZE_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.size)
124+
SIZE_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.size)
131125
ifndef SIZE_NAME
132126
SIZE_NAME := arm-none-eabi-size
133127
else
@@ -136,7 +130,7 @@ ifndef SIZE_NAME
136130
endif
137131

138132
ifndef NM_NAME
139-
NM_NAME := $(call PARSE_TEENSY,$(BOARD_TAG),build.command.nm)
133+
NM_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.nm)
140134
ifndef NM_NAME
141135
NM_NAME := arm-none-eabi-gcc-nm
142136
else
@@ -146,7 +140,7 @@ endif
146140

147141
# processor stuff
148142
ifndef MCU
149-
MCU := $(call PARSE_TEENSY,$(BOARD_TAG),build.mcu)
143+
MCU := $(call PARSE_BOARD,$(BOARD_TAG),build.mcu)
150144
endif
151145

152146
ifndef MCU_FLAG_NAME
@@ -161,39 +155,39 @@ endif
161155

162156
CPPFLAGS += -DLAYOUT_US_ENGLISH -D$(USB_TYPE)
163157

164-
CPPFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.option)
158+
CPPFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.option)
165159

166-
CXXFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.cppoption)
167-
ifeq ("$(call PARSE_TEENSY,$(BOARD_TAG),build.gnu0x)","true")
160+
CXXFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.cppoption)
161+
ifeq ("$(call PARSE_BOARD,$(BOARD_TAG),build.gnu0x)","true")
168162
CXXFLAGS_STD += -std=gnu++0x
169163
endif
170164

171-
ifeq ("$(call PARSE_TEENSY,$(BOARD_TAG),build.elide_constructors)", "true")
165+
ifeq ("$(call PARSE_BOARD,$(BOARD_TAG),build.elide_constructors)", "true")
172166
CXXFLAGS += -felide-constructors
173167
endif
174168

175-
CXXFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.common)
176-
CXXFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpu)
177-
CXXFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.defs)
178-
CXXFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpp)
169+
CXXFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.common)
170+
CXXFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.cpu)
171+
CXXFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.defs)
172+
CXXFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.cpp)
179173

180-
CFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.common)
181-
CFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpu)
182-
CFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.defs)
174+
CFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.common)
175+
CFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.cpu)
176+
CFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.defs)
183177

184-
ASFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.common)
185-
ASFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpu)
186-
ASFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.defs)
187-
ASFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.S)
178+
ASFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.common)
179+
ASFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.cpu)
180+
ASFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.defs)
181+
ASFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.S)
188182

189-
LDFLAGS += $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpu)
183+
LDFLAGS += $(call PARSE_BOARD,$(BOARD_TAG),build.flags.cpu)
190184

191-
AMCU := $(call PARSE_TEENSY,$(BOARD_TAG),build.mcu)
185+
AMCU := $(call PARSE_BOARD,$(BOARD_TAG),build.mcu)
192186
LDFLAGS += -Wl,--gc-sections,--relax
193187
LINKER_SCRIPTS = -T${ARDUINO_CORE_PATH}/${AMCU}.ld
194-
OTHER_LIBS = $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.libs)
188+
OTHER_LIBS = $(call PARSE_BOARD,$(BOARD_TAG),build.flags.libs)
195189

196-
CPUFLAGS = $(call PARSE_TEENSY,$(BOARD_TAG),build.flags.cpu)
190+
CPUFLAGS = $(call PARSE_BOARD,$(BOARD_TAG),build.flags.cpu)
197191
# usually defined as per teensy31.build.mcu=mk20dx256 but that isn't valid switch
198192
MCU := $(shell echo ${CPUFLAGS} | sed -n -e 's/.*-mcpu=\([a-zA-Z0-9_-]*\).*/\1/p')
199193

0 commit comments

Comments
 (0)