From b3c5127be244ef68f1f895155f3d8999f8800f83 Mon Sep 17 00:00:00 2001 From: Kier Davis Date: Sun, 21 Jan 2018 22:59:17 +0000 Subject: [PATCH] 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. --- Arduino.mk | 8 +++++++- HISTORY.md | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Arduino.mk b/Arduino.mk index 3473166..d245c36 100644 --- a/Arduino.mk +++ b/Arduino.mk @@ -1032,11 +1032,17 @@ else endif # Using += instead of =, so that CPPFLAGS can be set per sketch level -CPPFLAGS += -$(MCU_FLAG_NAME)=$(MCU) -DF_CPU=$(F_CPU) -DARDUINO=$(ARDUINO_VERSION) $(ARDUINO_ARCH_FLAG) -D__PROG_TYPES_COMPAT__ \ +CPPFLAGS += -$(MCU_FLAG_NAME)=$(MCU) -DF_CPU=$(F_CPU) -DARDUINO=$(ARDUINO_VERSION) $(ARDUINO_ARCH_FLAG) \ -I$(ARDUINO_CORE_PATH) -I$(ARDUINO_VAR_PATH)/$(VARIANT) \ $(SYS_INCLUDES) $(PLATFORM_INCLUDES) $(USER_INCLUDES) -Wall -ffunction-sections \ -fdata-sections +# PROG_TYPES_COMPAT is enabled by default for compatibility with the Arduino IDE. +# By placing it before the user-provided CPPFLAGS rather than after, we allow the +# the user to disable it if they like, by adding the negation of the flag +# (-U__PROG_TYPES_COMPAT__) to the user-provided CPPFLAGS. +CPPFLAGS := -D__PROG_TYPES_COMPAT__ $(CPPFLAGS) + ifdef DEBUG OPTIMIZATION_FLAGS= $(DEBUG_FLAGS) else diff --git a/HISTORY.md b/HISTORY.md index a6aa14f..e18a065 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -18,6 +18,7 @@ I tried to give credit whenever possible. If I have missed anyone, kindly add it - New: Add generation of tags file using ctags, which automatically includes project libs and Arduino core. (https://github.com/tuna-f1sh) - New: Add template Makefile and project boilerplate initialise script, `ardmk-init`. (https://github.com/tuna-f1sh) - New: Support atmelice_isp JTAG tool as ISP programmer. (https://github.com/tuna-f1sh) +- New: Compatibility with deprecated pgmspace.h API can now be disabled since it sometimes causes bogus compiler warnings (issue #546) ### 1.6.0 (2017-07-11) - Fix: Allowed for SparkFun's weird usb pid/vid submenu shenanigans (issue #499). (https://github.com/sej7278)