Skip to content

Commit b3c5127

Browse files
committed
Allow compatibility with old pgmspace API to be disabled by the user
When this compatibility mode is enabled, code that is entirely compliant with the new pgmspace API can still raise deprecation warnings when symbols present in both the old and new APIs (for example, PGM_P) are used. Clearly, these warnings are false positives. They can be avoided by disabling the compatibility mode. This functionality is achieved by prepending the flag that enables the compatibility mode to CPPFLAGS instead of appending it, thus allowing the user to override the default behaviour and disable the compatibility mode by putting the negation of the flag in the CPPFLAGS variable in their top-level Makefile.
1 parent 74e1ef0 commit b3c5127

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

Arduino.mk

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1032,11 +1032,17 @@ else
10321032
endif
10331033

10341034
# Using += instead of =, so that CPPFLAGS can be set per sketch level
1035-
CPPFLAGS += -$(MCU_FLAG_NAME)=$(MCU) -DF_CPU=$(F_CPU) -DARDUINO=$(ARDUINO_VERSION) $(ARDUINO_ARCH_FLAG) -D__PROG_TYPES_COMPAT__ \
1035+
CPPFLAGS += -$(MCU_FLAG_NAME)=$(MCU) -DF_CPU=$(F_CPU) -DARDUINO=$(ARDUINO_VERSION) $(ARDUINO_ARCH_FLAG) \
10361036
-I$(ARDUINO_CORE_PATH) -I$(ARDUINO_VAR_PATH)/$(VARIANT) \
10371037
$(SYS_INCLUDES) $(PLATFORM_INCLUDES) $(USER_INCLUDES) -Wall -ffunction-sections \
10381038
-fdata-sections
10391039

1040+
# PROG_TYPES_COMPAT is enabled by default for compatibility with the Arduino IDE.
1041+
# By placing it before the user-provided CPPFLAGS rather than after, we allow the
1042+
# the user to disable it if they like, by adding the negation of the flag
1043+
# (-U__PROG_TYPES_COMPAT__) to the user-provided CPPFLAGS.
1044+
CPPFLAGS := -D__PROG_TYPES_COMPAT__ $(CPPFLAGS)
1045+
10401046
ifdef DEBUG
10411047
OPTIMIZATION_FLAGS= $(DEBUG_FLAGS)
10421048
else

HISTORY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ I tried to give credit whenever possible. If I have missed anyone, kindly add it
1818
- New: Add generation of tags file using ctags, which automatically includes project libs and Arduino core. (https://github.com/tuna-f1sh)
1919
- New: Add template Makefile and project boilerplate initialise script, `ardmk-init`. (https://github.com/tuna-f1sh)
2020
- New: Support atmelice_isp JTAG tool as ISP programmer. (https://github.com/tuna-f1sh)
21+
- New: Compatibility with deprecated pgmspace.h API can now be disabled since it sometimes causes bogus compiler warnings (issue #546)
2122

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

0 commit comments

Comments
 (0)