From ee53f7d8134c496552b8df6b69236727d62ec592 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 2 Oct 2018 22:09:41 -0500 Subject: [PATCH] Revert header reorg. --- Marlin/src/HAL/HAL_AVR/endstop_interrupts.h | 4 +- Marlin/src/HAL/HAL_DUE/DebugMonitor_Due.cpp | 4 +- Marlin/src/HAL/HAL_DUE/usb/conf_usb.h | 5 +- Marlin/src/HAL/HAL_LPC1768/spi_pins.h | 2 +- Marlin/src/core/config.h | 113 -------------- Marlin/src/core/macros.h | 164 +++++++++++++------- Marlin/src/core/minmax.h | 71 +++++++++ Marlin/src/feature/twibus.h | 2 +- Marlin/src/inc/MarlinConfig.h | 1 + Marlin/src/inc/MarlinConfigPre.h | 3 +- Marlin/src/inc/Version.h | 2 +- 11 files changed, 190 insertions(+), 181 deletions(-) delete mode 100644 Marlin/src/core/config.h create mode 100644 Marlin/src/core/minmax.h diff --git a/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h b/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h index 490ba0809..13b3f16e3 100644 --- a/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h +++ b/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h @@ -38,9 +38,9 @@ #ifndef _ENDSTOP_INTERRUPTS_H_ #define _ENDSTOP_INTERRUPTS_H_ -#include "../../module/endstops.h" -#include "../../inc/MarlinConfig.h" +#include "../../core/macros.h" #include +#include "../../module/endstops.h" // One ISR for all EXT-Interrupts void endstop_ISR(void) { endstops.update(); } diff --git a/Marlin/src/HAL/HAL_DUE/DebugMonitor_Due.cpp b/Marlin/src/HAL/HAL_DUE/DebugMonitor_Due.cpp index e355cce86..f12f0df7f 100644 --- a/Marlin/src/HAL/HAL_DUE/DebugMonitor_Due.cpp +++ b/Marlin/src/HAL/HAL_DUE/DebugMonitor_Due.cpp @@ -22,13 +22,13 @@ #ifdef ARDUINO_ARCH_SAM +#include "../../core/macros.h" #include "../../core/serial.h" +#include #include "../shared/backtrace/unwinder.h" #include "../shared/backtrace/unwmemaccess.h" -#include - // Debug monitor that dumps to the Programming port all status when // an exception or WDT timeout happens - And then resets the board diff --git a/Marlin/src/HAL/HAL_DUE/usb/conf_usb.h b/Marlin/src/HAL/HAL_DUE/usb/conf_usb.h index 4ee5a8f50..11e9b73b5 100644 --- a/Marlin/src/HAL/HAL_DUE/usb/conf_usb.h +++ b/Marlin/src/HAL/HAL_DUE/usb/conf_usb.h @@ -47,8 +47,9 @@ #ifndef _CONF_USB_H_ #define _CONF_USB_H_ -#include "../../../core/macros.h" /* For ENABLED, DISABLED, MIN, MAX */ -#include "../../../../Configuration.h" /* For SDSUPPORT and CUSTOM_MACHINE_NAME definition - We just need the name, no C++ allowed! */ +#undef UNUSED /* To avoid a macro clash as macros.h already defines it */ +#include "../../../core/macros.h" /* For ENABLED()/DISABLED() */ +#include "../../../../Configuration.h" /* For CUSTOM_MACHINE_NAME definition - We just need the name, no C++ allowed! */ #include "compiler.h" /** diff --git a/Marlin/src/HAL/HAL_LPC1768/spi_pins.h b/Marlin/src/HAL/HAL_LPC1768/spi_pins.h index 2bb3f5310..841a3f845 100644 --- a/Marlin/src/HAL/HAL_LPC1768/spi_pins.h +++ b/Marlin/src/HAL/HAL_LPC1768/spi_pins.h @@ -23,7 +23,7 @@ #ifndef SPI_PINS_LPC1768_H #define SPI_PINS_LPC1768_H -#include "../../inc/MarlinConfigPre.h" +#include "src/core/macros.h" #if ENABLED(SDSUPPORT) && ENABLED(DOGLCD) && (LCD_PINS_D4 == SCK_PIN || LCD_PINS_ENABLE == MOSI_PIN || DOGLCD_SCK == SCK_PIN || DOGLCD_MOSI == MOSI_PIN) #define LPC_SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently diff --git a/Marlin/src/core/config.h b/Marlin/src/core/config.h deleted file mode 100644 index 130942f87..000000000 --- a/Marlin/src/core/config.h +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -#pragma once - -// Macros to make a string from a macro -#define STRINGIFY_(M) #M -#define STRINGIFY(M) STRINGIFY_(M) - -// Macros for bit masks -#undef _BV -#define _BV(n) (1<<(n)) -#define TEST(n,b) !!((n)&_BV(b)) -#define SBI(n,b) (n |= _BV(b)) -#define CBI(n,b) (n &= ~_BV(b)) - -#define _BV32(b) (1UL << (b)) -#define TEST32(n,b) !!((n)&_BV32(b)) -#define SBI32(n,b) (n |= _BV32(b)) -#define CBI32(n,b) (n &= ~_BV32(b)) - -// Macros for maths shortcuts -#undef M_PI -#define M_PI 3.14159265358979323846f - -// Macros to support option testing -#define _CAT(a, ...) a ## __VA_ARGS__ -#define SWITCH_ENABLED_false 0 -#define SWITCH_ENABLED_true 1 -#define SWITCH_ENABLED_0 0 -#define SWITCH_ENABLED_1 1 -#define SWITCH_ENABLED_0x0 0 -#define SWITCH_ENABLED_0x1 1 -#define SWITCH_ENABLED_ 1 -#define ENABLED(b) _CAT(SWITCH_ENABLED_, b) -#define DISABLED(b) !ENABLED(b) - -#define WITHIN(V,L,H) ((V) >= (L) && (V) <= (H)) -#define IS_POWER_OF_2(x) ((x) && !((x) & ((x) - 1))) - -// Macros for initializing arrays -#define ARRAY_6(v1, v2, v3, v4, v5, v6, ...) { v1, v2, v3, v4, v5, v6 } -#define ARRAY_5(v1, v2, v3, v4, v5, ...) { v1, v2, v3, v4, v5 } -#define ARRAY_4(v1, v2, v3, v4, ...) { v1, v2, v3, v4 } -#define ARRAY_3(v1, v2, v3, ...) { v1, v2, v3 } -#define ARRAY_2(v1, v2, ...) { v1, v2 } -#define ARRAY_1(v1, ...) { v1 } -#define _ARRAY_N(N, ...) ARRAY_ ##N(__VA_ARGS__) -#define ARRAY_N(N, ...) _ARRAY_N(N, __VA_ARGS__) - -// Pins -#define PIN_EXISTS(PN) (defined(PN ##_PIN) && PN ##_PIN >= 0) - -// Increment/Decrement helper macros -#define INC_0 1 -#define INC_1 2 -#define INC_2 3 -#define INC_3 4 -#define INC_4 5 -#define INC_5 6 -#define INC_6 7 -#define INC_7 8 -#define INC_8 9 -#define _INCREMENT(n) INC_ ##n -#define INCREMENT(n) _INCREMENT(n) - -#define DEC_1 0 -#define DEC_2 1 -#define DEC_3 2 -#define DEC_4 3 -#define DEC_5 4 -#define DEC_6 5 -#define DEC_7 6 -#define DEC_8 7 -#define DEC_9 8 -#define DECREMENT_(n) DEC_ ##n -#define DECREMENT(n) DECREMENT_(n) - -// Endstop plug identifiers -#define _XMIN_ 100 -#define _YMIN_ 200 -#define _ZMIN_ 300 -#define _XMAX_ 101 -#define _YMAX_ 201 -#define _ZMAX_ 301 - -// GCC properties for HAL headers -#define _FORCE_INLINE_ __attribute__((__always_inline__)) __inline__ -#define FORCE_INLINE __attribute__((always_inline)) inline -#define _UNUSED __attribute__((unused)) -#define _O0 __attribute__((optimize("O0"))) -#define _Os __attribute__((optimize("Os"))) -#define _O1 __attribute__((optimize("O1"))) -#define _O2 __attribute__((optimize("O2"))) -#define _O3 __attribute__((optimize("O3"))) diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h index 815823bd8..df21b0519 100644 --- a/Marlin/src/core/macros.h +++ b/Marlin/src/core/macros.h @@ -19,9 +19,10 @@ * along with this program. If not, see . * */ + #pragma once -#include "config.h" +#include "minmax.h" #define NUM_AXIS 4 #define ABCE 4 @@ -31,6 +32,22 @@ #define _AXIS(A) (A##_AXIS) +#define _XMIN_ 100 +#define _YMIN_ 200 +#define _ZMIN_ 300 +#define _XMAX_ 101 +#define _YMAX_ 201 +#define _ZMAX_ 301 + +#define _FORCE_INLINE_ __attribute__((__always_inline__)) __inline__ +#define FORCE_INLINE __attribute__((always_inline)) inline +#define _UNUSED __attribute__((unused)) +#define _O0 __attribute__((optimize("O0"))) +#define _Os __attribute__((optimize("Os"))) +#define _O1 __attribute__((optimize("O1"))) +#define _O2 __attribute__((optimize("O2"))) +#define _O3 __attribute__((optimize("O3"))) + // Clock speed factors #if !defined(CYCLES_PER_MICROSECOND) && !defined(__STM32F1__) #define CYCLES_PER_MICROSECOND (F_CPU / 1000000L) // 16 or 20 on AVR @@ -40,16 +57,32 @@ #define NANOSECONDS_PER_CYCLE (1000000000.0 / F_CPU) // Remove compiler warning on an unused variable -#undef UNUSED #define UNUSED(x) ((void)(x)) -// Assembly wrappers for code and labels +// Macros to make a string from a macro +#define STRINGIFY_(M) #M +#define STRINGIFY(M) STRINGIFY_(M) + #define A(CODE) " " CODE "\n\t" #define L(CODE) CODE ":\n\t" // Macros for bit masks +#undef _BV +#define _BV(n) (1<<(n)) +#define TEST(n,b) !!((n)&_BV(b)) +#define SBI(n,b) (n |= _BV(b)) +#define CBI(n,b) (n &= ~_BV(b)) #define SET_BIT_TO(N,B,TF) do{ if (TF) SBI(N,B); else CBI(N,B); }while(0) +#define _BV32(b) (1UL << (b)) +#define TEST32(n,b) !!((n)&_BV32(b)) +#define SBI32(n,b) (n |= _BV32(b)) +#define CBI32(n,b) (n &= ~_BV32(b)) + +// Macros for maths shortcuts +#undef M_PI +#define M_PI 3.14159265358979323846f + #define RADIANS(d) ((d)*float(M_PI)/180.0f) #define DEGREES(r) ((r)*180.0f/float(M_PI)) #define HYPOT2(x,y) (sq(x)+sq(y)) @@ -58,45 +91,25 @@ #define CIRCLE_CIRC(R) (2 * float(M_PI) * float(R)) #define SIGN(a) ((a>0)-(a<0)) +#define IS_POWER_OF_2(x) ((x) && !((x) & ((x) - 1))) -// Convenience templates / macros -#undef ABS -#undef MIN -#undef MAX +// Macros to constrain values #ifdef __cplusplus - // Standards-compliant C++11 solutions - - extern "C++" { - - template static inline constexpr const T ABS(const T v) { return v >= 0 ? v : -v; } - - template static inline constexpr void NOLESS(V& v, const N n) { - if (v < n) v = n; - } - template static inline constexpr void NOMORE(V& v, const N n) { - if (v > n) v = n; - } - template static inline constexpr void LIMIT(V& v, const N1 n1, const N2 n2) { - if (v < n1) v = n1; - else if (v > n2) v = n2; - } - - template static inline constexpr auto MIN(const L lhs, const R rhs) -> decltype(lhs + rhs) { - return lhs < rhs ? lhs : rhs; - } - template static inline constexpr auto MAX(const L lhs, const R rhs) -> decltype(lhs + rhs) { - return lhs > rhs ? lhs : rhs; - } - template static inline constexpr const T MIN(T V, Ts... Vs) { return MIN(V, MIN(Vs...)); } - template static inline constexpr const T MAX(T V, Ts... Vs) { return MAX(V, MAX(Vs...)); } - + // C++11 solution that is standards compliant. + template static inline constexpr void NOLESS(V& v, const N n) { + if (v < n) v = n; + } + template static inline constexpr void NOMORE(V& v, const N n) { + if (v > n) v = n; + } + template static inline constexpr void LIMIT(V& v, const N1 n1, const N2 n2) { + if (v < n1) v = n1; + else if (v > n2) v = n2; } #else - #define ABS(a) ({__typeof__(a) _a = (a); _a >= 0 ? _a : -_a;}) - // Using GCC extensions, but Travis GCC version does not like it and gives // "error: statement-expressions are not allowed outside functions nor in template-argument lists" #define NOLESS(v, n) \ @@ -119,30 +132,21 @@ else if (v > _n2) v = _n2; \ } while(0) - // NUM_ARGS(...) evaluates to the number of arguments - #define _NUM_ARGS(X,X6,X5,X4,X3,X2,X1,N,...) N - #define NUM_ARGS(...) _NUM_ARGS(0, __VA_ARGS__ ,6,5,4,3,2,1,0) - - #define MIN_2(a,b) ({__typeof__(a) _a = (a); __typeof__(b) _b = (b); _a < _b ? _a : _b;}) - #define MIN_3(a,...) MIN_2(a,MIN_2(__VA_ARGS__)) - #define MIN_4(a,...) MIN_2(a,MIN_3(__VA_ARGS__)) - #define MIN_5(a,...) MIN_2(a,MIN_4(__VA_ARGS__)) - #define MIN_6(a,...) MIN_2(a,MIN_5(__VA_ARGS__)) - #define __MIN_N(N, ...) MIN_ ## N(__VA_ARGS__) - #define _MIN_N(N, ...) __MIN_N(N, __VA_ARGS__) - #define MIN(...) _MIN_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__) - - #define MAX_2(a,b) ({__typeof__(a) _a = (a); __typeof__(b) _b = (b); _a > _b ? _a : _b;}) - #define MAX_3(a,...) MAX_2(a,MAX_2(__VA_ARGS__)) - #define MAX_4(a,...) MAX_2(a,MAX_3(__VA_ARGS__)) - #define MAX_5(a,...) MAX_2(a,MAX_4(__VA_ARGS__)) - #define MAX_6(a,...) MAX_2(a,MAX_5(__VA_ARGS__)) - #define __MAX_N(N, ...) MAX_ ## N(__VA_ARGS__) - #define _MAX_N(N, ...) __MAX_N(N, __VA_ARGS__) - #define MAX(...) _MAX_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__) - #endif +// Macros to support option testing +#define _CAT(a, ...) a ## __VA_ARGS__ +#define SWITCH_ENABLED_false 0 +#define SWITCH_ENABLED_true 1 +#define SWITCH_ENABLED_0 0 +#define SWITCH_ENABLED_1 1 +#define SWITCH_ENABLED_0x0 0 +#define SWITCH_ENABLED_0x1 1 +#define SWITCH_ENABLED_ 1 +#define ENABLED(b) _CAT(SWITCH_ENABLED_, b) +#define DISABLED(b) !ENABLED(b) + +#define WITHIN(V,L,H) ((V) >= (L) && (V) <= (H)) #define NUMERIC(a) WITHIN(a, '0', '9') #define DECIMAL(a) (NUMERIC(a) || a == '.') #define NUMERIC_SIGNED(a) (NUMERIC(a) || (a) == '-' || (a) == '+') @@ -151,6 +155,45 @@ #define ZERO(a) memset(a,0,sizeof(a)) #define COPY(a,b) memcpy(a,b,MIN(sizeof(a),sizeof(b))) +// Macros for initializing arrays +#define ARRAY_6(v1, v2, v3, v4, v5, v6, ...) { v1, v2, v3, v4, v5, v6 } +#define ARRAY_5(v1, v2, v3, v4, v5, ...) { v1, v2, v3, v4, v5 } +#define ARRAY_4(v1, v2, v3, v4, ...) { v1, v2, v3, v4 } +#define ARRAY_3(v1, v2, v3, ...) { v1, v2, v3 } +#define ARRAY_2(v1, v2, ...) { v1, v2 } +#define ARRAY_1(v1, ...) { v1 } + +#define _ARRAY_N(N, ...) ARRAY_ ##N(__VA_ARGS__) +#define ARRAY_N(N, ...) _ARRAY_N(N, __VA_ARGS__) + +// Macros for adding +#define INC_0 1 +#define INC_1 2 +#define INC_2 3 +#define INC_3 4 +#define INC_4 5 +#define INC_5 6 +#define INC_6 7 +#define INC_7 8 +#define INC_8 9 +#define INCREMENT_(n) INC_ ##n +#define INCREMENT(n) INCREMENT_(n) + +// Macros for subtracting +#define DEC_1 0 +#define DEC_2 1 +#define DEC_3 2 +#define DEC_4 3 +#define DEC_5 4 +#define DEC_6 5 +#define DEC_7 6 +#define DEC_8 7 +#define DEC_9 8 +#define DECREMENT_(n) DEC_ ##n +#define DECREMENT(n) DECREMENT_(n) + +#define PIN_EXISTS(PN) (defined(PN ##_PIN) && PN ##_PIN >= 0) + #define PENDING(NOW,SOON) ((long)(NOW-(SOON))<0) #define ELAPSED(NOW,SOON) (!PENDING(NOW,SOON)) @@ -161,6 +204,13 @@ #define CEILING(x,y) (((x) + (y) - 1) / (y)) +#undef ABS +#ifdef __cplusplus + template static inline constexpr const T ABS(const T v) { return v >= 0 ? v : -v; } +#else + #define ABS(a) ({__typeof__(a) _a = (a); _a >= 0 ? _a : -_a;}) +#endif + #define UNEAR_ZERO(x) ((x) < 0.000001f) #define NEAR_ZERO(x) WITHIN(x, -0.000001f, 0.000001f) #define NEAR(x,y) NEAR_ZERO((x)-(y)) diff --git a/Marlin/src/core/minmax.h b/Marlin/src/core/minmax.h new file mode 100644 index 000000000..0c334fbcd --- /dev/null +++ b/Marlin/src/core/minmax.h @@ -0,0 +1,71 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#undef MIN +#undef MAX + +#ifdef __cplusplus + + #ifndef _MINMAX_H_ + #define _MINMAX_H_ + + extern "C++" { + + // C++11 solution that is standards compliant. Return type is deduced automatically + template static inline constexpr auto MIN(const L lhs, const R rhs) -> decltype(lhs + rhs) { + return lhs < rhs ? lhs : rhs; + } + template static inline constexpr auto MAX(const L lhs, const R rhs) -> decltype(lhs + rhs) { + return lhs > rhs ? lhs : rhs; + } + template static inline constexpr const T MIN(T V, Ts... Vs) { return MIN(V, MIN(Vs...)); } + template static inline constexpr const T MAX(T V, Ts... Vs) { return MAX(V, MAX(Vs...)); } + + } + + #endif + +#else + + // NUM_ARGS(...) evaluates to the number of arguments + #define _NUM_ARGS(X,X6,X5,X4,X3,X2,X1,N,...) N + #define NUM_ARGS(...) _NUM_ARGS(0, __VA_ARGS__ ,6,5,4,3,2,1,0) + + #define MIN_2(a,b) ({__typeof__(a) _a = (a); __typeof__(b) _b = (b); _a < _b ? _a : _b;}) + #define MIN_3(a,...) MIN_2(a,MIN_2(__VA_ARGS__)) + #define MIN_4(a,...) MIN_2(a,MIN_3(__VA_ARGS__)) + #define MIN_5(a,...) MIN_2(a,MIN_4(__VA_ARGS__)) + #define MIN_6(a,...) MIN_2(a,MIN_5(__VA_ARGS__)) + #define __MIN_N(N, ...) MIN_ ## N(__VA_ARGS__) + #define _MIN_N(N, ...) __MIN_N(N, __VA_ARGS__) + #define MIN(...) _MIN_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__) + + #define MAX_2(a,b) ({__typeof__(a) _a = (a); __typeof__(b) _b = (b); _a > _b ? _a : _b;}) + #define MAX_3(a,...) MAX_2(a,MAX_2(__VA_ARGS__)) + #define MAX_4(a,...) MAX_2(a,MAX_3(__VA_ARGS__)) + #define MAX_5(a,...) MAX_2(a,MAX_4(__VA_ARGS__)) + #define MAX_6(a,...) MAX_2(a,MAX_5(__VA_ARGS__)) + #define __MAX_N(N, ...) MAX_ ## N(__VA_ARGS__) + #define _MAX_N(N, ...) __MAX_N(N, __VA_ARGS__) + #define MAX(...) _MAX_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__) + +#endif diff --git a/Marlin/src/feature/twibus.h b/Marlin/src/feature/twibus.h index 78658c19a..7a17e2d53 100644 --- a/Marlin/src/feature/twibus.h +++ b/Marlin/src/feature/twibus.h @@ -23,7 +23,7 @@ #ifndef TWIBUS_H #define TWIBUS_H -#include "../inc/MarlinConfigPre.h" +#include "../core/macros.h" #include diff --git a/Marlin/src/inc/MarlinConfig.h b/Marlin/src/inc/MarlinConfig.h index a5f659580..e5489886d 100644 --- a/Marlin/src/inc/MarlinConfig.h +++ b/Marlin/src/inc/MarlinConfig.h @@ -45,3 +45,4 @@ #include "../core/language.h" #include "../core/utility.h" #include "../core/serial.h" +#include "../core/minmax.h" diff --git a/Marlin/src/inc/MarlinConfigPre.h b/Marlin/src/inc/MarlinConfigPre.h index f2bfd1acc..9751df43e 100644 --- a/Marlin/src/inc/MarlinConfigPre.h +++ b/Marlin/src/inc/MarlinConfigPre.h @@ -27,12 +27,11 @@ #include "../HAL/platforms.h" #include "../core/boards.h" +#include "../core/macros.h" #include "../core/types.h" -#include "../core/config.h" #include "Version.h" #include "../../Configuration.h" #include "Conditionals_LCD.h" #include "../core/drivers.h" #include "../../Configuration_adv.h" #include "Conditionals_adv.h" -#include "../core/macros.h" diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index cf7b0d260..161411774 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -23,7 +23,7 @@ #ifndef _VERSION_H_ #define _VERSION_H_ -#include "../core/config.h" // for ENABLED +#include "../core/macros.h" // for ENABLED /** * This file is the standard Marlin version identifier file.