Эх сурвалжийг харах

Avoid `Arduino.h` when all its features are disabled (fixes #1692)

Paulo Cabral Sanz 4 жил өмнө
parent
commit
ec7ffa20f2

+ 2 - 0
CHANGELOG.md

@@ -21,6 +21,8 @@ HEAD
 * Fix inconsistent pool capacity between `BasicJsonDocument`'s copy and move assignments
 * Fix return type of `StaticJsonDocument::operator=`
 * Avoid pool reallocation in `BasicJsonDocument`'s copy assignment if capacity is the same
+* Avoid including `Arduino.h` when all its features are disabled (issue #1692, PR #1693 by @paulocsanz)
+
 
 v6.18.5 (2021-09-28)
 -------

+ 2 - 0
extras/tests/Helpers/Arduino.h

@@ -7,3 +7,5 @@
 #include "api/Print.h"
 #include "api/Stream.h"
 #include "api/String.h"
+
+#define ARDUINO_H_INCLUDED 1

+ 1 - 0
extras/tests/Misc/CMakeLists.txt

@@ -8,6 +8,7 @@ add_executable(MiscTests
 	deprecated.cpp
 	FloatParts.cpp
 	JsonString.cpp
+	NoArduinoHeader.cpp
 	printable.cpp
 	Readers.cpp
 	StringAdapters.cpp

+ 20 - 0
extras/tests/Misc/NoArduinoHeader.cpp

@@ -0,0 +1,20 @@
+// ArduinoJson - https://arduinojson.org
+// Copyright Benoit Blanchon 2014-2021
+// MIT License
+
+#define ARDUINO 1
+#define ARDUINOJSON_ENABLE_PROGMEM 0
+#define ARDUINOJSON_ENABLE_ARDUINO_STRING 0
+#define ARDUINOJSON_ENABLE_ARDUINO_STREAM 0
+#define ARDUINOJSON_ENABLE_ARDUINO_PRINT 0
+#include <ArduinoJson.h>
+
+#include <catch.hpp>
+
+TEST_CASE("Arduino.h") {
+#ifdef ARDUINO_H_INCLUDED
+  FAIL("Arduino.h should not be included");
+#else
+  INFO("Arduino.h not included");
+#endif
+}

+ 0 - 2
src/ArduinoJson/Configuration.hpp

@@ -116,8 +116,6 @@
 
 #ifdef ARDUINO
 
-#  include <Arduino.h>
-
 // Enable support for Arduino's String class
 #  ifndef ARDUINOJSON_ENABLE_ARDUINO_STRING
 #    define ARDUINOJSON_ENABLE_ARDUINO_STRING 1

+ 2 - 0
src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp

@@ -4,6 +4,8 @@
 
 #pragma once
 
+#include <Arduino.h>
+
 namespace ARDUINOJSON_NAMESPACE {
 
 template <typename TSource>

+ 2 - 0
src/ArduinoJson/Deserialization/Readers/FlashReader.hpp

@@ -4,6 +4,8 @@
 
 #pragma once
 
+#include <Arduino.h>
+
 namespace ARDUINOJSON_NAMESPACE {
 
 template <>

+ 2 - 0
src/ArduinoJson/Polyfills/pgmspace.hpp

@@ -4,6 +4,8 @@
 
 #pragma once
 
+#include <Arduino.h>
+
 #include <ArduinoJson/Configuration.hpp>
 #include <ArduinoJson/Namespace.hpp>
 #include <ArduinoJson/Polyfills/assert.hpp>

+ 1 - 0
src/ArduinoJson/Polyfills/pgmspace_generic.hpp

@@ -5,6 +5,7 @@
 #pragma once
 
 #include <ArduinoJson/Namespace.hpp>
+#include <ArduinoJson/Polyfills/pgmspace.hpp>
 #include <ArduinoJson/Polyfills/type_traits.hpp>
 
 namespace ARDUINOJSON_NAMESPACE {

+ 2 - 0
src/ArduinoJson/Serialization/Writers/PrintWriter.hpp

@@ -4,6 +4,8 @@
 
 #pragma once
 
+#include <Arduino.h>
+
 namespace ARDUINOJSON_NAMESPACE {
 
 template <typename TDestination>